AltErgoLib.ExprData structures
type binders = (Ty.t * int) Symbols.Map.tand semantic_trigger = | Interval of t * Symbols.bound * Symbols.bound| MapsTo of Var.t * t| NotTheoryConst of t| IsTheoryConst of t| LinearDependency of t * tand trigger = {content : t list;semantic : semantic_trigger list;hyp : t list;t_depth : int;from_user : bool;guard : t option;}type subst = t Symbols.Map.t * Ty.substdifferent views of an expression
pretty printing
val print : Format.formatter -> t -> unitval print_list : Format.formatter -> t list -> unitval print_list_sep : string -> Format.formatter -> t list -> unitval print_triggers : Format.formatter -> trigger list -> unitComparison and hashing functions
val hash : t -> intval uid : t -> intval compare_quant : quantified -> quantified -> intSome auxiliary functions
val free_vars : t -> (Ty.t * int) Symbols.Map.t -> (Ty.t * int) Symbols.Map.tval is_ground : t -> boolval id : t -> intval size : t -> intval depth : t -> intval is_positive : t -> boolval is_fresh : t -> boolval is_fresh_skolem : t -> boolval is_int : t -> boolval is_real : t -> boolLabeling and models
val is_in_model : t -> boolval name_of_lemma : t -> stringval name_of_lemma_opt : t option -> stringval print_tagged_classes : Format.formatter -> Set.t list -> unitsmart constructors for terms
val vrai : tval faux : tval void : tval int : string -> tval real : string -> tsmart constructors for literals
val mk_builtin : is_pos:bool -> Symbols.builtin -> t list -> tsimple smart constructors for formulas
Substitutions
Subterms, and related stuff
sub_term acc e returns the acc augmented with the term and all its sub-terms. Returns the acc if e is not a term. Does not go through literals (except positive uninterpreted predicates application) and formulas
max_pure_subterms e returns the maximal pure terms of the given expression
returns the maximal terms of the given literal. Assertion failure if not a literal (should replace the assertion failure with a better error) *
returns the maximal ground terms of the given literal. Assertion failure if not a literal *
traverses a formula recursively and collects its atoms. Only ground atoms are kept if ~only_ground is true
traverses a formula recursively and collects its maximal ground terms
skolemization and other smart constructors for formulas *
val make_triggers :
t ->
binders ->
decl_kind ->
Util.matching_env ->
trigger listval resolution_triggers : is_back:bool -> quantified -> trigger listval mk_match : t -> (Typed.pattern * t) list -> tval skolemize : quantified -> ttype th_elt = {th_name : string;ax_name : string;ax_form : t;extends : Util.theories_extensions;axiom_kind : Util.axiom_kind;}val print_th_elt : Format.formatter -> th_elt -> unitval is_pure : t -> boolval const_term : t -> boolreturn true iff the given argument is a term without arguments