sig
  type t = SlicingTypes.sl_select
  val dyn_t : SlicingTypes.Sl_select.t Type.t
  type set = SlicingCmds.set
  module S :
    sig
      type t = SlicingTypes.Fct_user_crit.t Cil_datatype.Varinfo.Map.t
      val ty : t Type.t
      val name : string
      val descr : t Descr.t
      val packed_descr : Structural_descr.pack
      val reprs : t list
      val equal : t -> t -> bool
      val compare : t -> t -> int
      val hash : t -> int
      val pretty_code : Format.formatter -> t -> unit
      val internal_pretty_code :
        Type.precedence -> Format.formatter -> t -> unit
      val pretty : Format.formatter -> t -> unit
      val varname : t -> string
      val mem_project : (Project_skeleton.t -> bool) -> t -> bool
      val copy : t -> t
    end
  val dyn_set : Api.Select.S.t Type.t
  val empty_selects : Api.Select.S.t
  val select_stmt :
    Api.Select.S.t ->
    spare:bool -> Cil_datatype.Stmt.t -> Kernel_function.t -> Api.Select.S.t
  val select_stmt_ctrl :
    Api.Select.S.t ->
    spare:bool -> Cil_datatype.Stmt.t -> Kernel_function.t -> Api.Select.S.t
  val select_stmt_lval_rw :
    Api.Select.S.t ->
    SlicingTypes.Sl_mark.t ->
    rd:Datatype.String.Set.t ->
    wr:Datatype.String.Set.t ->
    Cil_datatype.Stmt.t ->
    eval:Cil_datatype.Stmt.t -> Kernel_function.t -> Api.Select.S.t
  val select_stmt_lval :
    Api.Select.S.t ->
    SlicingTypes.Sl_mark.t ->
    Datatype.String.Set.t ->
    before:bool ->
    Cil_datatype.Stmt.t ->
    eval:Cil_datatype.Stmt.t -> Kernel_function.t -> Api.Select.S.t
  val select_stmt_annots :
    Api.Select.S.t ->
    SlicingTypes.Sl_mark.t ->
    spare:bool ->
    threat:bool ->
    user_assert:bool ->
    slicing_pragma:bool ->
    loop_inv:bool ->
    loop_var:bool ->
    Cil_datatype.Stmt.t -> Kernel_function.t -> Api.Select.S.t
  val select_func_lval :
    Api.Select.S.t ->
    SlicingTypes.Sl_mark.t ->
    Datatype.String.Set.t -> Kernel_function.t -> Api.Select.S.t
  val select_func_lval_rw :
    Api.Select.S.t ->
    SlicingTypes.Sl_mark.t ->
    rd:Datatype.String.Set.t ->
    wr:Datatype.String.Set.t ->
    eval:Cil_datatype.Stmt.t -> Kernel_function.t -> Api.Select.S.t
  val select_func_return :
    Api.Select.S.t -> spare:bool -> Kernel_function.t -> Api.Select.S.t
  val select_func_calls_to :
    Api.Select.S.t -> spare:bool -> Kernel_function.t -> Api.Select.S.t
  val select_func_calls_into :
    Api.Select.S.t -> spare:bool -> Kernel_function.t -> Api.Select.S.t
  val select_func_annots :
    Api.Select.S.t ->
    SlicingTypes.Sl_mark.t ->
    spare:bool ->
    threat:bool ->
    user_assert:bool ->
    slicing_pragma:bool ->
    loop_inv:bool -> loop_var:bool -> Kernel_function.t -> Api.Select.S.t
  val select_func_zone :
    SlicingCmds.set ->
    SlicingTypes.sl_mark ->
    Locations.Zone.t -> Cil_types.kernel_function -> SlicingCmds.set
  val select_stmt_term :
    SlicingCmds.set ->
    SlicingTypes.sl_mark ->
    Cil_types.term ->
    Cil_types.stmt -> Cil_types.kernel_function -> SlicingCmds.set
  val select_stmt_pred :
    SlicingCmds.set ->
    SlicingTypes.sl_mark ->
    Cil_types.predicate ->
    Cil_types.stmt -> Cil_types.kernel_function -> SlicingCmds.set
  val select_stmt_annot :
    SlicingCmds.set ->
    SlicingTypes.sl_mark ->
    spare:bool ->
    Cil_types.code_annotation ->
    Cil_types.stmt -> Cil_types.kernel_function -> SlicingCmds.set
  val select_stmt_zone :
    SlicingCmds.set ->
    SlicingTypes.sl_mark ->
    Locations.Zone.t ->
    before:bool ->
    Cil_types.stmt -> Cil_types.kernel_function -> SlicingCmds.set
  val select_pdg_nodes :
    SlicingCmds.set ->
    SlicingTypes.sl_mark ->
    PdgTypes.Node.t list -> Cil_types.kernel_function -> SlicingCmds.set
  val get_function : SlicingTypes.sl_select -> Cil_types.kernel_function
  val merge_internal :
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val add_to_selects_internal :
    Cil_datatype.Varinfo.Map.key * SlicingInternals.fct_user_crit ->
    SlicingInternals.fct_user_crit Cil_datatype.Varinfo.Map.t ->
    SlicingInternals.fct_user_crit Cil_datatype.Varinfo.Map.t
  val iter_selects_internal :
    (Cil_datatype.Varinfo.Map.key * '-> unit) ->
    'Cil_datatype.Varinfo.Map.t -> unit
  val fold_selects_internal :
    ('-> Cil_datatype.Varinfo.Map.key * '-> 'a) ->
    '-> 'Cil_datatype.Varinfo.Map.t -> 'a
  val select_stmt_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    Cil_types.stmt ->
    SlicingTypes.sl_mark ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val select_label_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    Cil_types.logic_label ->
    SlicingTypes.sl_mark ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val select_min_call_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    Cil_types.stmt ->
    SlicingTypes.sl_mark ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val select_stmt_zone_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    Cil_types.stmt ->
    before:bool ->
    Locations.Zone.t ->
    SlicingTypes.sl_mark ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val select_zone_at_entry_point_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    Locations.Zone.t ->
    SlicingTypes.sl_mark ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val select_zone_at_end_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    Locations.Zone.t ->
    SlicingTypes.sl_mark ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val select_modified_output_zone_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    Locations.Zone.t ->
    SlicingTypes.sl_mark ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val select_stmt_ctrl_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    Cil_types.stmt -> Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val select_entry_point_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    SlicingTypes.sl_mark ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val select_return_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    SlicingTypes.sl_mark ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val select_decl_var_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    Cil_types.varinfo ->
    SlicingTypes.sl_mark ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val select_pdg_nodes_internal :
    Kernel_function.t ->
    ?select:Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit ->
    PdgTypes.Node.t list ->
    SlicingTypes.sl_mark ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit
  val pretty :
    Format.formatter ->
    Cil_datatype.Varinfo.t * SlicingInternals.fct_user_crit -> unit
end