Equations
- Lean.Elab.Eqns.instInhabitedEqnInfoCore = { default := { declName := default, levelParams := default, type := default, value := default } }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lean.Elab.Eqns.simpMatch? mvarId = do let mvarId' ← Lean.Meta.Split.simpMatchTarget mvarId if (mvarId != mvarId') = true then pure (some mvarId') else pure none
Equations
- Lean.Elab.Eqns.simpIf? mvarId = do let mvarId' ← Lean.Meta.simpIfTarget mvarId true if (mvarId != mvarId') = true then pure (some mvarId') else pure none
Equations
- Lean.Elab.Eqns.splitMatch? mvarId declNames = Lean.commitWhenSome? do let target ← Lean.Meta.getMVarType' mvarId Lean.Elab.Eqns.splitMatch?.go mvarId declNames target ∅
Try to close goal using rfl
with smart unfolding turned off.
Equations
- One or more equations did not get rendered due to their size.
Eliminate namedPatterns
from equation, and trivial hypotheses.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Some of the hypotheses added by mkEqnTypes
may not be used by the actual proof (i.e., value
argument).
This method eliminates them.
Alternative solution: improve saveEqn
and make sure it never includes unnecessary hypotheses.
These hypotheses are leftovers from tactics such as splitMatch?
used in mkEqnTypes
.
Equations
- One or more equations did not get rendered due to their size.
Delta reduce the equation left-hand-side
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Apply whnfR
to lhs, return none
if lhs
was not modified
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lean.Elab.Eqns.instInhabitedUnfoldEqnExtState = { default := { map := default } }
Auxiliary method for mkUnfoldEq
. The structure is based on mkEqnTypes
.
mvarId
is the goal to be proved. It is a goal of the form
declName x_1 ... x_n = body[x_1, ..., x_n]
The proof is constracted using the automatically generated equational theorems.
We basically keep splitting the match
and if-then-else
expressions in the right hand side
until one of the equational theorems is applicable.
Equations
- One or more equations did not get rendered due to their size.
Generate the "unfold" lemma for declName
.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.