sig
module F : Formula.S
type format = Formula.m_format F.term
type abstract = Formula.abstract F.term
type integer = Formula.integer F.term
type real = Formula.real F.term
type boolean = Formula.boolean F.term
type record = Formula.m_array F.term
type urecord = Formula.m_array F.term
type array = Formula.m_array F.term
type set = Formula.m_set F.term
type name = Formula.integer F.term
type pointer = Formula.m_pointer F.term
val pp_kind : Format.formatter -> Mdata.kind -> unit
type interval = {
inf : Mdata.S.integer option;
sup : Mdata.S.integer option;
}
type 'a assigned =
Aloc of Ctypes.c_object * 'a
| Arange of Ctypes.c_object * 'a * Mdata.S.interval
val pp_interval : Format.formatter -> Mdata.S.interval -> unit
val e_app0 : string -> 'a F.term
val e_app1 : string -> 'a F.term -> 'b F.term
val e_app2 : string -> 'a F.term -> 'b F.term -> 'c F.term
val e_app3 : string -> 'a F.term -> 'b F.term -> 'c F.term -> 'd F.term
val e_app4 :
string -> 'a F.term -> 'b F.term -> 'c F.term -> 'd F.term -> 'e F.term
val e_app5 :
string ->
'a F.term ->
'b F.term -> 'c F.term -> 'd F.term -> 'e F.term -> 'f F.term
val p_app0 : string -> F.pred
val p_app1 : string -> 'a F.term -> F.pred
val p_app2 : string -> 'a F.term -> 'b F.term -> F.pred
val p_app3 : string -> 'a F.term -> 'b F.term -> 'c F.term -> F.pred
val p_app4 :
string -> 'a F.term -> 'b F.term -> 'c F.term -> 'd F.term -> F.pred
val p_app5 :
string ->
'a F.term -> 'b F.term -> 'c F.term -> 'd F.term -> 'e F.term -> F.pred
val tau_of_logic_type : Cil_types.logic_type -> Formula.tau
type context
type bindings
class type hint =
object
method capture : F.var list -> unit
method has_var : F.var list -> bool
method pretty : Format.formatter -> unit
method subst : F.var -> Formula.abstract F.term -> unit
end
val closed : Mdata.S.bindings
val close : Mdata.S.bindings -> F.pred -> F.pred
val capture : Mdata.S.hint list -> Mdata.S.bindings -> unit
val push :
string ->
F.pool -> Mdata.S.bindings -> Mdata.S.hint list -> Mdata.S.context
val pop : string -> Mdata.S.context -> Mdata.S.bindings
val kill : string -> Mdata.S.context -> unit
val flush : string -> Mdata.S.context -> F.pred -> F.pred
val term_such_that : Formula.tau -> ('a F.term -> F.pred) -> 'a F.term
val forall : F.var list -> F.pred -> F.pred
val exists : F.var list -> F.pred -> F.pred
val subst : F.var -> 'a F.term -> F.pred -> F.pred
val fresh : string -> Mdata.vkind -> F.var
val alpha : F.var -> F.var option
val pool : unit -> F.pool
val vkind_of_var : F.var -> Mdata.vkind
val has_vars : F.var list -> F.pred -> bool
type substitution
val apply : Mdata.S.substitution -> 'a F.term -> 'a F.term
type havoc =
Fresh of F.var
| Update of F.var * (Mdata.S.substitution -> Formula.abstract F.term)
val havoc_static : Mdata.S.havoc list -> F.pred -> F.pred
val havoc_inductive : Mdata.S.havoc list -> F.pred -> F.pred
val clear : unit -> unit
val on_clear : (unit -> unit) -> unit
val fresh_name : string -> string -> string
val add_declaration : F.pred Formula.declaration -> unit
val iter : Formula.section -> (F.pred Formula.declaration -> unit) -> unit
val iter_all : (F.pred Formula.declaration -> unit) -> unit
val dummy : unit -> F.pred
module type Identifiable =
sig
type t
module H : Hashtbl.S
val index : Mdata.S.Identifiable.t -> H.key
val prefix : string
val basename : Mdata.S.Identifiable.t -> string
val location : Mdata.S.Identifiable.t -> Log.source option
val pp_title : Format.formatter -> Mdata.S.Identifiable.t -> unit
val pp_descr : Format.formatter -> Mdata.S.Identifiable.t -> unit
end
module type Registry =
sig
type t
val define : Mdata.S.Registry.t -> unit
val get_definition : Mdata.S.Registry.t -> F.pred Formula.declaration
val on_definition :
(Mdata.S.Registry.t -> 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 -> 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
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 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 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 -> Mdata.S.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
module Findex :
sig
type t = Cil_types.fieldinfo
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 = Cil_types.varinfo
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 = Cil_types.varinfo
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 = 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
val get_ind : t -> integer
end
val modulo : Ctypes.c_int -> Mdata.S.integer -> Mdata.S.integer
val guard : Ctypes.c_int -> Mdata.S.integer -> F.pred
val i_convert :
Ctypes.c_int -> Ctypes.c_int -> Mdata.S.integer -> Mdata.S.integer
val round : Ctypes.c_float -> Mdata.S.real -> Mdata.S.real
val f_guard : Ctypes.c_float -> Mdata.S.real -> F.pred
val f_convert :
Ctypes.c_float -> Ctypes.c_float -> Mdata.S.real -> Mdata.S.real
val has_type : Mdata.S.abstract -> Cil_types.logic_type -> F.pred
val get_range_index : Mdata.S.array -> Mdata.S.interval -> Mdata.S.abstract
val set_range_index : Mdata.S.array -> Mdata.S.interval -> Mdata.S.array
val empty : Mdata.S.set
val singleton : Mdata.S.abstract -> Mdata.S.set
val union : Mdata.S.set -> Mdata.S.set -> Mdata.S.set
val unions : Mdata.S.set list -> Mdata.S.set
val inter : Mdata.S.set -> Mdata.S.set -> Mdata.S.set
val remove : Mdata.S.set -> Mdata.S.set -> Mdata.S.set
val set_of_list : Mdata.S.abstract list -> Mdata.S.set
val add_set : Mdata.S.set -> Mdata.S.set -> Mdata.S.set
val mult_set : Mdata.S.set -> Mdata.S.set -> Mdata.S.set
val neg_set : Mdata.S.set -> Mdata.S.set
val interval : Mdata.S.interval -> Mdata.S.set
val equal_pointer_bool :
Mdata.S.pointer -> Mdata.S.pointer -> Mdata.S.boolean
val lt_pointer_bool : Mdata.S.pointer -> Mdata.S.pointer -> Mdata.S.boolean
val le_pointer_bool : Mdata.S.pointer -> Mdata.S.pointer -> Mdata.S.boolean
val lt_pointer : Mdata.S.pointer -> Mdata.S.pointer -> F.pred
val le_pointer : Mdata.S.pointer -> Mdata.S.pointer -> F.pred
val minus_pointer : Mdata.S.pointer -> Mdata.S.pointer -> Mdata.S.integer
val is_null : Mdata.S.pointer -> Mdata.S.boolean
val null : Mdata.S.pointer
val tau_of_object : Ctypes.c_object -> Formula.tau
val tau_of_ctype : Cil_types.typ -> Formula.tau
val int_format : Mdata.S.format
val real_format : Mdata.S.format
val pointer_format : Mdata.S.format
val record_format : Mdata.S.format
val urecord_format : Mdata.S.format
val array_format : Mdata.S.format -> Mdata.S.format
val format_of_object : Ctypes.c_object -> Mdata.S.format
val decode : Mdata.S.format -> Mdata.S.abstract -> 'a F.term
val encode : Mdata.S.format -> 'a F.term -> Mdata.S.abstract
val acc_field : Mdata.S.record -> Cil_types.fieldinfo -> Mdata.S.abstract
val upd_field :
Mdata.S.record ->
Cil_types.fieldinfo -> Mdata.S.abstract -> Mdata.S.record
val acc_index : Mdata.S.array -> Mdata.S.integer -> Mdata.S.abstract
val upd_index :
Mdata.S.array -> Mdata.S.integer -> Mdata.S.abstract -> Mdata.S.array
val equal :
Ctypes.c_object -> Mdata.S.abstract -> Mdata.S.abstract -> F.pred
val eq_array : Ctypes.arrayinfo -> Mdata.S.array -> Mdata.S.array -> F.pred
val eq_record :
Cil_types.compinfo -> Mdata.S.record -> Mdata.S.record -> F.pred
end