sig
  type 'a t
  type in_key = private InCtrl | InNum of int | InImpl of Locations.Zone.t
  type out_key = private OutRet | OutLoc of Locations.Zone.t
  type key = private
      In of PdgIndex.Signature.in_key
    | Out of PdgIndex.Signature.out_key
  val empty : 'PdgIndex.Signature.t
  val mk_undef_in_key : Locations.Zone.t -> PdgIndex.Signature.in_key
  val cmp_in_key :
    PdgIndex.Signature.in_key -> PdgIndex.Signature.in_key -> int
  val cmp_out_key :
    PdgIndex.Signature.out_key -> PdgIndex.Signature.out_key -> int
  val equal_out_key :
    PdgIndex.Signature.out_key -> PdgIndex.Signature.out_key -> bool
  val find_info : 'PdgIndex.Signature.t -> PdgIndex.Signature.key -> 'a
  val find_input : 'PdgIndex.Signature.t -> int -> 'a
  val find_in_ctrl : 'info PdgIndex.Signature.t -> 'info
  val find_in_top : 'info PdgIndex.Signature.t -> 'info
  val find_in_info :
    'info PdgIndex.Signature.t -> PdgIndex.Signature.in_key -> 'info
  val find_out_ret : 'PdgIndex.Signature.t -> 'a
  val find_out_info :
    'info PdgIndex.Signature.t -> PdgIndex.Signature.out_key -> 'info
  val fold :
    ('-> PdgIndex.Signature.key * '-> 'a) ->
    '-> 'PdgIndex.Signature.t -> 'a
  val fold_num_inputs :
    ('-> int * '-> 'a) -> '-> 'PdgIndex.Signature.t -> 'a
  val fold_impl_inputs :
    ('-> Locations.Zone.t * '-> 'a) ->
    '-> 'PdgIndex.Signature.t -> 'a
  val fold_matching_impl_inputs :
    Locations.Zone.t ->
    ('-> Locations.Zone.t * '-> 'a) ->
    '-> 'PdgIndex.Signature.t -> 'a
  val fold_all_inputs :
    ('-> PdgIndex.Signature.in_key * '-> 'a) ->
    '-> 'PdgIndex.Signature.t -> 'a
  val fold_all_outputs :
    ('-> PdgIndex.Signature.out_key * '-> 'a) ->
    '-> 'PdgIndex.Signature.t -> 'a
  val pretty :
    (Format.formatter -> '-> unit) ->
    Format.formatter -> 'PdgIndex.Signature.t -> unit
  val pretty_key : Format.formatter -> PdgIndex.Signature.key -> unit
  val pretty_in_key : Format.formatter -> PdgIndex.Signature.in_key -> unit
  val pretty_out_key : Format.formatter -> PdgIndex.Signature.out_key -> unit
end