Module Gil_syntax.Asrt
val atom_to_yojson : atom -> Yojson.Safe.tval atom_of_yojson : Yojson.Safe.t -> atom Ppx_deriving_yojson_runtime.error_ortype t = atom listval to_yojson : t -> Yojson.Safe.tval of_yojson : Yojson.Safe.t -> t Ppx_deriving_yojson_runtime.error_orPrefix encoding a user-defined predicate as a CorePred name. Set once; never hardcode it elsewhere.
user_pred_name p is the core-predicate name encoding user predicate p.
as_user_pred_name s is Some p when s encodes the user predicate p, and None when s is a genuine core predicate.
pred name ins outs builds a user-predicate assertion atom.
Prefix and separator encoding a magic wand lname(..) -* rname(..) as a CorePred name wand_prefix ^ lname ^ wand_sep ^ rname. Set once; never hardcode elsewhere.
wand_name lname rname is the core-predicate name encoding the wand lname(..) -* rname(..).
as_wand_name s is Some (lname, rname) when s encodes a magic wand, and None otherwise.
wand (lname, largs) (rname, r_ins) r_outs builds a magic-wand assertion atom. A wand's semantic ins are largs @ r_ins and its outs are r_outs (only the rhs out-arguments); these are stored as the CorePred's ins and outs respectively.
val as_wand :
rhs_ins_number:int ->
atom ->
((string * Expr.t list) * (string * Expr.t list)) optionas_wand ~rhs_ins_number a recovers Some (lhs, rhs) when a is a wand-encoding CorePred, and None otherwise. rhs_ins_number is the number of in-parameters of the rhs predicate, needed to split the stored ins back into largs and r_ins.
Effect looking up a predicate's number of in-parameters. Performed by the wand printer; handled by Engine.MP.with_pred_table.
pred_ins_number name performs Pred_ins_number, returning None when no handler (predicate table) is installed.
val lvars : t -> Utils.Prelude.SS.tGet all the logical variables in a
val pvars : t -> Utils.Prelude.SS.tGet all the program variables in a
val alocs : t -> Utils.Prelude.SS.tGet all the abstract locations in a
val clocs : t -> Utils.Prelude.SS.tGet all the concrete locations in a
val locs : t -> Utils.Prelude.SS.tGet all locations in a
val pred_names : t -> string listReturns a list with the names of the predicates that occur in a
val is_pure_asrt : atom -> boolCheck if a is a pure assertion
Eliminate Emp assertions. Pure assertions are converted to a single formula. This function expects its argument to be a PURE assertion.
val pp : Stdlib.Format.formatter -> t -> unitPretty-printer
val pp_atom : Stdlib.Format.formatter -> atom -> unitval full_pp : Stdlib.Format.formatter -> t -> unitFull pretty-printer
val pp_atom_full : Stdlib.Format.formatter -> atom -> unitsubst_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