Astral_internal.BaseLogicmodule Variable : sig ... endmodule Sort = Sortmodule Application : sig ... endtype t = | Variable of Variable.t| Application of Application.t * t Stdlib.List.t| Binder of binder * Variable.t Stdlib.List.t * tand range = t Stdlib.List.t Stdlib.Lazy.tmodule Binder : sig ... endval get_sort : t -> Variable.Sort.tval show_with_sort : t -> stringval is_quantifier_free : t -> boolmodule Self : sig ... endinclude sig ... endval pp : Stdlib.Format.formatter -> Self.t -> unitval print : ?prefix:string -> Self.t -> unitval show_option : Self.t option -> stringval print_option : ?prefix:string -> Self.t option -> unitval dump : string -> Self.t -> unitval show_list : ?separator:string -> Self.t list -> stringval pp_list : Stdlib.Format.formatter -> Self.t list -> unitval print_list : ?separator:string -> ?prefix:string -> Self.t list -> unitval is_var : t -> boolval is_atom : t -> boolval is_constant : t -> boolval mk_var : string -> Variable.Sort.t -> tval mk_fresh_var : string -> Variable.Sort.t -> tval mk_app : Application.t -> t Stdlib.List.t -> tval mk_constant : Constant.t -> tval mk_binder : binder -> Variable.t Stdlib.List.t -> t -> tval of_var : Variable.t -> tval of_const : Constant.t -> tval to_constant : t -> Constant.tHigher-order function
val map_vars : (Variable.t -> t) -> t -> tval map_app : (Application.t -> t list -> t) -> t -> tval skolemisation : t -> t * Variable.t listTODO: works only for SL (not implication etc.)
Predicates
val for_all_apps : (Application.t -> bool) -> t -> boolVariables & terms
val get_vars : t -> Variable.t listval free_vars : t -> Variable.t listval bound_vars : t -> Variable.t listval free_vars_of_sort : Variable.Sort.t -> t -> Variable.t listval is_ground : ground:Variable.t list -> t -> boolval is_ground' : forbidden:Variable.t list -> t -> boolSubformulae
val positive_polarity : 'a -> Self.t -> boolSubstitutions
val substitute : t -> var:Variable.t -> by:t -> tval substitute_list : t -> vars:Variable.t list -> by:t list -> tval get_sort_in_term : Stdlib.String.t -> t -> Variable.Sort.tConstructors
exception TypeError of type_errorval check_type_prop :
what:string ->
expects:string ->
(Variable.Sort.t -> bool) ->
t ->
unitval check_same_type : what:string -> t list -> unitval mk_smart_app_aux :
Application.t ->
Self.t option ->
Self.t option ->
Self.t list ->
Self.tval mk_smart_app :
Application.t ->
?neutral:Self.t ->
?anihilator:Self.t ->
Self.t Stdlib.List.t ->
Self.tmodule DefaultVars : sig ... endmodule Boolean0 : sig ... endmodule Equality : sig ... endmodule Boolean : sig ... endmodule Enumeration : sig ... endmodule Arithmetic : sig ... endmodule Sets : sig ... endmodule Array : sig ... endmodule Bitvector : sig ... endmodule Quantifiers : sig ... endmodule SeparationLogic : sig ... endTODO
Higher-order functions
val exists_app : (Application.t -> bool) -> t -> boolOthers
val size : t -> intPrinting and conversions
val declare_var : Variable.t -> stringval header :
'a ->
t ->
string option ->
[< `Sat | `Unknown | `Unsat ] option ->
string option ->
stringval binder_var : Variable.t -> Sexplib.Sexp.ttype sexp_action = | App of string| Direct of Sexplib.Sexp.t list -> Sexplib.Sexp.t| Modify of string * t list| Skipval app_to_sexp : Application.t -> t list -> sexp_actionval to_sexp : t -> Sexplib.Sexp.tval to_smt2 : t -> stringval to_sexp_aux : t -> stringmodule U = UnicodeSymbolsmodule Vertex : sig ... endmodule Edge : sig ... endInteger as edge labels should ensure that children are sorted as intended.
module G : sig ... endval edge_label : G.E.t -> stringmodule DotConfig : sig ... endmodule Dot : sig ... endtype ast = G.tPretty application
val fold_heap_term : MemoryModel.Field.t -> ?n:int -> Self.t -> actionTODO:
val output_ast : string -> DotConfig.t -> unit