sig
  type t = Db_types.kernel_function
  val compare : Kernel_function.t -> Kernel_function.t -> int
  val equal : Kernel_function.t -> Kernel_function.t -> bool
  val hash : Kernel_function.t -> int
  module Datatype :
    sig
      type t = Db_types.kernel_function
      val rehash : t -> t
      val descr : Unmarshal.t
      val copy : t -> t
      val name : string
      val register_comparable :
        ?compare:(t -> t -> int) ->
        ?equal:(t -> t -> bool) ->
        ?hash:(t -> int) -> ?physical_hash:(t -> int) -> unit -> unit
      val is_comparable_set : unit -> bool
      val hash : t -> int
      val physical_hash : t -> int
      val equal : t -> t -> bool
      val compare : t -> t -> int
      val contain_project : (Project.project -> t -> bool) option ref
    end
  val find_from_sid : int -> Cil_types.stmt * Kernel_function.t
  exception No_Statement
  val find_first_stmt : Kernel_function.t -> Cil_types.stmt
  val find_return : Kernel_function.t -> Cil_types.stmt
  val find_label :
    Kernel_function.t -> string -> Cil_types.stmt Pervasives.ref
  val find_enclosing_block : Cil_types.stmt -> Cil_types.block
  val find_all_enclosing_blocks : Cil_types.stmt -> Cil_types.block list
  val blocks_closed_by_edge :
    Cil_types.stmt -> Cil_types.stmt -> Cil_types.block list
  val is_definition : Kernel_function.t -> bool
  val returns_void : Kernel_function.t -> bool
  val dummy : unit -> Kernel_function.t
  val get_vi : Kernel_function.t -> Cil_types.varinfo
  val get_id : Kernel_function.t -> int
  val get_name : Kernel_function.t -> string
  val get_type : Kernel_function.t -> Cil_types.typ
  val get_return_type : Kernel_function.t -> Cil_types.typ
  val get_location : Kernel_function.t -> Cil_types.location
  val get_global : Kernel_function.t -> Cil_types.global
  val get_formals : Kernel_function.t -> Cil_types.varinfo list
  val get_locals : Kernel_function.t -> Cil_types.varinfo list
  exception No_Definition
  val get_definition : Kernel_function.t -> Cil_types.fundec
  val is_formal : Cil_types.varinfo -> Kernel_function.t -> bool
  val is_local : Cil_types.varinfo -> Kernel_function.t -> bool
  val is_formal_or_local : Cil_types.varinfo -> Kernel_function.t -> bool
  val get_spec : Kernel_function.t -> Cil_types.funspec
  val postcondition :
    Kernel_function.t -> Cil_types.predicate Cil_types.named
  val precondition : Kernel_function.t -> Cil_types.predicate Cil_types.named
  val populate_spec : (Kernel_function.t -> unit) Pervasives.ref
  module Make_Table :
    functor (Data : Project.Datatype.S->
      functor (Info : Signature.NAME_SIZE_DPDS->
        sig
          val self : Project.Computation.t
          val select :
            Kind.how ->
            Project.Computation.selection -> Project.Computation.selection
          val depend : Project.Computation.t -> unit
          val mark_as_computed : ?project:Project.project -> unit -> unit
          val is_computed : ?project:Project.project -> unit -> bool
          val do_not_save : unit -> unit
          module Datatype : Project.Datatype.S
          val name : string
          type key = t
          type data = Data.t
          val replace : key -> data -> unit
          val add : key -> data -> unit
          val clear : unit -> unit
          val length : unit -> int
          val iter : (key -> data -> unit) -> unit
          val fold : (key -> data -> '-> 'a) -> '-> 'a
          val memo : ?change:(data -> data) -> (key -> data) -> key -> data
          val find : key -> data
          val find_all : key -> data list
          val unsafe_find : key -> data
          val mem : key -> bool
          val remove : key -> unit
        end
  module Set :
    sig
      type elt = t
      type t
      val empty : t
      val is_empty : t -> bool
      val mem : elt -> t -> bool
      val add : elt -> t -> t
      val singleton : elt -> t
      val remove : elt -> t -> t
      val union : t -> t -> t
      val inter : t -> t -> t
      val diff : t -> t -> t
      val compare : t -> t -> int
      val equal : t -> t -> bool
      val subset : t -> t -> bool
      val iter : (elt -> unit) -> t -> unit
      val fold : (elt -> '-> 'a) -> t -> '-> 'a
      val for_all : (elt -> bool) -> t -> bool
      val exists : (elt -> bool) -> t -> bool
      val filter : (elt -> bool) -> t -> t
      val partition : (elt -> bool) -> t -> t * t
      val cardinal : t -> int
      val elements : t -> elt list
      val min_elt : t -> elt
      val max_elt : t -> elt
      val choose : t -> elt
      val split : elt -> t -> t * bool * t
      module Datatype :
        sig
          type t = t
          val rehash : t -> t
          val descr : Unmarshal.t
          val copy : t -> t
          val name : string
          val register_comparable :
            ?compare:(t -> t -> int) ->
            ?equal:(t -> t -> bool) ->
            ?hash:(t -> int) -> ?physical_hash:(t -> int) -> unit -> unit
          val is_comparable_set : unit -> bool
          val hash : t -> int
          val physical_hash : t -> int
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val contain_project : (Project.project -> t -> bool) option ref
        end
      val pretty : Format.formatter -> Kernel_function.t -> unit
    end
  module Queue :
    sig
      module Datatype :
        sig
          type t = Db_types.kernel_function Queue.t
          val rehash : t -> t
          val descr : Unmarshal.t
          val copy : t -> t
          val name : string
          val register_comparable :
            ?compare:(t -> t -> int) ->
            ?equal:(t -> t -> bool) ->
            ?hash:(t -> int) -> ?physical_hash:(t -> int) -> unit -> unit
          val is_comparable_set : unit -> bool
          val hash : t -> int
          val physical_hash : t -> int
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val contain_project : (Project.project -> t -> bool) option ref
        end
    end
  val register_stmt :
    Kernel_function.t -> Cil_types.stmt -> Cil_types.block list -> unit
  val pretty_name : Format.formatter -> Kernel_function.t -> unit
end