Documentation

Lean.Elab.Tactic.Do.Internal.VCGen.Reduce

SymM-level head-redex reducer used throughout VCGen.

Repeatedly reduces head redexes in e, cycling through the following reductions until no further progress is made:

  1. Beta: (fun x₁ ... xₘ => b) a₁ ... aₙb[a₁/x₁, aₘ/xₘ] aₘ₊₁ ... aₙ
  2. Iota: MyType.casesOn (MyType.ctor args) altsaltᵢ args (matcher/recursor applied to a constructor, at reducible transparency)
  3. Proj-reduction: ⟨a, b, c⟩.1a (kernel .proj nodes)
  4. Projection delta: Struct.field xx.5 (unfolds projection functions, progress only if followed by proj-reduction)

Returns none when no reduction was possible. Maintains maximal sharing via shareCommonInc.

Equations
Instances For