lean4-htt/tests/lean/simp_trace_backtrack.lean
Scott Morrison 20dd63aabf
chore: fix superfluous lemmas in simp.trace (#2923)
Fixes an issue reported on Zulip; see the test case.

* Modifies the `MonadBacktrack` instance for `SimpM` to also backtrack
the `UsedSimps` field.
* When calling the discharger, `saveState`, and then `restoreState` if
something goes wrong.

I'm not certain that it makes sense to restore the `MetaM` state if
discharging fails. I can easily change this to more conservatively just
backtrack the `UsedSimps` after failed discharging.
2023-12-11 23:51:31 +00:00

19 lines
717 B
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.

-- As reported at https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/simp.3F.20giving.20nonsense.20lemmas/near/403082483
universe u
-- {α : Type} works as expected, as does specializing this lemma for `Nat`.
@[simp]
theorem tsub_eq_zero_of_le {α : Type u} [LE α] [Sub α] [OfNat α 0] {a b : α} :
a ≤ b → a - b = 0 := by sorry
@[simp]
theorem ge_iff_le (x y : Nat) : x ≥ y ↔ y ≤ x := Iff.rfl
set_option tactic.simp.trace true
-- This used to report: `Try this: simp only [ge_iff_le, Nat.succ_sub_succ_eq_sub]`
-- because we were not backtracking the "used simps" when the discharger failed.
example {n : Nat} : n = 2 - (n + 1) := by
simp [Nat.succ_sub_succ_eq_sub]
sorry