Gil_syntax.Asrt
GIL Assertions
type t =
| Emp
Empty heap
*)| Star of t * t
Separating conjunction
*)| Pred of string * Expr.t list
Predicates
*)| Pure of Formula.t
Pure formula
*)| Types of (Expr.t * Type.t) list
Typing assertion
*)| GA of string * Expr.t list * Expr.t list
Core assertion
*)| Wand of {
}
Magic wand of the form P(...) -* Q(...)
val to_yojson : t -> Yojson.Safe.t
val of_yojson : Yojson.Safe.t -> t Ppx_deriving_yojson_runtime.error_or
val map :
(t -> t * bool) option ->
(t -> t) option ->
(Expr.t -> Expr.t) option ->
(Formula.t -> Formula.t) option ->
t ->
t
val list_lexprs : t -> Gil_syntax.Expr.Set.t
Get all the logical expressions of a
that denote a list and are not logical variables
val lvars : t -> Utils.Prelude.SS.t
Get all the logical variables in a
val pvars : t -> Utils.Prelude.SS.t
Get all the program variables in a
val alocs : t -> Utils.Prelude.SS.t
Get all the abstract locations in a
val clocs : t -> Utils.Prelude.SS.t
Get all the concrete locations in a
val locs : t -> Utils.Prelude.SS.t
Get all locations in a
val pred_names : t -> string list
Returns a list with the names of the predicates that occur in a
val is_pure_asrt : t -> bool
Check if a
is a pure assertion
val is_pure_non_rec_asrt : t -> bool
Check if a
is a pure assertion & non-recursive assertion. It assumes that only pure assertions are universally quantified
Eliminate LStar and LTypes assertions. LTypes disappears. LStar is replaced by LAnd. This function expects its argument to be a PURE assertion.
val pp : Stdlib.Format.formatter -> t -> unit
Pretty-printer
val full_pp : Stdlib.Format.formatter -> t -> unit
Full pretty-printer
subst_clocs subst a
Substitutes expressions of the form Lit (Loc l)
with subst l
in a
subst_expr_for_expr ~to_subst ~subst_with a
substitutes every occurence of the expression to_subst
with the expression subst_with
in a
module Infix : sig ... end