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