Whether a base rewrite applies anywhere in the term: at the root, or recursively in a sexp
argument or a Subst component.
Equations
- MeTTaIL.hasRedex p (MeTTaIL.AST.var x_1) = !(MeTTaIL.baseReducts p (MeTTaIL.AST.var x_1)).isEmpty
- MeTTaIL.hasRedex p (MeTTaIL.AST.sexp l args) = (!(MeTTaIL.baseReducts p (MeTTaIL.AST.sexp l args)).isEmpty || MeTTaIL.hasRedexList p args)
- MeTTaIL.hasRedex p (b.subst r v) = (!(MeTTaIL.baseReducts p (b.subst r v)).isEmpty || MeTTaIL.hasRedex p b || MeTTaIL.hasRedex p r)
Instances For
Whether any element of the list has a redex.
Equations
- MeTTaIL.hasRedexList p [] = false
- MeTTaIL.hasRedexList p (a :: as) = (MeTTaIL.hasRedex p a || MeTTaIL.hasRedexList p as)
Instances For
Completeness: the executable reducer succeeds exactly when a base redex exists.
List version of completeness.
IsNormal means exactly that no base rewrite applies anywhere in the term.