Definitional reduction steps #
Single reduction steps on maximally shared terms, shared by Sym.dsimp, Sym.simp, and the
grind normalizer. Each function returns none when the step does not apply, and a maximally
shared term otherwise. The input and the output are definitionally equal.
Zeta-reduces the let/have telescope e: let x := v; b[x] becomes b[v].
Equations
- Lean.Meta.Sym.reduceZeta? (Lean.Expr.letE declName type v b nondep) = do let __do_lift ← Lean.Meta.Sym.reduceZeta?.go✝ (Lean.Expr.letE declName type v b nondep) #[] pure (some __do_lift)
- Lean.Meta.Sym.reduceZeta? e = pure none
Instances For
Unfolds the let-bound free variable at the head of e, where e is the variable itself or an
application headed by it. The head position must be handled by the caller because the
simplifiers do not visit application heads. Beta-reduction of the exposed lambda is left to
reduceBeta?.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Reduces a projection function applied to a constructor, e.g. (a, b).1 to a.
Class projections are not reduced; instances are handled by instance synthesis.
Equations
- One or more equations did not get rendered due to their size.