Module type Formula.Logic


module type Logic = sig .. end

module F: Formula.S 
type context 

Constrained Terms Construction


type bindings 
val closed : bindings
val close : bindings -> F.pred -> F.pred
val push : string -> F.pool -> bindings -> context
val pop : string -> context -> bindings
val kill : string -> context -> unit
val flush : string -> 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 -> Formula.kind -> F.var
val alpha : F.var -> F.var option
val pool : unit -> F.pool
val vkind_of_var : F.var -> Formula.kind
val has_context_vars : F.var list -> F.pred -> bool
val has_type : F.abstract -> Cil_types.logic_type -> F.pred
val is_comp : Cil_types.compinfo -> F.abstract -> F.pred
val is_array : Ctypes.arrayinfo -> F.abstract -> F.pred

Generalized substitutions


val apply : (F.var * F.var) list -> 'a F.term -> 'a F.term
val havoc_static : F.havoc list -> F.pred -> F.pred
val havoc_inductive : F.havoc list -> F.pred -> F.pred