Ltree.SOutput signature of functor
Lambda abstraction over symbols, variables and sort of the types given. Values of the type cannot be constructed outside this module in order to maintain invariants about the data type.
and lambda = private (lambda_node, unit) Hashcons.hash_consedHashconsed lambda abstraction
and t = private (t_node, t_prop) Hashcons.hash_consedHashconsed abstract syntax term
Term over symbols, variables and sort of the types given where the topmost symbol is not a binding
This type must remain private, because construct does not check the invariants and would be a backdoor to construct unsafe terms.
val hash : t -> intHash function on terms
val tag : t -> intUnique identifier for term
Constructor for an existential quantification over an indexed free variable
Constructor for a universal quantification over an indexed free variable
val node_of_lambda : lambda -> lambda_nodeReturn the node of a hashconsed lamda abstraction
val tag_of_t : t -> intReturn the unique tag of a hashconsed term
Evaluate the term bottom-up and right-to-left. The evaluation function is called at each node of the term with the term being evaluated and the list of values computed for the subterms. Let bindings are lazily unfolded.
Tail-recursive bottom-up right-to-left map on the term
Not every subterm is a proper term, since the de Bruijn indexes are shifted. Therefore, the function f is called with the number of let bindings the subterm is under as first argument, so that the indexes can be adjusted in the subterm if necessary.
Return the top symbol of a term along with its subterms
If the top symbol of a term is a let binding, the binding is distributed over the subterms.
val has_quantifier : t -> boolReturns true if the term has quantifiers
Import a lambda abstraction into the hashcons table by rebuilding it bottom up
val pp_print_term : ?db:int -> Stdlib.Format.formatter -> t -> unitPretty-print a term
val print_term : ?db:int -> t -> unitPretty-print a term
val pp_print_lambda : ?db:int -> Stdlib.Format.formatter -> lambda -> unitPretty-print a lambda abstraction
val print_lambda : ?db:int -> lambda -> unitPretty-print a lambda abstraction