sig
  val lval :
    (Db_types.kernel_function ->
     Cil_types.stmt -> string -> Cil_types.term_lval)
    Pervasives.ref
  val expr :
    (Db_types.kernel_function -> Cil_types.stmt -> string -> Cil_types.term)
    Pervasives.ref
  val term_lval_to_lval :
    (result:Cil_types.varinfo option -> Cil_types.term_lval -> Cil_types.lval)
    Pervasives.ref
  val term_to_lval :
    (result:Cil_types.varinfo option -> Cil_types.term -> Cil_types.lval)
    Pervasives.ref
  val term_to_exp :
    (result:Cil_types.varinfo option -> Cil_types.term -> Cil_types.exp)
    Pervasives.ref
  val loc_to_exp :
    (result:Cil_types.varinfo option -> Cil_types.term -> Cil_types.exp list)
    Pervasives.ref
  val loc_to_lval :
    (result:Cil_types.varinfo option -> Cil_types.term -> Cil_types.lval list)
    Pervasives.ref
  val identified_term_zone_to_loc :
    (result:Cil_types.varinfo option ->
     Db.Value.state ->
     Cil_types.identified_term Cil_types.zone -> Locations.location)
    Pervasives.ref
  val loc_to_loc :
    (result:Cil_types.varinfo option ->
     Db.Value.state -> Cil_types.term -> Locations.location)
    Pervasives.ref
  val loc_to_offset :
    (result:Cil_types.varinfo option ->
     Cil_types.term -> Cil_types.offset list)
    Pervasives.ref
  val force_term_to_exp :
    (Cil_types.term -> Cil_types.exp * Cilutil.opaque_term_env)
    Pervasives.ref
  val force_back_exp_to_term :
    (Cilutil.opaque_term_env -> Cil_types.exp -> Cil_types.term)
    Pervasives.ref
  val force_exp_to_term :
    (Cil_types.location -> Cil_types.exp -> Cil_types.term) Pervasives.ref
  val force_lval_to_term_lval :
    (Cil_types.location -> Cil_types.lval -> Cil_types.term_lval)
    Pervasives.ref
  val force_term_offset_to_offset :
    (Cil_types.term_offset -> Cil_types.offset * Cilutil.opaque_term_env)
    Pervasives.ref
  val force_back_offset_to_term_offset :
    (Cilutil.opaque_term_env -> Cil_types.offset -> Cil_types.term_offset)
    Pervasives.ref
  val force_exp_to_predicate :
    (Cil_types.location ->
     Cil_types.exp -> Cil_types.predicate Cil_types.named)
    Pervasives.ref
  val force_exp_to_assertion :
    (Cil_types.location -> Cil_types.exp -> Cil_types.code_annotation)
    Pervasives.ref
  val force_term_lval_to_lval :
    (Cil_types.term_lval -> Cil_types.lval * Cilutil.opaque_term_env)
    Pervasives.ref
  val force_back_lval_to_term_lval :
    (Cilutil.opaque_term_env -> Cil_types.lval -> Cil_types.term_lval)
    Pervasives.ref
  val from_range_to_comprehension :
    (Cil.visitor_behavior -> Project.t -> Cil_types.file -> unit)
    Pervasives.ref
  val range_to_comprehension :
    (Cil_types.term -> Cil_types.term) Pervasives.ref
  val from_comprehension_to_range :
    (Cil.visitor_behavior -> Project.t -> Cil_types.file -> unit)
    Pervasives.ref
  val term_offset_to_offset :
    (result:Cil_types.varinfo option ->
     Cil_types.term_offset -> Cil_types.offset)
    Pervasives.ref
  module To_zone :
    sig
      type t_ctx = {
        state_opt : bool option;
        ki_opt : (Cil_types.stmt * bool) option;
        kf : Kernel_function.t;
      }
      val mk_ctx_func_contrat :
        (Db_types.kernel_function ->
         state_opt:bool option -> Db.Properties.Interp.To_zone.t_ctx)
        Pervasives.ref
      val mk_ctx_stmt_contrat :
        (Db_types.kernel_function ->
         Cil_types.stmt ->
         state_opt:bool option -> Db.Properties.Interp.To_zone.t_ctx)
        Pervasives.ref
      val mk_ctx_stmt_annot :
        (Db_types.kernel_function ->
         Cil_types.stmt -> before:bool -> Db.Properties.Interp.To_zone.t_ctx)
        Pervasives.ref
      type t = {
        before : bool;
        ki : Cil_types.stmt;
        zone : Locations.Zone.t;
      }
      type t_decl = Cilutil.VarinfoSet.t
      type t_pragmas = {
        ctrl : Cilutil.StmtSet.t;
        stmt : Cilutil.StmtSet.t;
      }
      val from_term :
        (Cil_types.term ->
         Db.Properties.Interp.To_zone.t_ctx ->
         Db.Properties.Interp.To_zone.t list *
         Db.Properties.Interp.To_zone.t_decl)
        Pervasives.ref
      val from_terms :
        (Cil_types.term list ->
         Db.Properties.Interp.To_zone.t_ctx ->
         Db.Properties.Interp.To_zone.t list *
         Db.Properties.Interp.To_zone.t_decl)
        Pervasives.ref
      val from_pred :
        (Cil_types.predicate Cil_types.named ->
         Db.Properties.Interp.To_zone.t_ctx ->
         Db.Properties.Interp.To_zone.t list *
         Db.Properties.Interp.To_zone.t_decl)
        Pervasives.ref
      val from_preds :
        (Cil_types.predicate Cil_types.named list ->
         Db.Properties.Interp.To_zone.t_ctx ->
         Db.Properties.Interp.To_zone.t list *
         Db.Properties.Interp.To_zone.t_decl)
        Pervasives.ref
      val from_zones :
        (Cil_types.identified_term Cil_types.zone list ->
         Db.Properties.Interp.To_zone.t_ctx ->
         Db.Properties.Interp.To_zone.t list *
         Db.Properties.Interp.To_zone.t_decl)
        Pervasives.ref
      val from_zone :
        (Cil_types.identified_term Cil_types.zone ->
         Db.Properties.Interp.To_zone.t_ctx ->
         Db.Properties.Interp.To_zone.t list *
         Db.Properties.Interp.To_zone.t_decl)
        Pervasives.ref
      val from_stmt_annot :
        (Cil_types.code_annotation ->
         before:bool ->
         Cil_types.stmt * Db_types.kernel_function ->
         (Db.Properties.Interp.To_zone.t list *
          Db.Properties.Interp.To_zone.t_decl) *
         Db.Properties.Interp.To_zone.t_pragmas)
        Pervasives.ref
      val from_stmt_annots :
        ((Db_types.rooted_code_annotation Db_types.before_after -> bool)
         option ->
         Cil_types.stmt * Db_types.kernel_function ->
         (Db.Properties.Interp.To_zone.t list *
          Db.Properties.Interp.To_zone.t_decl) *
         Db.Properties.Interp.To_zone.t_pragmas)
        Pervasives.ref
      val from_func_annots :
        (((Cil_types.stmt -> unit) -> Db_types.kernel_function -> unit) ->
         (Db_types.rooted_code_annotation Db_types.before_after -> bool)
         option ->
         Db_types.kernel_function ->
         (Db.Properties.Interp.To_zone.t list *
          Db.Properties.Interp.To_zone.t_decl) *
         Db.Properties.Interp.To_zone.t_pragmas)
        Pervasives.ref
      val code_annot_filter :
        (Db_types.rooted_code_annotation Db_types.before_after ->
         ai:bool ->
         user_assert:bool ->
         slicing_pragma:bool ->
         loop_inv:bool -> loop_var:bool -> others:bool -> bool)
        Pervasives.ref
    end
  val code_annot :
    (Db_types.kernel_function ->
     Cil_types.stmt -> before:bool -> string -> Cil_types.code_annotation)
    Pervasives.ref
end