module type S =sig
..end
include Mlogic.S
val update_at_label : frame -> Clabels.c_label -> D.F.pred -> D.F.pred
update_at_label frame l p
binds free variables in p
representing
the state at label l
to the current memory.
It updates the memory-map frame
such that now the current memory in p
becomes the memory state at label l
.
val quantify_at_label : frame -> Clabels.c_label -> D.F.pred -> D.F.pred
quantify_at_label frame l p
quantifies the free variables in p
representing the state at label l
to the current memory.
It generalize the goal up-to the state at label l
.
val subst_lval : frame -> Ctypes.c_object -> loc -> value -> D.F.pred -> D.F.pred
subst_lval frame l te v p
binds in p
the free variables
representing the value at location l
in the current memory to
the actual value v
.
It updates the memory-map frame
such that now the current memory in p
has been updated by storing v
at l
.
val subst_result : frame -> value option -> D.F.pred -> D.F.pred
subst_result frame v p
bind the free variable representing
\result
in to an actual value.
In some cases, we don't know how to compute the returned value, the function then have to behave like an 'havoc'.
It updates the memory-map frame
such that the \result
of the
function has been bound to its value v
by a return
statement.
val subst_havoc : frame -> loc D.assigned -> D.havoc list
zone
.
Actually, subst_havoc must no do the substitution it-self to avoid
any variable capture un region. Rather, subst_havoc
should returns the
list of substitutions to be applied modulo alpha-conversion.assigns_goal frame L1 region L2
returns a predicates
establishing the assigns clause region
with dependencies depends
.L1
is the label before of the execution of the assigning statement.L2
is the label after of the execution of the assigning statement.val assigns_goal : frame ->
Clabels.c_label -> loc D.assigned list -> Clabels.c_label -> D.F.pred
val assigns_supported : bool
type
m_dzone
typedzone =
m_dzone D.F.term
val tau_of_dzone : Formula.tau
val dzone_assigned : loc D.assigned -> dzone
val dzone_subset : dzone -> dzone -> D.F.pred
val dzone_union : dzone -> dzone -> dzone
val dzone_empty : unit -> dzone
val effect_supported : bool
type
region
val pp_region : Format.formatter -> region -> unit
val region_assigned : loc D.assigned -> region
val region_empty : unit -> region
val region_union : region -> region -> region
val region_included : region -> region -> D.F.pred
val region_separated : region -> region -> D.F.pred
val region_fingerprint : D.F.pool -> region -> D.F.var list * D.F.pred * region
val region_supported : bool
val local_scope : frame -> Cil_types.varinfo list -> Mcfg.scope -> D.F.pred -> D.F.pred
local_scope m l
transforms the predicate p
at the
enter-point of a block or function that
declares the local variables in the list. It is time to add
hypotheses about those local variables.