functor (M : T_Mark->
  sig
    type tm = M.t
    type t = SlicingMarks.F_SigMarks.tm PdgIndex.Signature.t
    val empty : 'PdgIndex.Signature.t
    val pretty : Format.formatter -> M.t PdgIndex.Signature.t -> unit
    val get_input_mark :
      SlicingMarks.F_SigMarks.t -> int -> SlicingMarks.F_SigMarks.tm
    val get_in_ctrl_mark :
      SlicingMarks.F_SigMarks.t -> SlicingMarks.F_SigMarks.tm
    val get_in_top_mark :
      SlicingMarks.F_SigMarks.t -> SlicingMarks.F_SigMarks.tm
    val get_all_input_marks :
      SlicingMarks.F_SigMarks.t ->
      (PdgIndex.Signature.t_in_key * SlicingMarks.F_SigMarks.tm) list
    exception Visible
    val raise_if_visible : unit -> 'a * M.t -> unit
    val some_visible_out : M.t PdgIndex.Signature.t -> bool
    val is_topin_visible : SlicingMarks.F_SigMarks.t -> bool
    val ctrl_visible : SlicingMarks.F_SigMarks.t -> bool
    val some_visible_in : SlicingMarks.F_SigMarks.t -> bool
    val merge_inputs_m1_mark : M.t PdgIndex.Signature.t -> M.t
    val get_input_loc_under_mark :
      M.t PdgIndex.Signature.t -> Locations.Zone.t -> M.t
    val something_visible : SlicingMarks.F_SigMarks.t -> bool
    val combined_marks : M.t PdgIndex.Signature.t -> M.t
    val add_spare : (int * M.t) list -> int -> (int * M.t) list
    val get_called_marks :
      M.t PdgIndex.Signature.t option -> M.t PdgIndex.Signature.t
    val check_input :
      M.t PdgIndex.Signature.t ->
      (PdgIndex.Signature.t_in_key * M.t) list * bool ->
      PdgIndex.Signature.t_in_key * M.t ->
      (PdgIndex.Signature.t_in_key * M.t) list * bool
    val check_input_marks :
      M.t PdgIndex.Signature.t ->
      (PdgIndex.Signature.t_in_key * M.t) list ->
      (PdgIndex.Signature.t_in_key * M.t) list * bool
    val check_called_input_marks :
      M.t PdgIndex.Signature.t ->
      M.t PdgIndex.Signature.t option ->
      (PdgIndex.Signature.t_in_key * M.t) list * bool
    val get_marked_out_zone :
      SlicingMarks.T.t_pdg_mark PdgIndex.Signature.t ->
      bool * Locations.Zone.t
  end