Evaluation #
Evaluate a type in an environment of values.
Note: we use as_aux_lemma pervasively to minimize the size of produced proof terms.
Evaluate a term in an environment of values.
Evaluate a type value in a new environment.
This operation is not commonly implemented in NbE variants.
We need it as an alternative to readback:
when having to produce a type closure from a type value,
instead of reading back and storing Clos.of_expr,
we store Clos.of_val.
However, that means we may later need to evaluate the stored value in a new environment,
and evalValTp does that.
Evaluate a term value in a new environment.
Evaluate a neutral term in a new environment.
Evaluate a type closure on an argument.
Evaluate a type closure on a fresh variable.
Evaluate a type closure on two arguments.
Evaluate a term closure on an argument.
Evaluate a term closure on a fresh variable.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Evaluate a type in the identity evaluation environment.
Equations
- SynthLean.evalTpId vΓ T = do let __discr ← SynthLean.evalTp q(«$vΓ».toEnv) q(«$T») match __discr with | ⟨vT, vTpost⟩ => pure ⟨vT, q(⋯)⟩
Instances For
Evaluate a term in the identity evaluation environment.
Equations
- SynthLean.evalTmId vΓ t = do let __discr ← SynthLean.evalTm q(«$vΓ».toEnv) q(«$t») match __discr with | ⟨vt, vtpost⟩ => pure ⟨vt, q(⋯)⟩