sig
  val specialize_state_on_call :
    ?stmt:Cil_types.stmt -> Cil_types.kernel_function -> Db.Value.state
  class virtual ['a] cumulative_visitor :
    object
      method behavior : Cil.visitor_behavior
      method virtual compute_kf : Cil_types.kernel_function -> 'a
      method current_func : Cil_types.fundec option
      method current_kf : Cil_types.kernel_function option
      method current_kinstr : Cil_types.kinstr
      method current_stmt : Cil_types.stmt option
      method fill_global_tables : unit
      method frama_c_plain_copy : Visitor.frama_c_visitor
      method get_filling_actions : (unit -> unit) Queue.t
      method plain_copy_visitor : Cil.cilVisitor
      method pop_stmt : Cil_types.stmt -> unit
      method project : Project.t option
      method push_stmt : Cil_types.stmt -> unit
      method queueInstr : Cil_types.instr list -> unit
      method reset_current_func : unit -> unit
      method reset_current_kf : unit -> unit
      method set_current_func : Cil_types.fundec -> unit
      method set_current_kf : Cil_types.kernel_function -> unit
      method specialize_state_on_call :
        Cil_types.kernel_function -> Db.Value.state
      method unqueueInstr : unit -> Cil_types.instr list
      method vallocates :
        Cil_types.identified_term list ->
        Cil_types.identified_term list Cil.visitAction
      method vallocation :
        Cil_types.identified_term Cil_types.allocation ->
        Cil_types.identified_term Cil_types.allocation Cil.visitAction
      method vannotation :
        Cil_types.global_annotation ->
        Cil_types.global_annotation Cil.visitAction
      method vassigns :
        Cil_types.identified_term Cil_types.assigns ->
        Cil_types.identified_term Cil_types.assigns Cil.visitAction
      method vattr :
        Cil_types.attribute -> Cil_types.attribute list Cil.visitAction
      method vattrparam :
        Cil_types.attrparam -> Cil_types.attrparam Cil.visitAction
      method vbehavior :
        Cil_types.funbehavior -> Cil_types.funbehavior Cil.visitAction
      method vblock : Cil_types.block -> Cil_types.block Cil.visitAction
      method vcode_annot :
        Cil_types.code_annotation ->
        Cil_types.code_annotation Cil.visitAction
      method vcompinfo :
        Cil_types.compinfo -> Cil_types.compinfo Cil.visitAction
      method vdeps :
        Cil_types.identified_term Cil_types.deps ->
        Cil_types.identified_term Cil_types.deps Cil.visitAction
      method venuminfo :
        Cil_types.enuminfo -> Cil_types.enuminfo Cil.visitAction
      method venumitem :
        Cil_types.enumitem -> Cil_types.enumitem Cil.visitAction
      method vexpr : Cil_types.exp -> Cil_types.exp Cil.visitAction
      method vfieldinfo :
        Cil_types.fieldinfo -> Cil_types.fieldinfo Cil.visitAction
      method vfile : Cil_types.file -> Cil_types.file Cil.visitAction
      method vfrees :
        Cil_types.identified_term list ->
        Cil_types.identified_term list Cil.visitAction
      method vfrom :
        Cil_types.identified_term Cil_types.from ->
        Cil_types.identified_term Cil_types.from Cil.visitAction
      method vfunc : Cil_types.fundec -> Cil_types.fundec Cil.visitAction
      method vglob :
        Cil_types.global -> Cil_types.global list Cil.visitAction
      method vglob_aux :
        Cil_types.global -> Cil_types.global list Cil.visitAction
      method videntified_predicate :
        Cil_types.identified_predicate ->
        Cil_types.identified_predicate Cil.visitAction
      method videntified_term :
        Cil_types.identified_term ->
        Cil_types.identified_term Cil.visitAction
      method vimpact_pragma :
        Cil_types.term Cil_types.impact_pragma ->
        Cil_types.term Cil_types.impact_pragma Cil.visitAction
      method vinit :
        Cil_types.varinfo ->
        Cil_types.offset -> Cil_types.init -> Cil_types.init Cil.visitAction
      method vinitoffs : Cil_types.offset -> Cil_types.offset Cil.visitAction
      method vinst : Cil_types.instr -> Cil_types.instr list Cil.visitAction
      method vlogic_ctor_info_decl :
        Cil_types.logic_ctor_info ->
        Cil_types.logic_ctor_info Cil.visitAction
      method vlogic_ctor_info_use :
        Cil_types.logic_ctor_info ->
        Cil_types.logic_ctor_info Cil.visitAction
      method vlogic_info_decl :
        Cil_types.logic_info -> Cil_types.logic_info Cil.visitAction
      method vlogic_info_use :
        Cil_types.logic_info -> Cil_types.logic_info Cil.visitAction
      method vlogic_label :
        Cil_types.logic_label -> Cil_types.logic_label Cil.visitAction
      method vlogic_type :
        Cil_types.logic_type -> Cil_types.logic_type Cil.visitAction
      method vlogic_type_def :
        Cil_types.logic_type_def -> Cil_types.logic_type_def Cil.visitAction
      method vlogic_type_info_decl :
        Cil_types.logic_type_info ->
        Cil_types.logic_type_info Cil.visitAction
      method vlogic_type_info_use :
        Cil_types.logic_type_info ->
        Cil_types.logic_type_info Cil.visitAction
      method vlogic_var_decl :
        Cil_types.logic_var -> Cil_types.logic_var Cil.visitAction
      method vlogic_var_use :
        Cil_types.logic_var -> Cil_types.logic_var Cil.visitAction
      method vloop_pragma :
        Cil_types.term Cil_types.loop_pragma ->
        Cil_types.term Cil_types.loop_pragma Cil.visitAction
      method vlval : Cil_types.lval -> Cil_types.lval Cil.visitAction
      method vmodel_info :
        Cil_types.model_info -> Cil_types.model_info Cil.visitAction
      method voffs : Cil_types.offset -> Cil_types.offset Cil.visitAction
      method vpredicate :
        Cil_types.predicate -> Cil_types.predicate Cil.visitAction
      method vpredicate_named :
        Cil_types.predicate Cil_types.named ->
        Cil_types.predicate Cil_types.named Cil.visitAction
      method vquantifiers :
        Cil_types.quantifiers -> Cil_types.quantifiers Cil.visitAction
      method vslice_pragma :
        Cil_types.term Cil_types.slice_pragma ->
        Cil_types.term Cil_types.slice_pragma Cil.visitAction
      method vspec : Cil_types.funspec -> Cil_types.funspec Cil.visitAction
      method vstmt : Cil_types.stmt -> Cil_types.stmt Cil.visitAction
      method vstmt_aux : Cil_types.stmt -> Cil_types.stmt Cil.visitAction
      method vterm : Cil_types.term -> Cil_types.term Cil.visitAction
      method vterm_lhost :
        Cil_types.term_lhost -> Cil_types.term_lhost Cil.visitAction
      method vterm_lval :
        Cil_types.term_lval -> Cil_types.term_lval Cil.visitAction
      method vterm_node :
        Cil_types.term_node -> Cil_types.term_node Cil.visitAction
      method vterm_offset :
        Cil_types.term_offset -> Cil_types.term_offset Cil.visitAction
      method vtype : Cil_types.typ -> Cil_types.typ Cil.visitAction
      method vvdec : Cil_types.varinfo -> Cil_types.varinfo Cil.visitAction
      method vvrbl : Cil_types.varinfo -> Cil_types.varinfo Cil.visitAction
    end
  class type virtual ['a] cumulative_class =
    object
      method behavior : Cil.visitor_behavior
      method bottom : 'a
      method clean_kf_result : Cil_types.kernel_function -> '-> 'a
      method compute_funspec : Cil_types.kernel_function -> 'a
      method virtual compute_kf : Cil_types.kernel_function -> 'a
      method current_func : Cil_types.fundec option
      method current_kf : Cil_types.kernel_function option
      method current_kinstr : Cil_types.kinstr
      method current_stmt : Cil_types.stmt option
      method fill_global_tables : unit
      method frama_c_plain_copy : Visitor.frama_c_visitor
      method get_filling_actions : (unit -> unit) Queue.t
      method join : '-> unit
      method plain_copy_visitor : Cil.cilVisitor
      method pop_stmt : Cil_types.stmt -> unit
      method project : Project.t option
      method push_stmt : Cil_types.stmt -> unit
      method queueInstr : Cil_types.instr list -> unit
      method reset_current_func : unit -> unit
      method reset_current_kf : unit -> unit
      method result : 'a
      method set_current_func : Cil_types.fundec -> unit
      method set_current_kf : Cil_types.kernel_function -> unit
      method specialize_state_on_call :
        Cil_types.kernel_function -> Db.Value.state
      method unqueueInstr : unit -> Cil_types.instr list
      method vallocates :
        Cil_types.identified_term list ->
        Cil_types.identified_term list Cil.visitAction
      method vallocation :
        Cil_types.identified_term Cil_types.allocation ->
        Cil_types.identified_term Cil_types.allocation Cil.visitAction
      method vannotation :
        Cil_types.global_annotation ->
        Cil_types.global_annotation Cil.visitAction
      method vassigns :
        Cil_types.identified_term Cil_types.assigns ->
        Cil_types.identified_term Cil_types.assigns Cil.visitAction
      method vattr :
        Cil_types.attribute -> Cil_types.attribute list Cil.visitAction
      method vattrparam :
        Cil_types.attrparam -> Cil_types.attrparam Cil.visitAction
      method vbehavior :
        Cil_types.funbehavior -> Cil_types.funbehavior Cil.visitAction
      method vblock : Cil_types.block -> Cil_types.block Cil.visitAction
      method vcode_annot :
        Cil_types.code_annotation ->
        Cil_types.code_annotation Cil.visitAction
      method vcompinfo :
        Cil_types.compinfo -> Cil_types.compinfo Cil.visitAction
      method vdeps :
        Cil_types.identified_term Cil_types.deps ->
        Cil_types.identified_term Cil_types.deps Cil.visitAction
      method venuminfo :
        Cil_types.enuminfo -> Cil_types.enuminfo Cil.visitAction
      method venumitem :
        Cil_types.enumitem -> Cil_types.enumitem Cil.visitAction
      method vexpr : Cil_types.exp -> Cil_types.exp Cil.visitAction
      method vfieldinfo :
        Cil_types.fieldinfo -> Cil_types.fieldinfo Cil.visitAction
      method vfile : Cil_types.file -> Cil_types.file Cil.visitAction
      method vfrees :
        Cil_types.identified_term list ->
        Cil_types.identified_term list Cil.visitAction
      method vfrom :
        Cil_types.identified_term Cil_types.from ->
        Cil_types.identified_term Cil_types.from Cil.visitAction
      method vfunc : Cil_types.fundec -> Cil_types.fundec Cil.visitAction
      method vglob :
        Cil_types.global -> Cil_types.global list Cil.visitAction
      method vglob_aux :
        Cil_types.global -> Cil_types.global list Cil.visitAction
      method videntified_predicate :
        Cil_types.identified_predicate ->
        Cil_types.identified_predicate Cil.visitAction
      method videntified_term :
        Cil_types.identified_term ->
        Cil_types.identified_term Cil.visitAction
      method vimpact_pragma :
        Cil_types.term Cil_types.impact_pragma ->
        Cil_types.term Cil_types.impact_pragma Cil.visitAction
      method vinit :
        Cil_types.varinfo ->
        Cil_types.offset -> Cil_types.init -> Cil_types.init Cil.visitAction
      method vinitoffs : Cil_types.offset -> Cil_types.offset Cil.visitAction
      method vinst : Cil_types.instr -> Cil_types.instr list Cil.visitAction
      method vlogic_ctor_info_decl :
        Cil_types.logic_ctor_info ->
        Cil_types.logic_ctor_info Cil.visitAction
      method vlogic_ctor_info_use :
        Cil_types.logic_ctor_info ->
        Cil_types.logic_ctor_info Cil.visitAction
      method vlogic_info_decl :
        Cil_types.logic_info -> Cil_types.logic_info Cil.visitAction
      method vlogic_info_use :
        Cil_types.logic_info -> Cil_types.logic_info Cil.visitAction
      method vlogic_label :
        Cil_types.logic_label -> Cil_types.logic_label Cil.visitAction
      method vlogic_type :
        Cil_types.logic_type -> Cil_types.logic_type Cil.visitAction
      method vlogic_type_def :
        Cil_types.logic_type_def -> Cil_types.logic_type_def Cil.visitAction
      method vlogic_type_info_decl :
        Cil_types.logic_type_info ->
        Cil_types.logic_type_info Cil.visitAction
      method vlogic_type_info_use :
        Cil_types.logic_type_info ->
        Cil_types.logic_type_info Cil.visitAction
      method vlogic_var_decl :
        Cil_types.logic_var -> Cil_types.logic_var Cil.visitAction
      method vlogic_var_use :
        Cil_types.logic_var -> Cil_types.logic_var Cil.visitAction
      method vloop_pragma :
        Cil_types.term Cil_types.loop_pragma ->
        Cil_types.term Cil_types.loop_pragma Cil.visitAction
      method vlval : Cil_types.lval -> Cil_types.lval Cil.visitAction
      method vmodel_info :
        Cil_types.model_info -> Cil_types.model_info Cil.visitAction
      method voffs : Cil_types.offset -> Cil_types.offset Cil.visitAction
      method vpredicate :
        Cil_types.predicate -> Cil_types.predicate Cil.visitAction
      method vpredicate_named :
        Cil_types.predicate Cil_types.named ->
        Cil_types.predicate Cil_types.named Cil.visitAction
      method vquantifiers :
        Cil_types.quantifiers -> Cil_types.quantifiers Cil.visitAction
      method vslice_pragma :
        Cil_types.term Cil_types.slice_pragma ->
        Cil_types.term Cil_types.slice_pragma Cil.visitAction
      method vspec : Cil_types.funspec -> Cil_types.funspec Cil.visitAction
      method vstmt : Cil_types.stmt -> Cil_types.stmt Cil.visitAction
      method vstmt_aux : Cil_types.stmt -> Cil_types.stmt Cil.visitAction
      method vterm : Cil_types.term -> Cil_types.term Cil.visitAction
      method vterm_lhost :
        Cil_types.term_lhost -> Cil_types.term_lhost Cil.visitAction
      method vterm_lval :
        Cil_types.term_lval -> Cil_types.term_lval Cil.visitAction
      method vterm_node :
        Cil_types.term_node -> Cil_types.term_node Cil.visitAction
      method vterm_offset :
        Cil_types.term_offset -> Cil_types.term_offset Cil.visitAction
      method vtype : Cil_types.typ -> Cil_types.typ Cil.visitAction
      method vvdec : Cil_types.varinfo -> Cil_types.varinfo Cil.visitAction
      method vvrbl : Cil_types.varinfo -> Cil_types.varinfo Cil.visitAction
    end
  module Make :
    functor
      (X : sig
             val analysis_name : string
             type t
             module T :
               sig
                 type t = t
                 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
               end
             class virtual do_it :
               [Cumulative_analysis.Make.t] cumulative_class
           end->
      sig
        module Memo : sig val self : State.t end
        class do_it_cached :
          Kernel_function.t list ->
          object
            method behavior : Cil.visitor_behavior
            method bottom : X.t
            method clean_kf_result : Cil_types.kernel_function -> X.t -> X.t
            method compute_funspec : Cil_types.kernel_function -> X.t
            method compute_kf : Cil_types.kernel_function -> X.t
            method current_func : Cil_types.fundec option
            method current_kf : Cil_types.kernel_function option
            method current_kinstr : Cil_types.kinstr
            method current_stmt : Cil_types.stmt option
            method cycle : Kernel_function.Hptset.t
            method fill_global_tables : unit
            method frama_c_plain_copy : Visitor.frama_c_visitor
            method get_filling_actions : (unit -> unit) Queue.t
            method join : X.t -> unit
            method plain_copy_visitor : Cil.cilVisitor
            method pop_stmt : Cil_types.stmt -> unit
            method project : Project.t option
            method push_stmt : Cil_types.stmt -> unit
            method queueInstr : Cil_types.instr list -> unit
            method reset_current_func : unit -> unit
            method reset_current_kf : unit -> unit
            method result : X.t
            method set_current_func : Cil_types.fundec -> unit
            method set_current_kf : Cil_types.kernel_function -> unit
            method specialize_state_on_call :
              Cil_types.kernel_function -> Db.Value.state
            method unqueueInstr : unit -> Cil_types.instr list
            method vallocates :
              Cil_types.identified_term list ->
              Cil_types.identified_term list Cil.visitAction
            method vallocation :
              Cil_types.identified_term Cil_types.allocation ->
              Cil_types.identified_term Cil_types.allocation Cil.visitAction
            method vannotation :
              Cil_types.global_annotation ->
              Cil_types.global_annotation Cil.visitAction
            method vassigns :
              Cil_types.identified_term Cil_types.assigns ->
              Cil_types.identified_term Cil_types.assigns Cil.visitAction
            method vattr :
              Cil_types.attribute -> Cil_types.attribute list Cil.visitAction
            method vattrparam :
              Cil_types.attrparam -> Cil_types.attrparam Cil.visitAction
            method vbehavior :
              Cil_types.funbehavior -> Cil_types.funbehavior Cil.visitAction
            method vblock :
              Cil_types.block -> Cil_types.block Cil.visitAction
            method vcode_annot :
              Cil_types.code_annotation ->
              Cil_types.code_annotation Cil.visitAction
            method vcompinfo :
              Cil_types.compinfo -> Cil_types.compinfo Cil.visitAction
            method vdeps :
              Cil_types.identified_term Cil_types.deps ->
              Cil_types.identified_term Cil_types.deps Cil.visitAction
            method venuminfo :
              Cil_types.enuminfo -> Cil_types.enuminfo Cil.visitAction
            method venumitem :
              Cil_types.enumitem -> Cil_types.enumitem Cil.visitAction
            method vexpr : Cil_types.exp -> Cil_types.exp Cil.visitAction
            method vfieldinfo :
              Cil_types.fieldinfo -> Cil_types.fieldinfo Cil.visitAction
            method vfile : Cil_types.file -> Cil_types.file Cil.visitAction
            method vfrees :
              Cil_types.identified_term list ->
              Cil_types.identified_term list Cil.visitAction
            method vfrom :
              Cil_types.identified_term Cil_types.from ->
              Cil_types.identified_term Cil_types.from Cil.visitAction
            method vfunc :
              Cil_types.fundec -> Cil_types.fundec Cil.visitAction
            method vglob :
              Cil_types.global -> Cil_types.global list Cil.visitAction
            method vglob_aux :
              Cil_types.global -> Cil_types.global list Cil.visitAction
            method videntified_predicate :
              Cil_types.identified_predicate ->
              Cil_types.identified_predicate Cil.visitAction
            method videntified_term :
              Cil_types.identified_term ->
              Cil_types.identified_term Cil.visitAction
            method vimpact_pragma :
              Cil_types.term Cil_types.impact_pragma ->
              Cil_types.term Cil_types.impact_pragma Cil.visitAction
            method vinit :
              Cil_types.varinfo ->
              Cil_types.offset ->
              Cil_types.init -> Cil_types.init Cil.visitAction
            method vinitoffs :
              Cil_types.offset -> Cil_types.offset Cil.visitAction
            method vinst :
              Cil_types.instr -> Cil_types.instr list Cil.visitAction
            method vlogic_ctor_info_decl :
              Cil_types.logic_ctor_info ->
              Cil_types.logic_ctor_info Cil.visitAction
            method vlogic_ctor_info_use :
              Cil_types.logic_ctor_info ->
              Cil_types.logic_ctor_info Cil.visitAction
            method vlogic_info_decl :
              Cil_types.logic_info -> Cil_types.logic_info Cil.visitAction
            method vlogic_info_use :
              Cil_types.logic_info -> Cil_types.logic_info Cil.visitAction
            method vlogic_label :
              Cil_types.logic_label -> Cil_types.logic_label Cil.visitAction
            method vlogic_type :
              Cil_types.logic_type -> Cil_types.logic_type Cil.visitAction
            method vlogic_type_def :
              Cil_types.logic_type_def ->
              Cil_types.logic_type_def Cil.visitAction
            method vlogic_type_info_decl :
              Cil_types.logic_type_info ->
              Cil_types.logic_type_info Cil.visitAction
            method vlogic_type_info_use :
              Cil_types.logic_type_info ->
              Cil_types.logic_type_info Cil.visitAction
            method vlogic_var_decl :
              Cil_types.logic_var -> Cil_types.logic_var Cil.visitAction
            method vlogic_var_use :
              Cil_types.logic_var -> Cil_types.logic_var Cil.visitAction
            method vloop_pragma :
              Cil_types.term Cil_types.loop_pragma ->
              Cil_types.term Cil_types.loop_pragma Cil.visitAction
            method vlval : Cil_types.lval -> Cil_types.lval Cil.visitAction
            method vmodel_info :
              Cil_types.model_info -> Cil_types.model_info Cil.visitAction
            method voffs :
              Cil_types.offset -> Cil_types.offset Cil.visitAction
            method vpredicate :
              Cil_types.predicate -> Cil_types.predicate Cil.visitAction
            method vpredicate_named :
              Cil_types.predicate Cil_types.named ->
              Cil_types.predicate Cil_types.named Cil.visitAction
            method vquantifiers :
              Cil_types.quantifiers -> Cil_types.quantifiers Cil.visitAction
            method vslice_pragma :
              Cil_types.term Cil_types.slice_pragma ->
              Cil_types.term Cil_types.slice_pragma Cil.visitAction
            method vspec :
              Cil_types.funspec -> Cil_types.funspec Cil.visitAction
            method vstmt : Cil_types.stmt -> Cil_types.stmt Cil.visitAction
            method vstmt_aux :
              Cil_types.stmt -> Cil_types.stmt Cil.visitAction
            method vterm : Cil_types.term -> Cil_types.term Cil.visitAction
            method vterm_lhost :
              Cil_types.term_lhost -> Cil_types.term_lhost Cil.visitAction
            method vterm_lval :
              Cil_types.term_lval -> Cil_types.term_lval Cil.visitAction
            method vterm_node :
              Cil_types.term_node -> Cil_types.term_node Cil.visitAction
            method vterm_offset :
              Cil_types.term_offset -> Cil_types.term_offset Cil.visitAction
            method vtype : Cil_types.typ -> Cil_types.typ Cil.visitAction
            method vvdec :
              Cil_types.varinfo -> Cil_types.varinfo Cil.visitAction
            method vvrbl :
              Cil_types.varinfo -> Cil_types.varinfo Cil.visitAction
          end
        val kernel_function : Cil_types.kernel_function -> X.t
        val statement : Cil_types.stmt -> X.t
        val expr : Cil_types.stmt -> Cil_types.exp -> X.t
      end
end