Documentation

Lean.Meta.Sym.Reduce

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.

Beta-reduces e when its head is a lambda.

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    Zeta-reduces the let/have telescope e: let x := v; b[x] becomes b[v].

    Equations
    Instances For
      def Lean.Meta.Sym.reduceZetaDelta? (e : Expr) (unfold : FVarId → Bool := fun (x : FVarId) => true) :

      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.
        Instances For

          Iota-reduces a match or recursor application whose discriminants are constructors.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For