sig   exception AddError   exception CallStatement   exception Not_equal   module Signature :     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   module Key :     sig       type key = private           SigKey of PdgIndex.Signature.key         | VarDecl of Cil_types.varinfo         | Stmt of Cil_types.stmt         | CallStmt of Cil_types.stmt         | Label of Cil_types.stmt * Cil_types.label         | SigCallKey of Cil_types.stmt * PdgIndex.Signature.key       type t = key       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       val param_key : int -> t       val implicit_in_key : Locations.Zone.t -> t       val entry_point : t       val top_input : t       val output_key : t       val out_from_key : Locations.Zone.t -> t       val decl_var_key : Cil_types.varinfo -> t       val label_key : Cil_types.stmt -> Cil_types.label -> t       val stmt_key : Cil_types.stmt -> t       val call_key : Cil_types.stmt -> t       val call_input_key : Cil_types.stmt -> int -> t       val call_output_key : Cil_types.stmt -> Locations.Zone.t -> t       val call_outret_key : Cil_types.stmt -> t       val call_ctrl_key : Cil_types.stmt -> t       val call_topin_key : Cil_types.stmt -> t       val stmt : t -> Cil_types.stmt option       val call_from_id : Cil_types.stmt -> Cil_types.stmt     end   module FctIndex :     sig       type ('ni, 'ci) t       val create : int -> ('ni, 'ci) PdgIndex.FctIndex.t       val length : ('ni, 'ci) PdgIndex.FctIndex.t -> int       val copy :         ('ni, 'ci) PdgIndex.FctIndex.t -> ('ni, 'ci) PdgIndex.FctIndex.t       val merge :         ('ni, 'ci) PdgIndex.FctIndex.t ->         ('ni, 'ci) PdgIndex.FctIndex.t ->         ('ni -> 'ni -> 'ni) ->         ('ci -> 'ci -> 'ci) -> ('ni, 'ci) PdgIndex.FctIndex.t       val sgn : ('ni, 'ci) PdgIndex.FctIndex.t -> 'ni PdgIndex.Signature.t       val find_info : ('ni, 'ci) PdgIndex.FctIndex.t -> PdgIndex.Key.t -> 'ni       val find_all :         ('ni, 'ci) PdgIndex.FctIndex.t -> PdgIndex.Key.t -> 'ni list       val find_label :         ('ni, 'ci) PdgIndex.FctIndex.t -> Cil_types.label -> 'ni       val find_call :         ('ni, 'ci) PdgIndex.FctIndex.t ->         Cil_types.stmt -> 'ci option * 'ni PdgIndex.Signature.t       val find_call_key :         ('ni, 'ci) PdgIndex.FctIndex.t ->         PdgIndex.Key.t -> 'ci option * 'ni PdgIndex.Signature.t       val find_info_call :         ('ni, 'ci) PdgIndex.FctIndex.t -> Cil_types.stmt -> 'ci       val find_info_call_key :         ('ni, 'ci) PdgIndex.FctIndex.t -> PdgIndex.Key.t -> 'ci       val fold_calls :         (Cil_types.stmt -> 'ci option * 'ni PdgIndex.Signature.t -> '-> 'c) ->         ('ni, 'ci) PdgIndex.FctIndex.t -> '-> 'c       val fold :         (PdgIndex.Key.key -> 'ni -> '-> 'a) ->         ('ni, 'ci) PdgIndex.FctIndex.t -> '-> 'a       val add :         ('ni, 'ci) PdgIndex.FctIndex.t -> PdgIndex.Key.t -> 'ni -> unit       val add_or_replace :         ('ni, 'ci) PdgIndex.FctIndex.t -> PdgIndex.Key.t -> 'ni -> unit       val add_info_call :         ('ni, 'ci) PdgIndex.FctIndex.t ->         Cil_types.stmt -> 'ci -> replace:bool -> unit       val add_info_call_key :         ('ni, 'ci) PdgIndex.FctIndex.t ->         PdgIndex.Key.t -> 'ci -> replace:bool -> unit       val t_descr :         ni:Structural_descr.t -> ci:Structural_descr.t -> Structural_descr.t     end end