Astral_internal.SLmodule Variable : sig ... endmodule Term : sig ... endinclude Logic_sig.LOGIC
with type t := t
and type term := Term.t
and module Sort = Sort
and module Variable := Variablemodule Sort = Sortinclude Datatype_sig.PRINTABLE with type t := tinclude Datatype_sig.SHOW with type t := tval pp : Stdlib.Format.formatter -> t -> unitOutput to formatter
val print : ?prefix:string -> t -> unitOutput to stdout.
val show_option : t option -> stringval print_option : ?prefix:string -> t option -> unitval dump : string -> t -> unitDump to file given by filename
val show_list : ?separator:string -> t list -> stringval pp_list : Stdlib.Format.formatter -> t list -> unitval print_list : ?separator:string -> ?prefix:string -> t list -> unitinclude Datatype_sig.COMPARABLE with type t := tinclude Datatype_sig.COMPARISON with type t := tinclude Datatype_sig.COLLECTIONS with type t := tval hash : t -> intval of_var : Variable.t -> tval of_const : Constant.t -> tval is_ground : ground:Variable.t list -> t -> boolval is_ground' : forbidden:Variable.t list -> t -> boolTrue if the term does not contatin any of provided variables.
val show : t -> stringval get_vars : t -> Variable.t listReturn all variables, without duplicates.
val bound_vars : t -> Variable.t listval substitute : t -> var:Variable.t -> by:Term.t -> tval substitute_list : t -> vars:Variable.t list -> by:Term.t list -> tval size : t -> intval output_ast : string -> ast -> unitval to_smt2 : t -> stringHuman readable SMT-LIB string.
val to_sexp : t -> Sexplib.Sexp.tS-expression representation used to generate SMT-LIB string. Usefull when printing a formula embeded in a larger s-expr.
type pred_sigs := (string * Sort.t list) listtype view = | Emp| True| False| Pure of SMT.t| Eq of Term.t list| Distinct of Term.t list| PointsTo of Term.t * MemoryModel.StructDef.t * Term.t list| Predicate of string * Term.t list * MemoryModel.StructDef.t list| And of t list| Or of t list| Not of t| GuardedNeg of t * t| Ite of t * t * t| Exists of Variable.t list * t| Forall of Variable.t list * t| Star of t list| Septraction of t * tinclude Datatype_sig.COLLECTIONS with type t := tmodule Set : Datatype_sig.SET with type elt = tSet over type t
Monomorphic list over type t
module Map : Datatype_sig.MAP with type key = tPolymorphic map from t to 'a
module MonoMap
(Data : Datatype_sig.SHOW) :
Datatype_sig.MONO_MAP with type key = t and type data = Data.tMonomorphic map from t to Data.t
val nil : tCreate SL term consisting of a fresh location variable with given name.
val mk_pto_struct : Term.t -> MemoryModel.StructDef.t -> Term.t list -> tLow-level pointer constructor
Create a term representing points-to: x -> (y_0, ..., y_(n-1)).
This will create a points-to assertion using a structure definition named *tuple_n* with fields *f_0*, ..., *f_(n-1)*.
Create a term representing a pointer with a single target location.
val mk_predicate :
string ->
?structs:MemoryModel.StructDef.t list ->
Term.t list ->
tCreate an instance of an inductive predicate with given name. This instance can be parametrised by a list of structures. For example, Astral's built-in list-segment predicate can be parametrised by any structure with a single field with sort same as the sort of instantance's arguments.
val emp : tval tt : tval ff : tCreate a pure assertion as a separation logic formula. The input has to be of boolean sort.
Note that pure formula are satisfiable only on empty footprints. Thus, (pure true) is equivalent to emp.
val mk_exists : Variable.t list -> t -> tval mk_forall : Variable.t list -> t -> tval is_false : t -> boolval is_emp : t -> boolval is_pointer : t -> boolval is_spatial_atom : t -> boolval is_pure : t -> boolBoolean combination of (dis-)equalities over location variables.
val is_pure_smt : t -> boolNo location variables.
val is_atom : t -> boolval is_nil : t -> boolval is_predicate : t -> boolval is_atomic : t -> boolval is_symbolic_heap : t -> boolval is_symbolic_heap_entl : t -> boolval is_negation_free : t -> boolval is_positive : t -> boolval is_quantifier_free : t -> boolval is_low_level : t -> boolval show_fragment : fragment -> stringval as_pointer : t -> Term.t * MemoryModel.StructDef.t * Term.t listval get_fields : t -> MemoryModel.Field.t listval skolemisation : t -> t * Variable.t listval free_vars : ?with_nil:bool -> ?with_pure:bool -> t -> Variable.t listval free_vars_of_sort : Sort.t -> t -> Variable.t listval get_loc_terms : ?with_free_vars:bool -> t -> HeapSort.t -> Term.t listmodule Infix : sig ... endval as_quantified_symbolic_heap : t -> Variable.t list * t listval pointer_size : t -> int option