functor (F : Formula.S) ->
sig
module F :
sig
type 'a term = 'a F.term
type pred = F.pred
val e_int : int -> Formula.integer term
val e_call :
string -> Formula.abstract term list -> Formula.abstract term
val p_call : string -> Formula.abstract term list -> pred
val wrap : 'a term -> Formula.abstract term
val unwrap : Formula.abstract term -> 'a term
val e_true : Formula.boolean term
val e_false : Formula.boolean term
val e_int : int -> Formula.integer term
val e_float : float -> Formula.real term
val e_icst : string -> Formula.integer term
val e_rcst : string -> Formula.real term
val e_int64 : int64 -> Formula.integer term
val e_ineg : Formula.integer term -> Formula.integer term
val e_rneg : Formula.real term -> Formula.real term
val e_iop :
Formula.integer_op ->
Formula.integer term ->
Formula.integer term -> Formula.integer term
val e_rop :
Formula.real_op ->
Formula.real term -> Formula.real term -> Formula.real term
val e_icmp :
Formula.cmp_op ->
Formula.integer term ->
Formula.integer term -> Formula.boolean term
val e_rcmp :
Formula.cmp_op ->
Formula.real term -> Formula.real term -> Formula.boolean term
val p_icmp :
Formula.cmp_op ->
Formula.integer term -> Formula.integer term -> pred
val p_rcmp :
Formula.cmp_op -> Formula.real term -> Formula.real term -> pred
val e_bnot : Formula.integer term -> Formula.integer term
val e_band :
Formula.integer term ->
Formula.integer term -> Formula.integer term
val e_bor :
Formula.integer term ->
Formula.integer term -> Formula.integer term
val e_bxor :
Formula.integer term ->
Formula.integer term -> Formula.integer term
val e_lshift :
Formula.integer term ->
Formula.integer term -> Formula.integer term
val e_rshift :
Formula.integer term ->
Formula.integer term -> Formula.integer term
val integer_of_real : Formula.real term -> Formula.integer term
val real_of_integer : Formula.integer term -> Formula.real term
val e_bool : Formula.boolean term -> Formula.integer term
val e_not : Formula.boolean term -> Formula.boolean term
val e_and :
Formula.boolean term ->
Formula.boolean term -> Formula.boolean term
val e_or :
Formula.boolean term ->
Formula.boolean term -> Formula.boolean term
val e_cond : Formula.boolean term -> 'a term -> 'a term -> 'a term
val p_cond : Formula.boolean term -> pred -> pred -> pred
val p_true : pred
val p_false : pred
val p_bool : Formula.boolean term -> pred
val p_and : pred -> pred -> pred
val p_or : pred -> pred -> pred
val p_xor : pred -> pred -> pred
val p_not : pred -> pred
val p_implies : pred -> pred -> pred
val p_iff : pred -> pred -> pred
val p_eq : 'a term -> 'a term -> pred
val p_neq : 'a term -> 'a term -> pred
val p_conj : pred list -> pred
val p_disj : pred list -> pred
val p_named : string -> pred -> pred
val is_true : pred -> bool
val is_false : pred -> bool
val huge_term : int -> 'a term -> bool
val huge_pred : int -> pred -> bool
type var = F.var
type pool = F.pool
val pool : unit -> pool
val fresh : pool -> string -> Formula.kind -> var
val freshen : pool -> var -> var
val var : var -> 'a term
val eq_var : var -> var -> bool
val name_of_var : var -> string
val tau_of_var : var -> Formula.tau
val kind_of_var : var -> Formula.kind
val term_has_var : var list -> 'a term -> bool
val pred_has_var : var list -> pred -> bool
val term_closed : 'a term -> bool
val pred_closed : pred -> bool
val p_forall : var list -> pred -> pred
val p_exists : var list -> pred -> pred
val p_subst : (var -> var option) -> var -> 'a term -> pred -> pred
val e_subst :
(var -> var option) -> var -> 'a term -> 'b term -> 'b term
val e_rename : (var * var) list -> 'a term -> 'a term
val equal_terms : 'a term -> 'a term -> bool
type alpha = F.alpha
val empty_alpha : alpha
val fold_alpha : (var -> var -> 'a -> 'a) -> alpha -> 'a -> 'a
val p_more_alpha_cv : alpha -> pred -> alpha * pred
val p_alpha_cv : pred -> var list * pred
val pp_var : Format.formatter -> var -> unit
val pp_term : Format.formatter -> 'a term -> unit
val pp_pred : Format.formatter -> pred -> unit
val pp_decl : Format.formatter -> pred Formula.declaration -> unit
val pp_goal : Format.formatter -> string -> pred -> unit
end
type abstract = Formula.abstract Datalib.Create.F.term
type format = Formula.m_format Datalib.Create.F.term
type record = Formula.m_array Datalib.Create.F.term
type urecord = Formula.m_array Datalib.Create.F.term
type array = Formula.m_array Datalib.Create.F.term
type set = Formula.m_set Datalib.Create.F.term
type name = Formula.integer Datalib.Create.F.term
type pointer = Formula.m_pointer Datalib.Create.F.term
type integer = Formula.integer Datalib.Create.F.term
type real = Formula.real Datalib.Create.F.term
type boolean = Formula.boolean Datalib.Create.F.term
type interval = {
inf : Datalib.Create.integer option;
sup : Datalib.Create.integer option;
}
val pp_interval : Format.formatter -> Datalib.Create.interval -> unit
type 'a assigned =
Aloc of Ctypes.c_object * 'a
| Arange of Ctypes.c_object * 'a * Datalib.Create.interval
val p_app0 : string -> Datalib.Create.F.pred
val p_app1 : string -> 'a Datalib.Create.F.term -> Datalib.Create.F.pred
val p_app2 :
string ->
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term -> Datalib.Create.F.pred
val p_app3 :
string ->
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term ->
'c Datalib.Create.F.term -> Datalib.Create.F.pred
val p_app4 :
string ->
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term ->
'c Datalib.Create.F.term ->
'd Datalib.Create.F.term -> Datalib.Create.F.pred
val p_app5 :
string ->
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term ->
'c Datalib.Create.F.term ->
'd Datalib.Create.F.term ->
'e Datalib.Create.F.term -> Datalib.Create.F.pred
val e_app0 : string -> 'a Datalib.Create.F.term
val e_app1 :
string -> 'a Datalib.Create.F.term -> 'b Datalib.Create.F.term
val e_app2 :
string ->
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term -> 'c Datalib.Create.F.term
val e_app3 :
string ->
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term ->
'c Datalib.Create.F.term -> 'd Datalib.Create.F.term
val e_app4 :
string ->
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term ->
'c Datalib.Create.F.term ->
'd Datalib.Create.F.term -> 'e Datalib.Create.F.term
val e_app5 :
string ->
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term ->
'c Datalib.Create.F.term ->
'd Datalib.Create.F.term ->
'e Datalib.Create.F.term -> 'f Datalib.Create.F.term
val modulo :
Ctypes.c_int -> 'a Datalib.Create.F.term -> 'b Datalib.Create.F.term
val guard :
Ctypes.c_int -> 'a Datalib.Create.F.term -> Datalib.Create.F.pred
val i_convert :
Ctypes.c_int ->
Ctypes.c_int -> 'a Datalib.Create.F.term -> 'a Datalib.Create.F.term
val round :
Ctypes.c_float -> 'a Datalib.Create.F.term -> 'b Datalib.Create.F.term
val f_guard :
Ctypes.c_float -> 'a Datalib.Create.F.term -> Datalib.Create.F.pred
val f_convert :
Ctypes.c_float ->
Ctypes.c_float -> 'a Datalib.Create.F.term -> 'a Datalib.Create.F.term
val part_of_item : 'a Formula.item -> int
module Dset :
sig
type elt = F.pred Formula.declaration
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 -> 'a) -> t -> 'a -> '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
end
val gindex : (string, Datalib.Create.Dset.elt) Hashtbl.t
val gsection : Datalib.Create.Dset.t Datalib.Create.array
val gfresh : (string, int Pervasives.ref) Hashtbl.t
val fresh_name : string -> string -> string
val s_index : Formula.section -> int
val gclear : (unit -> unit) list Pervasives.ref
val clear : unit -> unit
val on_clear : (unit -> unit) -> unit
val locked : bool Pervasives.ref
val add_declaration : Datalib.Create.Dset.elt -> unit
val iter : Formula.section -> (Datalib.Create.Dset.elt -> unit) -> unit
val iter_all : (Datalib.Create.Dset.elt -> unit) -> unit
val gdummy : int Pervasives.ref
val dummy : unit -> Datalib.Create.F.pred
module type Identifiable =
sig
type t
module H : Hashtbl.S
val index : Datalib.Create.Identifiable.t -> H.key
val prefix : string
val basename : Datalib.Create.Identifiable.t -> string
val location : Datalib.Create.Identifiable.t -> Log.source option
val pp_title :
Format.formatter -> Datalib.Create.Identifiable.t -> unit
val pp_descr :
Format.formatter -> Datalib.Create.Identifiable.t -> unit
end
module type Registry =
sig
type t
val define : Datalib.Create.Registry.t -> unit
val get_definition :
Datalib.Create.Registry.t ->
Datalib.Create.F.pred Formula.declaration
val on_definition :
(Datalib.Create.Registry.t ->
Datalib.Create.F.pred Formula.declaration -> unit) ->
unit
end
module type Declarator =
sig
type t
module H : Hashtbl.S
val index : t -> H.key
val prefix : string
val basename : t -> string
val location : t -> Log.source option
val pp_title : Format.formatter -> t -> unit
val pp_descr : Format.formatter -> t -> unit
val clear : unit -> unit
val section : Formula.section
val declare : t -> string -> Datalib.Create.F.pred Formula.item
end
module Register :
functor (D : Declarator) ->
sig
type t = D.t
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition :
(t -> F.pred Formula.declaration -> unit) -> unit
end
val gindexref : int Pervasives.ref
module type Indexed =
sig
type t
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition : (t -> F.pred Formula.declaration -> unit) -> unit
val get_ind : t -> Datalib.Create.integer
end
module Dindex :
functor (I : Identifiable) ->
sig
type t = I.t
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition :
(t -> F.pred Formula.declaration -> unit) -> unit
val get_ind : t -> integer
end
val pp_dim : Format.formatter -> Cil_types.typ -> unit
val pp_ctype : bool -> Format.formatter -> Cil_types.typ -> unit
module Varinfo :
sig
type t = Cil_types.varinfo
module H : Hashtbl.S
val index : t -> H.key
val prefix : string
val basename : t -> string
val location : t -> Log.source option
val pp_title : Format.formatter -> t -> unit
val pp_descr : Format.formatter -> t -> unit
end
module Varaddr :
sig
type t = Cil_types.varinfo
module H : Hashtbl.S
val index : t -> H.key
val prefix : string
val basename : t -> string
val location : t -> Log.source option
val pp_title : Format.formatter -> t -> unit
val pp_descr : Format.formatter -> t -> unit
end
module Fieldinfo :
sig
type t = Cil_types.fieldinfo
module H : Hashtbl.S
val index : t -> H.key
val prefix : string
val basename : t -> string
val location : t -> Log.source option
val pp_title : Format.formatter -> t -> unit
val pp_descr : Format.formatter -> t -> unit
end
module Compinfo :
sig
type t = Cil_types.compinfo
module H : Hashtbl.S
val index : t -> H.key
val prefix : string
val basename : t -> string
val location : t -> Log.source option
val pp_title : Format.formatter -> t -> unit
val pp_descr : Format.formatter -> t -> unit
end
module Arrayinfo :
sig
type t = Ctypes.arrayinfo
module H : Hashtbl.S
val index : t -> H.key
val prefix : string
val basename : t -> string
val location : t -> Log.source option
val pp_title : Format.formatter -> t -> unit
val pp_descr : Format.formatter -> t -> unit
end
module LTypeinfo :
sig
type t = Cil_types.logic_type
module H : Hashtbl.S
val index : t -> H.key
val prefix : string
val basename : t -> string
val location : t -> Log.source option
val pp_title : Format.formatter -> t -> unit
val pp_descr : Format.formatter -> t -> unit
end
module Logicvar :
sig
type t = Cil_types.logic_var
module H : Hashtbl.S
val index : t -> H.key
val prefix : string
val basename : t -> string
val location : t -> Log.source option
val pp_title : Format.formatter -> t -> unit
val pp_descr : Format.formatter -> t -> unit
end
module LTinfo :
sig
type t = Cil_types.logic_type_info
val compare :
Cil_types.logic_type_info -> Cil_types.logic_type_info -> int
val hash : Cil_types.logic_type_info -> int
val equal :
Cil_types.logic_type_info -> Cil_types.logic_type_info -> bool
end
module LTinfoId :
sig
type t = Cil_types.logic_type_info
module H : Hashtbl.S
val index : t -> H.key
val prefix : string
val basename : t -> string
val location : t -> Log.source option
val pp_title : Format.formatter -> t -> unit
val pp_descr : Format.formatter -> t -> unit
end
module ADTDecl :
sig
type t = Cil_types.logic_type_info
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition : (t -> F.pred Formula.declaration -> unit) -> unit
end
val tau_of_object : Ctypes.c_object -> Formula.tau
val tau_of_ctype : Cil_types.typ -> Formula.tau
val tau_of_logic_type : Cil_types.logic_type -> Formula.tau
module Findex :
sig
type t = Fieldinfo.t
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition : (t -> F.pred Formula.declaration -> unit) -> unit
val get_ind : t -> integer
end
module Xindex :
sig
type t = Varinfo.t
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition : (t -> F.pred Formula.declaration -> unit) -> unit
val get_ind : t -> integer
end
module Tindex :
sig
type t = Compinfo.t
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition : (t -> F.pred Formula.declaration -> unit) -> unit
val get_ind : t -> integer
end
module Aindex :
sig
type t = Varaddr.t
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition : (t -> F.pred Formula.declaration -> unit) -> unit
val get_ind : t -> integer
end
module LTindex :
sig
type t = LTypeinfo.t
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition : (t -> F.pred Formula.declaration -> unit) -> unit
val get_ind : t -> integer
end
val pp_kind : Format.formatter -> Mdata.kind -> unit
val empty : Formula.m_set Datalib.Create.F.term
val singleton : 'a Datalib.Create.F.term -> 'b Datalib.Create.F.term
val union :
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term -> 'c Datalib.Create.F.term
val unions :
Formula.m_set Datalib.Create.F.term list ->
Formula.m_set Datalib.Create.F.term
val inter :
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term -> 'c Datalib.Create.F.term
val remove :
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term -> 'c Datalib.Create.F.term
val add_set :
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term -> 'c Datalib.Create.F.term
val mult_set :
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term -> 'c Datalib.Create.F.term
val neg_set : 'a Datalib.Create.F.term -> 'b Datalib.Create.F.term
val loc_range :
Formula.integer Datalib.Create.F.term ->
Formula.integer Datalib.Create.F.term ->
Formula.m_set Datalib.Create.F.term
val range_inf :
Formula.integer Datalib.Create.F.term ->
Formula.m_set Datalib.Create.F.term
val range_sup :
Formula.integer Datalib.Create.F.term ->
Formula.m_set Datalib.Create.F.term
val integers : Formula.m_set Datalib.Create.F.term
val set_of_list :
'a Datalib.Create.F.term list -> Formula.m_set Datalib.Create.F.term
val interval :
Datalib.Create.interval -> Formula.m_set Datalib.Create.F.term
val get_range_index :
'a Datalib.Create.F.term ->
Datalib.Create.interval -> 'b Datalib.Create.F.term
val set_range_index :
'a Datalib.Create.F.term ->
Datalib.Create.interval -> 'b Datalib.Create.F.term
val lt_pointer :
Formula.m_pointer Datalib.Create.F.term ->
Formula.m_pointer Datalib.Create.F.term -> Datalib.Create.F.pred
val le_pointer :
Formula.m_pointer Datalib.Create.F.term ->
Formula.m_pointer Datalib.Create.F.term -> Datalib.Create.F.pred
val minus_pointer :
Formula.m_pointer Datalib.Create.F.term ->
Formula.m_pointer Datalib.Create.F.term ->
Formula.integer Datalib.Create.F.term
val equal_pointer_bool :
Formula.m_pointer Datalib.Create.F.term ->
Formula.m_pointer Datalib.Create.F.term ->
Formula.boolean Datalib.Create.F.term
val lt_pointer_bool :
Formula.m_pointer Datalib.Create.F.term ->
Formula.m_pointer Datalib.Create.F.term ->
Formula.boolean Datalib.Create.F.term
val le_pointer_bool :
Formula.m_pointer Datalib.Create.F.term ->
Formula.m_pointer Datalib.Create.F.term ->
Formula.boolean Datalib.Create.F.term
val null : Formula.m_pointer Datalib.Create.F.term
val is_null :
Formula.m_pointer Datalib.Create.F.term ->
Formula.boolean Datalib.Create.F.term
val int_format : Datalib.Create.format
val real_format : Datalib.Create.format
val pointer_format : Datalib.Create.format
val record_format : Datalib.Create.format
val urecord_format : Datalib.Create.format
val array_format : Datalib.Create.format -> Datalib.Create.format
val access :
'_a Datalib.Create.F.term ->
'_b Datalib.Create.F.term -> '_c Datalib.Create.F.term
val has_type_int :
Ctypes.c_int -> 'a Datalib.Create.F.term -> Datalib.Create.F.pred
val has_type :
'a Datalib.Create.F.term ->
Cil_types.logic_type -> Datalib.Create.F.pred
class type hint =
object
method capture : Datalib.Create.F.var list -> unit
method has_var : Datalib.Create.F.var list -> bool
method pretty : Format.formatter -> unit
method subst :
Datalib.Create.F.var ->
Formula.abstract Datalib.Create.F.term -> unit
end
type bindings = Datalib.Create.binding list
and binding =
Forall of Datalib.Create.F.var list
| Exists of Datalib.Create.F.var list
| Any of Datalib.Create.F.var * Datalib.Create.F.pred
| Let of Datalib.Create.F.var * Formula.abstract Datalib.Create.F.term
val pp_binding : Format.formatter -> Datalib.Create.binding -> unit
type context = {
pool : Datalib.Create.F.pool;
hints : Datalib.Create.hint list;
mutable bindings : Datalib.Create.bindings;
}
val closed : Datalib.Create.bindings
val context : Datalib.Create.context list Pervasives.ref
val occur_check :
Datalib.Create.F.var -> Datalib.Create.F.var list -> unit
val capture :
< capture : Datalib.Create.F.var list -> unit;
subst : Datalib.Create.F.var ->
Formula.abstract Datalib.Create.F.term -> unit;
.. >
list -> Datalib.Create.binding list -> unit
val pp_vkind : Format.formatter -> Mdata.vkind -> unit
val guards_with :
(Datalib.Create.F.pred -> 'a -> 'a) ->
'a -> Datalib.Create.F.var list -> 'a
val sub :
Datalib.Create.F.var ->
Datalib.Create.F.var list -> Datalib.Create.F.var list
val some_alpha :
Datalib.Create.F.pool ->
Datalib.Create.F.var -> Datalib.Create.F.var option
val apply_bindings :
(F.var -> F.var option) -> binding list -> F.pred -> F.pred
val alpha : Datalib.Create.F.var -> Datalib.Create.F.var option
val do_subst :
Datalib.Create.F.var ->
'a Datalib.Create.F.term ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val do_forall :
Datalib.Create.F.var list ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val do_exists :
Datalib.Create.F.var list ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val has_var :
Datalib.Create.F.var list ->
Datalib.Create.binding list ->
< has_var : Datalib.Create.F.var list -> bool; .. > list -> bool
val forall :
Datalib.Create.F.var list ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val exists :
Datalib.Create.F.var list ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val fresh : string -> Mdata.vkind -> Datalib.Create.F.var
val pool : unit -> Datalib.Create.F.pool
val vkind_of_var : Datalib.Create.F.var -> Mdata.vkind
val term_such_that :
Formula.tau ->
('a Datalib.Create.F.term -> Datalib.Create.F.pred) ->
'a Datalib.Create.F.term
val subst_in_bindings :
Datalib.Create.context ->
Datalib.Create.F.var ->
Formula.abstract Datalib.Create.F.term ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val subst :
Datalib.Create.F.var ->
'a Datalib.Create.F.term ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val close :
Datalib.Create.binding list ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val has_vars : Datalib.Create.F.var list -> Datalib.Create.F.pred -> bool
val push :
string ->
Datalib.Create.F.pool ->
Datalib.Create.bindings ->
Datalib.Create.hint list -> Datalib.Create.context
val pop : string -> Datalib.Create.context -> Datalib.Create.bindings
val flush :
string ->
Datalib.Create.context ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val kill : string -> Datalib.Create.context -> unit
type substitution = (Datalib.Create.F.var * Datalib.Create.F.var) list
val pp_sigma :
Format.formatter ->
(Datalib.Create.F.var * Datalib.Create.F.var) list -> unit
val pp_bindings :
Format.formatter ->
(Datalib.Create.F.var * 'a Datalib.Create.F.term) list -> unit
type havoc =
Fresh of Datalib.Create.F.var
| Update of Datalib.Create.F.var *
(Datalib.Create.substitution ->
Formula.abstract Datalib.Create.F.term)
val freshen : Datalib.Create.F.var -> Datalib.Create.F.var
val apply :
(Datalib.Create.F.var * Datalib.Create.F.var) list ->
'a Datalib.Create.F.term -> 'a Datalib.Create.F.term
val domain :
Datalib.Create.F.var list ->
Datalib.Create.F.var list ->
Datalib.Create.havoc list ->
Datalib.Create.F.var list * Datalib.Create.F.var list
val reverse :
(Datalib.Create.F.var * Datalib.Create.F.var) list ->
(Datalib.Create.F.var * Datalib.Create.F.var) list
val freshen_sigma :
Datalib.Create.F.var ->
(Datalib.Create.F.var * Datalib.Create.F.var) list ->
(Datalib.Create.F.var * Datalib.Create.F.var) list
val compute_bindings :
(Datalib.Create.F.var * Formula.abstract Datalib.Create.F.term) list ->
(Datalib.Create.F.var * Datalib.Create.F.var) list ->
Datalib.Create.substitution ->
Datalib.Create.havoc list ->
(Datalib.Create.F.var * Formula.abstract Datalib.Create.F.term) list *
Datalib.Create.substitution
val apply_bindings :
(Datalib.Create.F.var * 'a Datalib.Create.F.term) list ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val rename :
(Datalib.Create.F.var * Datalib.Create.F.var) list ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val fixpoint :
('a * Datalib.Create.F.var) list ->
('b * Datalib.Create.F.var) list ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val havoc_inductive :
Datalib.Create.havoc list ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val havoc_static :
Datalib.Create.havoc list ->
Datalib.Create.F.pred -> Datalib.Create.F.pred
val tau_of_object : Ctypes.c_object -> Formula.tau
val format_of_object : Ctypes.c_object -> Datalib.Create.format
val acc_field :
'a Datalib.Create.F.term ->
Datalib.Create.Findex.t -> 'b Datalib.Create.F.term
val upd_field :
'a Datalib.Create.F.term ->
Datalib.Create.Findex.t ->
'b Datalib.Create.F.term -> 'c Datalib.Create.F.term
val acc_index :
Formula.m_array Datalib.Create.F.term ->
Formula.integer Datalib.Create.F.term ->
Formula.abstract Datalib.Create.F.term
val upd_index :
Formula.m_array Datalib.Create.F.term ->
Formula.integer Datalib.Create.F.term ->
Formula.abstract Datalib.Create.F.term ->
Formula.m_array Datalib.Create.F.term
val encode :
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term -> 'c Datalib.Create.F.term
val decode :
'a Datalib.Create.F.term ->
'b Datalib.Create.F.term -> 'c Datalib.Create.F.term
val equal_rec :
(Ctypes.c_object ->
Formula.abstract Datalib.Create.F.term ->
Formula.abstract Datalib.Create.F.term -> Datalib.Create.F.pred)
Pervasives.ref
val eq_record_definition :
Cil_types.compinfo -> string -> Datalib.Create.F.pred
val eq_array_definition :
Ctypes.arrayinfo -> string -> Datalib.Create.F.pred
module RecEqName :
sig
type t = Cil_types.compinfo
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition : (t -> F.pred Formula.declaration -> unit) -> unit
end
module RecEqDef :
sig
type t = Cil_types.compinfo
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition : (t -> F.pred Formula.declaration -> unit) -> unit
end
module ArrEqName :
sig
type t = Ctypes.arrayinfo
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition : (t -> F.pred Formula.declaration -> unit) -> unit
end
module ArrEqDef :
sig
type t = Ctypes.arrayinfo
val define : t -> unit
val get_definition : t -> F.pred Formula.declaration
val on_definition : (t -> F.pred Formula.declaration -> unit) -> unit
end
val eq_record :
Datalib.Create.RecEqDef.t ->
Datalib.Create.record -> Datalib.Create.record -> Datalib.Create.F.pred
val eq_array :
Datalib.Create.ArrEqDef.t ->
Datalib.Create.array -> Datalib.Create.array -> Datalib.Create.F.pred
val equal :
Ctypes.c_object ->
Formula.abstract Datalib.Create.F.term ->
Formula.abstract Datalib.Create.F.term -> Datalib.Create.F.pred
end