@@ -226,20 +226,19 @@ private def toCasesSubgoals (s : Array InductionSubgoal) (ctorNames : Array Name
226226 { ctorName := ctorName,
227227 toInductionSubgoal := s }
228228
229- partial def unifyEqs? (numEqs : Nat) (mvarId : MVarId) (subst : FVarSubst)
230- (caseName? : Option Name := none) (mayFail : Bool := false ) : MetaM (Option (MVarId × FVarSubst)) := withIncRecDepth do
229+ partial def unifyEqs? (numEqs : Nat) (mvarId : MVarId) (subst : FVarSubst) (caseName? : Option Name := none): MetaM (Option (MVarId × FVarSubst)) := withIncRecDepth do
231230 if numEqs == 0 then
232231 return some (mvarId, subst)
233232 else
234233 let (eqFVarId, mvarId) ← mvarId.intro1
235- if let some { mvarId, subst, numNewEqs } ← unifyEq? mvarId eqFVarId subst MVarId.acyclic caseName? (mayFail := mayFail) then
236- unifyEqs? (numEqs - 1 + numNewEqs) mvarId subst caseName? (mayFail := mayFail)
234+ if let some { mvarId, subst, numNewEqs } ← unifyEq? mvarId eqFVarId subst MVarId.acyclic caseName? then
235+ unifyEqs? (numEqs - 1 + numNewEqs) mvarId subst caseName?
237236 else
238237 return none
239238
240- private def unifyCasesEqs (numEqs : Nat) (subgoals : Array CasesSubgoal) (mayFail := false ) : MetaM (Array CasesSubgoal) :=
239+ private def unifyCasesEqs (numEqs : Nat) (subgoals : Array CasesSubgoal) : MetaM (Array CasesSubgoal) :=
241240 subgoals.filterMapM fun s => do
242- match (← unifyEqs? numEqs s.mvarId s.subst s.ctorName (mayFail := mayFail) ) with
241+ match (← unifyEqs? numEqs s.mvarId s.subst s.ctorName) with
243242 | none => pure none
244243 | some (mvarId, subst) =>
245244 return some { s with
@@ -259,7 +258,7 @@ private def inductionCasesOn (mvarId : MVarId) (majorFVarId : FVarId) (givenName
259258 let s ← mvarId.induction majorFVarId casesOn givenNames
260259 return toCasesSubgoals s ctors majorFVarId us params
261260
262- def cases (mvarId : MVarId) (majorFVarId : FVarId) (givenNames : Array AltVarNames := #[]) (useNatCasesAuxOn : Bool := false ) (mayLeaveEquations := false ) : MetaM (Array CasesSubgoal) := do
261+ def cases (mvarId : MVarId) (majorFVarId : FVarId) (givenNames : Array AltVarNames := #[]) (useNatCasesAuxOn : Bool := false ) : MetaM (Array CasesSubgoal) := do
263262 try
264263 mvarId.withContext do
265264 mvarId.checkNotAssigned `cases
@@ -278,7 +277,7 @@ def cases (mvarId : MVarId) (majorFVarId : FVarId) (givenNames : Array AltVarNam
278277 trace[Meta.Tactic.cases] "after generalizeIndices\n {MessageData.ofGoal s₁.mvarId}"
279278 let s₂ ← inductionCasesOn s₁.mvarId s₁.fvarId givenNames ctx
280279 let s₂ ← elimAuxIndices s₁ s₂
281- unifyCasesEqs s₁.numEqs s₂ (mayFail := mayLeaveEquations)
280+ unifyCasesEqs s₁.numEqs s₂
282281 catch ex =>
283282 throwNestedTacticEx `cases ex
284283
@@ -293,9 +292,8 @@ Apply `casesOn` using the free variable `majorFVarId` as the major premise (aka
293292 It enables using `Nat.casesAuxOn` instead of `Nat.casesOn`,
294293 which causes case splits on `n : Nat` to be represented as `0` and `n' + 1` rather than as `Nat.zero` and `Nat.succ n'`.
295294 -/
296- def _root_.Lean.MVarId.cases (mvarId : MVarId) (majorFVarId : FVarId)
297- (givenNames : Array AltVarNames := #[]) (useNatCasesAuxOn : Bool := false ) (mayLeaveEquations := false ) : MetaM (Array CasesSubgoal) :=
298- Cases.cases mvarId majorFVarId givenNames (useNatCasesAuxOn := useNatCasesAuxOn) (mayLeaveEquations := mayLeaveEquations)
295+ def _root_.Lean.MVarId.cases (mvarId : MVarId) (majorFVarId : FVarId) (givenNames : Array AltVarNames := #[]) (useNatCasesAuxOn : Bool := false ) : MetaM (Array CasesSubgoal) :=
296+ Cases.cases mvarId majorFVarId givenNames (useNatCasesAuxOn := useNatCasesAuxOn)
299297
300298/--
301299Keep applying `cases` on any hypothesis that satisfies `p`.
0 commit comments