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_zone_info = Db.Properties.Interp.To_zone.t list option
  type t_decl = Cil_datatype.Varinfo.Set.t
  type t_pragmas = {
    ctrl : Cil_datatype.Stmt.Set.t;
    stmt : Cil_datatype.Stmt.Set.t;
  }
  val from_term :
    (Cil_types.term ->
     Db.Properties.Interp.To_zone.t_ctx ->
     Db.Properties.Interp.To_zone.t_zone_info *
     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_zone_info *
     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_zone_info *
     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_zone_info *
     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_zone_info *
     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_zone_info *
     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_zone_info *
      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_zone_info *
      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_zone_info *
      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