lean4-htt/tests/lean/run/issue5828.lean
jrr6 62f14514da
refactor: update built-in tactic error messages (#9633)
This PR updates various error messages produced by or associated with
built-in tactics and adapts their formatting to current conventions.
2025-07-31 14:16:57 +00:00

109 lines
2.3 KiB
Text

axiom a : Nat
axiom b : Nat
axiom a_eq_b : a = b
axiom P : Nat → Nat → Prop
-- Warm-up: rewriting in the forward direction
/-- error: `simp` made no progress -/
#guard_msgs in example : P a b := by simp
attribute [simp] a_eq_b
/--
error: unsolved goals
⊢ P b b
-/
#guard_msgs in example : P a b := by simp
attribute [-simp] a_eq_b
/-- error: `simp` made no progress -/
#guard_msgs in example : P a b := by simp
-- Re-adding an attribute after [-simp] does not work, see
-- https://github.com/leanprover/lean4/issues/5868
attribute [simp] a_eq_b
/-- error: `simp` made no progress -/
#guard_msgs in example : P a b := by simp
-- so this test use new copies of `a_eq_b` for now
axiom a_eq_b_2 : a = b
attribute [simp ←] a_eq_b_2
/--
error: unsolved goals
⊢ P a a
-/
#guard_msgs in example : P a b := by simp
-- Removing the attribute works, no matter the direction
attribute [-simp] a_eq_b_2
/-- error: `simp` made no progress -/
#guard_msgs in example : P a b := by simp
-- Setting one should erase the other
axiom a_eq_b_3 : a = b
attribute [simp ←] a_eq_b_3
attribute [simp] a_eq_b_3
/--
error: unsolved goals
⊢ P b b
-/
#guard_msgs in example : P a b := by simp
-- The erasure is sticky:
attribute [simp ←] a_eq_b_3
/-- error: `simp` made no progress -/
#guard_msgs in example : P a b := by simp
axiom a_eq_b_4 : a = b
attribute [simp] a_eq_b_4
attribute [simp ←] a_eq_b_4
/--
error: unsolved goals
⊢ P a a
-/
#guard_msgs in example : P a b := by simp
-- Some more error conditions
axiom P_a : P a a
/--
error: Invalid `←` modifier: Cannot be applied to a rule that rewrites to `True`
Note: This simp theorem will rewrite `P a a` to `True`, which should not be applied in the reverse direction
-/
#guard_msgs in
attribute [simp ←] P_a
/--
error: Cannot add `simp` attribute to `P`: It is not a proposition nor a definition (to unfold)
Note: The `[simp]` attribute can be added to lemmas that should be automatically used by the simplifier and to definitions that the simplifier should automatically unfold
-/
#guard_msgs in
attribute [simp ←] P
/--
error: Invalid `←` modifier: `id` is a declaration name to be unfolded
Note: The simplifier will automatically unfold definitions marked with the `[simp]` attribute, but it will not "refold" them
-/
#guard_msgs in
attribute [simp ←] id