sig
  val model_name : string
  type t_data = Model1.data1
  type t_exp = Model1.M.t_data Fol.d_term
  type t_pred = Model1.M.t_data Fol.d_pred
  val eq_data : Model1.data1 -> Model1.data1 -> bool
  val mk_lvar : Cil_types.logic_var -> 'Fol.d_term
  val mk_cvar : Cil_types.varinfo -> 'Fol.d_term
  val mk_lvar_addr : Cil_types.logic_var -> Model1.data1 Fol.d_term
  val mk_cvar_addr : Cil_types.varinfo -> Model1.data1 Fol.d_term
  val mk_field_access :
    Model1.exp1 -> Cil_types.fieldinfo -> Model1.data1 Fol.d_term
  val mk_index_access :
    Model1.exp1 -> '-> Model1.exp1 -> Model1.data1 Fol.d_term
  val mk_field_shift :
    Model1.exp1 -> Cil_types.fieldinfo -> Model1.data1 Fol.d_term
  val mk_index_shift :
    Model1.exp1 -> '-> Model1.exp1 -> Model1.data1 Fol.d_term
  val mk_shift_pointer :
    Model1.exp1 -> '-> Model1.exp1 -> Model1.data1 Fol.d_term
  val access : Model1.exp1 -> Model1.exp1
  val mk_access_pointer : Model1.exp1 -> '-> Model1.exp1
  val mk_field_update :
    Model1.exp1 ->
    Cil_types.fieldinfo -> Model1.exp1 -> Model1.data1 Fol.d_term
  val mk_index_update :
    Model1.exp1 -> Model1.exp1 -> Model1.exp1 -> Model1.data1 Fol.d_term
  val mk_ptr_update : Model1.exp1 -> Model1.exp1 -> Model1.data1 Fol.d_term
  val prop_in_data :
    (Model1.exp1 -> Model1.exp1) -> Model1.data1 -> Model1.exp1
  val visit_exp_in_data :
    ('-> Model1.exp1 -> 'a) -> '-> Model1.data1 -> 'a
  val mk_let :
    fresh:bool ->
    Fol.variable ->
    Model1.data1 Fol.d_term ->
    Model1.data1 Fol.d_pred -> Model1.data1 Fol.d_pred
  val expr_cast : '-> '-> 'c
  val add_decl_hyp :
    Cil_types.logic_var ->
    Model1.data1 Fol.d_term Fol.t_pred -> Model1.data1 Fol.d_term Fol.t_pred
  val fol : Model1.data1 Fol.d_pred -> Fol.data Fol.d_pred
  val pp_data : Format.formatter -> Model1.data1 -> unit
end