lean4-htt/tests/lean/run/6065.lean
Leonardo de Moura fc4305ab15
fix: nontermination when generating the match-expression splitter theorem (#6146)
This PR fixes a non-termination bug that occurred when generating the
match-expression splitter theorem. The bug was triggered when the proof
automation for the splitter theorem repeatedly applied `injection` to
the same local declaration, as it could not be removed due to forward
dependencies. See issue #6065 for an example that reproduces this issue.

closes #6065
2024-11-21 17:20:33 +00:00

25 lines
533 B
Text

def foo (r : Nat) : Nat :=
match r with
| Nat.zero => 0
| l@(Nat.succ _) =>
match l with
| 0 => 0
| Nat.succ ll =>
match ll with
| Nat.succ _ => 0
| _ => 0
example {r : Nat} : foo r = 0 := by
simp only [foo.eq_def]
guard_target =ₛ
(match r with
| Nat.zero => 0
| l@h:(Nat.succ n) =>
match l, h with
| 0, h => 0
| Nat.succ ll, h =>
match ll, h with
| Nat.succ n_1, h => 0
| x, h => 0) =
0
sorry