sig
  exception Bottom
  exception Top
  exception NotFound
  type t = PdgTypes.Pdg.t
  type t_node = PdgTypes.Node.t
  type t_node_key = PdgIndex.Key.t
  type t_nodes_and_undef =
      (Db.Pdg.t_node * Locations.Zone.t option) list *
      Locations.Zone.t option
  val self : State.t Pervasives.ref
  val get : (Db_types.kernel_function -> Db.Pdg.t) Pervasives.ref
  val node_key : (Db.Pdg.t_node -> Db.Pdg.t_node_key) Pervasives.ref
  val from_same_fun : Db.Pdg.t -> Db.Pdg.t -> bool
  val find_decl_var_node :
    (Db.Pdg.t -> Cil_types.varinfo -> Db.Pdg.t_node) Pervasives.ref
  val find_ret_output_node : (Db.Pdg.t -> Db.Pdg.t_node) Pervasives.ref
  val find_output_nodes :
    (Db.Pdg.t -> PdgIndex.Signature.t_out_key -> Db.Pdg.t_nodes_and_undef)
    Pervasives.ref
  val find_input_node : (Db.Pdg.t -> int -> Db.Pdg.t_node) Pervasives.ref
  val find_all_inputs_nodes : (Db.Pdg.t -> Db.Pdg.t_node list) Pervasives.ref
  val find_stmt_node :
    (Db.Pdg.t -> Cil_types.stmt -> Db.Pdg.t_node) Pervasives.ref
  val find_simple_stmt_nodes :
    (Db.Pdg.t -> Cil_types.stmt -> Db.Pdg.t_node list) Pervasives.ref
  val find_stmt_and_blocks_nodes :
    (Db.Pdg.t -> Cil_types.stmt -> Db.Pdg.t_node list) Pervasives.ref
  val find_top_input_node : (Db.Pdg.t -> Db.Pdg.t_node) Pervasives.ref
  val find_entry_point_node : (Db.Pdg.t -> Db.Pdg.t_node) Pervasives.ref
  val find_location_nodes_at_stmt :
    (Db.Pdg.t ->
     Cil_types.stmt ->
     before:bool -> Locations.Zone.t -> Db.Pdg.t_nodes_and_undef)
    Pervasives.ref
  val find_location_nodes_at_end :
    (Db.Pdg.t -> Locations.Zone.t -> Db.Pdg.t_nodes_and_undef) Pervasives.ref
  val find_location_nodes_at_begin :
    (Db.Pdg.t -> Locations.Zone.t -> Db.Pdg.t_nodes_and_undef) Pervasives.ref
  val find_call_stmts :
    (Db_types.kernel_function ->
     caller:Db_types.kernel_function -> Cil_types.stmt list)
    Pervasives.ref
  val find_call_ctrl_node :
    (Db.Pdg.t -> Cil_types.stmt -> Db.Pdg.t_node) Pervasives.ref
  val find_call_input_node :
    (Db.Pdg.t -> Cil_types.stmt -> int -> Db.Pdg.t_node) Pervasives.ref
  val find_call_output_node :
    (Db.Pdg.t -> Cil_types.stmt -> Db.Pdg.t_node) Pervasives.ref
  val find_code_annot_nodes :
    (Db.Pdg.t ->
     before:bool ->
     Cil_types.stmt ->
     Cil_types.code_annotation ->
     Db.Pdg.t_node list * Db.Pdg.t_node list *
     Db.Pdg.t_nodes_and_undef option)
    Pervasives.ref
  val find_fun_precond_nodes :
    (Db.Pdg.t ->
     Cil_types.predicate ->
     Db.Pdg.t_node list * Db.Pdg.t_nodes_and_undef option)
    Pervasives.ref
  val find_fun_postcond_nodes :
    (Db.Pdg.t ->
     Cil_types.predicate ->
     Db.Pdg.t_node list * Db.Pdg.t_nodes_and_undef option)
    Pervasives.ref
  val find_fun_variant_nodes :
    (Db.Pdg.t ->
     Cil_types.term -> Db.Pdg.t_node list * Db.Pdg.t_nodes_and_undef option)
    Pervasives.ref
  val find_call_out_nodes_to_select :
    (Db.Pdg.t ->
     Db.Pdg.t_node list -> Db.Pdg.t -> Cil_types.stmt -> Db.Pdg.t_node list)
    Pervasives.ref
  val find_in_nodes_to_select_for_this_call :
    (Db.Pdg.t ->
     Db.Pdg.t_node list -> Cil_types.stmt -> Db.Pdg.t -> Db.Pdg.t_node list)
    Pervasives.ref
  val direct_dpds :
    (Db.Pdg.t -> Db.Pdg.t_node -> Db.Pdg.t_node list) Pervasives.ref
  val direct_ctrl_dpds :
    (Db.Pdg.t -> Db.Pdg.t_node -> Db.Pdg.t_node list) Pervasives.ref
  val direct_data_dpds :
    (Db.Pdg.t -> Db.Pdg.t_node -> Db.Pdg.t_node list) Pervasives.ref
  val direct_addr_dpds :
    (Db.Pdg.t -> Db.Pdg.t_node -> Db.Pdg.t_node list) Pervasives.ref
  val all_dpds :
    (Db.Pdg.t -> Db.Pdg.t_node list -> Db.Pdg.t_node list) Pervasives.ref
  val all_data_dpds :
    (Db.Pdg.t -> Db.Pdg.t_node list -> Db.Pdg.t_node list) Pervasives.ref
  val all_ctrl_dpds :
    (Db.Pdg.t -> Db.Pdg.t_node list -> Db.Pdg.t_node list) Pervasives.ref
  val all_addr_dpds :
    (Db.Pdg.t -> Db.Pdg.t_node list -> Db.Pdg.t_node list) Pervasives.ref
  val direct_uses :
    (Db.Pdg.t -> Db.Pdg.t_node -> Db.Pdg.t_node list) Pervasives.ref
  val direct_ctrl_uses :
    (Db.Pdg.t -> Db.Pdg.t_node -> Db.Pdg.t_node list) Pervasives.ref
  val direct_data_uses :
    (Db.Pdg.t -> Db.Pdg.t_node -> Db.Pdg.t_node list) Pervasives.ref
  val direct_addr_uses :
    (Db.Pdg.t -> Db.Pdg.t_node -> Db.Pdg.t_node list) Pervasives.ref
  val all_uses :
    (Db.Pdg.t -> Db.Pdg.t_node list -> Db.Pdg.t_node list) Pervasives.ref
  val custom_related_nodes :
    ((Db.Pdg.t_node -> Db.Pdg.t_node list) ->
     Db.Pdg.t_node list -> Db.Pdg.t_node list)
    Pervasives.ref
  val iter_nodes :
    ((Db.Pdg.t_node -> unit) -> Db.Pdg.t -> unit) Pervasives.ref
  val extract : (Db.Pdg.t -> string -> unit) Pervasives.ref
  val pretty_node :
    (bool -> Format.formatter -> Db.Pdg.t_node -> unit) Pervasives.ref
  val pretty_key :
    (Format.formatter -> Db.Pdg.t_node_key -> unit) Pervasives.ref
  val pretty :
    (?bw:bool -> Format.formatter -> Db.Pdg.t -> unit) Pervasives.ref
  module F_FctMarks :
    functor (M : PdgMarks.T_Mark->
      sig
        type t_mark = M.t
        type t_call_info = M.t_call_info
        type t_idx = (t_mark, t_call_info) PdgIndex.FctIndex.t
        type t = PdgTypes.Pdg.t * t_idx
        val create : PdgTypes.Pdg.t -> t
        val get_idx : t -> t_idx
        type t_mark_info_inter = t_mark PdgMarks.t_info_inter
        val empty_to_prop : t_mark_info_inter
        val mark_and_propagate :
          t ->
          ?to_prop:t_mark_info_inter ->
          t_mark PdgMarks.t_select -> t_mark_info_inter
      end
end