sig
  type t
  type t_mark = Fct_slice.Marks.t_mark
  type t_pdg = PdgTypes.Pdg.t
  type t_node = PdgTypes.Node.t
  type t_node_key = PdgIndex.Key.t
  type t_to_prop
  val empty : Fct_slice.??.t_pdg -> Fct_slice.T.t_ff_marks
  val empty_to_prop : Fct_slice.??.t_to_prop
  val new_empty_slice : Fct_slice.T.t_fct_info -> Fct_slice.t_fct_slice
  val new_copied_slice : Fct_slice.t_fct_slice -> Fct_slice.t_fct_slice
  val new_empty_fi_marks : Fct_slice.T.t_fct_info -> Fct_slice.??.t
  val fi_marks : Fct_slice.T.t_fct_info -> Fct_slice.??.t option
  val get_fi_node_mark :
    Fct_slice.T.t_fct_info -> Fct_slice.??.t_node_key -> Fct_slice.??.t_mark
  val is_visible_top_input : Fct_slice.T.t_fct_info -> bool
  val new_init_slice :
    Fct_slice.T.t_fct_info -> Fct_slice.T.t_ff_marks -> Fct_slice.t_fct_slice
  val get_ff_marks : Fct_slice.t_fct_slice -> Fct_slice.??.t
  val merge :
    Fct_slice.t_fct_slice -> Fct_slice.t_fct_slice -> Fct_slice.T.t_ff_marks
  val get_node_mark :
    Fct_slice.t_fct_slice -> Fct_slice.??.t_node_key -> Fct_slice.??.t_mark
  val get_node_marks :
    Fct_slice.t_fct_slice ->
    Fct_slice.??.t_node_key -> Fct_slice.??.t_mark list
  val get_sgn : Fct_slice.t_fct_slice -> Fct_slice.Marks.t_sig_marks option
  val get_new_marks :
    Fct_slice.t_fct_slice ->
    Fct_slice.??.t_mark PdgMarks.t_select ->
    Fct_slice.??.t_mark PdgMarks.t_select
  val get_all_input_marks : Fct_slice.??.-> Fct_slice.??.t_to_prop
  val mark_and_propagate :
    Fct_slice.??.->
    ?to_prop:Fct_slice.??.t_to_prop ->
    Fct_slice.??.t_mark PdgMarks.t_select -> Fct_slice.??.t_to_prop
  val mark_spare_nodes :
    Fct_slice.t_fct_slice ->
    Fct_slice.??.t_node list -> Fct_slice.??.t_to_prop
  val mark_spare_call_nodes :
    Fct_slice.t_fct_slice -> Fct_slice.T.t_call_id -> Fct_slice.??.t_to_prop
  val mark_visible_output : Fct_slice.??.-> unit
  val mark_visible_inputs :
    Fct_slice.??.-> Fct_slice.??.t_to_prop -> Fct_slice.??.t_to_prop
  val marks_for_caller_inputs :
    Fct_slice.??.t_pdg ->
    Fct_slice.??.->
    Cil_types.stmt ->
    Fct_slice.??.t_to_prop ->
    Fct_slice.T.t_fct_info -> Fct_slice.??.t_mark PdgMarks.t_select * bool
  val marks_for_call_outputs :
    Fct_slice.??.t_to_prop ->
    (Cil_types.stmt *
     (PdgIndex.Signature.t_out_key * Fct_slice.??.t_mark) list)
    list
  val get_call_output_marks :
    ?spare_info:Fct_slice.CallInfo.t_call_id option ->
    Fct_slice.CallInfo.t ->
    (PdgIndex.Signature.t_out_key * Fct_slice.??.t_mark) list
  val persistant_in_marks_to_prop :
    Fct_slice.T.t_fct_info ->
    Fct_slice.??.t_to_prop -> Fct_slice.??.t_mark PdgMarks.t_pdg_select
  val check_called_marks :
    (PdgIndex.Signature.t_out_key * Fct_slice.??.t_mark) list ->
    Fct_slice.t_fct_slice -> Fct_slice.??.t_mark PdgMarks.t_select * bool
  val fold_calls :
    (Fct_slice.T.t_call_id -> Fct_slice.CallInfo.t -> '-> 'a) ->
    Fct_slice.t_fct_slice -> '-> 'a
  val change_call :
    Fct_slice.T.t_project ->
    Fct_slice.T.t_fct_slice ->
    Fct_slice.T.t_call_id -> Fct_slice.T.t_called_fct option -> unit
  val debug_ff_marks : Format.formatter -> Fct_slice.??.-> unit
  val debug_marked_ff : Format.formatter -> Fct_slice.T.t_fct_slice -> unit
end