lean4-htt/tests/lean/interactive/incrementalCombinator.lean
Sebastian Ullrich 15636a347f
fix: induction incrementality on removal of extraneous case (#10679)
This PR fixes an issue where "Invalid alternative name" errors from
`induction` stick around after removing the offending alternative.
2025-10-07 08:24:41 +00:00

89 lines
1.7 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/-! Incremental reuse in combinator -/
def case (h : a b c) : True := by
cases h
case inr h =>
cases h
case inl =>
dbg_trace "c 0"
dbg_trace "c 1"
dbg_trace "c 2"
--^ sync
--^ insert: ".5"
/-!
`case` with multiple tags should *not* be accidentally incremental, leading to e.g. kernel errors.
-/
-- RESET
def case2 (h : a b c) : True := by
cases h
case inl | inr =>
skip
sorry
--^ sync
--^ insert: " "
--^ collectDiagnostics
-- RESET
def cdot (h : a b) : True := by
cases h
. dbg_trace "d 0"
dbg_trace "d 1"
dbg_trace "d 2"
--^ sync
--^ insert: ".5"
dbg_trace "d 3"
-- RESET
def have : True := by
dbg_trace "h 0"
have : True := by
dbg_trace "h 1"
dbg_trace "h 2"
--^ sync
--^ insert: ".5"
dbg_trace "h 3"
/-!
Updating the `have` header should update the unsolved goals position (and currently re-run the body)
-/
-- RESET
def spaceHave : True := by
have : True := by
--^ collectDiagnostics
--^ insert: " "
--^ collectDiagnostics
dbg_trace "sh"
-- RESET
def next : True := by
next =>
dbg_trace "n 0"
dbg_trace "n 1"
--^ sync
--^ insert: ".5"
-- RESET
def if : True := by
if h : True then
dbg_trace "i 0"
dbg_trace "i 1"
--^ sync
--^ insert: ".5"
else
skip
/-!
Removing an extraneous case should not stick around.
-/
-- RESET
example (n : Nat) : n = n := by
induction n with
| zero => simp
--v sync
--v delete: "| one => sorry"
| one => simp
| succ => simp
--^ collectDiagnostics