Delab checking canonicity.
Provides a series of monadic functions in DelabM for delaborating expressions differently
if their given instances differ (by definitional equality) with what is synthesized.
Synthesized instances are considered 'canonical' for this purpose.
Returns true iff the given instance is defeq to the instance synthesized for its type, and
returns false otherwise (including if instance synthesis fails).
Equations
- One or more equations did not get rendered due to their size.
Instances For
When the delab reader is pointed at an expression for an instance, returns (true, t)
iff instance synthesis succeeds and produces a defeq instance; otherwise returns (false, t).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Delaborate an expression with arity arity into a unary notation mkStx iff the argument
arg is a non-canonical instance (is not defeq to what is synthesized for its type, or else
instance synthesis fails).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Delaborate an expression with arity arity into a binary notation mkStx iff either
argument arg₁ or arg₂ are non-canonical instances (are not defeq to what is synthesized for
its type, or else instance synthesis fails).
Equations
- One or more equations did not get rendered due to their size.