Logtk.OrderingSourceTerm orderings are well-founded orderings on terms, that (usually) have some nice properties for Superposition, such as being total on ground terms, stable by substitution, and stable by context (monotonic).
We provide several classic orderings, such as RPO and KBO.
Partial ordering on terms
Compare two terms using the given ordering
Returns false for two terms t and s if for any ground substitution θ the ordering of tθ vs sθ cannot change when appending arguments. This function is allowed to overapproximate, i.e. we get no information if it returns true.
Is the ordering fully monotonic? Is it in particular compatible with arguments, i.e., t > s ==> t a > s a
Current precedence
include Interfaces.PRINT with type t := tAn ordering is a partial ordering on terms. Several implementations are simplification orderings (compatible with substitution, with the subterm property, and monotonic), some other are not.
Knuth-Bendix simplification ordering (Blanchette's lambda-free higher-order version)
Blanchette's lambda-free higher-order KPO with argument coefficients
Efficient implementation of RPO (recursive path ordering) (Blanchette's lambda-free higher-order version)
Choose ordering by name among registered ones, or
Register a new ordering, which can depend on a precedence. The name must not be registered already.