lean4-htt/tests/lean/run/1234.lean
Alok Singh 949cf69246
chore: use backticks for sorry in diagnostic messages (#11608)
This PR changes the "declaration uses 'sorry'" warning to use backticks
instead of single quotes, consistent with Lean's conventions for
formatting code identifiers in diagnostic messages.
2025-12-15 14:30:21 +00:00

127 lines
3.1 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.

axiom testSorry : α
theorem le_of_not_lt {a b : Nat} (_: ¬ a < b): b ≤ a := testSorry
theorem lt_of_succ_lt (_: a + 1 < b): a < b := testSorry
theorem succ_pred_eq_of_pos (_: 0 < v): v - 1 + 1 = v := testSorry
set_option trace.Meta.Tactic.simp true
set_option linter.unusedSimpArgs false
--set_option trace.Debug.Meta.Tactic.simp true
set_option Elab.async false -- for stable message ordering in #guard_msgs
/--
warning: declaration uses `sorry`
---
trace: [Meta.Tactic.simp.rewrite] h₁:1000:
k ≤ v - 1
==>
True
[Meta.Tactic.simp.discharge] succ_pred_eq_of_pos discharge ✅️
0 < v
[Meta.Tactic.simp.rewrite] h₂:1000:
0 < v
==>
True
[Meta.Tactic.simp.rewrite] succ_pred_eq_of_pos:1000:
v - 1 + 1
==>
v
[Meta.Tactic.simp.rewrite] ite_true:1000:
if True then ⟨v, ⋯⟩ else ⟨v - 1, ⋯⟩
==>
⟨v, ⋯⟩
[Meta.Tactic.simp.rewrite] eq_self:1000:
⟨v, ⋯⟩ = ⟨v, ⋯⟩
==>
True
-/
#guard_msgs in
example (h₁: k ≤ v - 1) (h₂: 0 < v):
(if k ≤ v - 1 then Fin.mk (v-1+1) sorry else Fin.mk (v-1) sorry) = Fin.mk v sorry (n:=n) := by
simp only [
h₁, h₂,
ite_true,
succ_pred_eq_of_pos
----------------
, le_of_not_lt
, lt_of_succ_lt
]
-- it works
/--
warning: declaration uses `sorry`
---
trace: [Meta.Tactic.simp.rewrite] h₁:1000:
k ≤ v - 1
==>
True
[Meta.Tactic.simp.discharge] succ_pred_eq_of_pos discharge ✅️
0 < v
[Meta.Tactic.simp.rewrite] h₂:1000:
0 < v
==>
True
[Meta.Tactic.simp.rewrite] succ_pred_eq_of_pos:1000:
v - 1 + 1
==>
v
[Meta.Tactic.simp.rewrite] ite_true:1000:
if True then ⟨v, ⋯⟩ else ⟨v - 1, ⋯⟩
==>
⟨v, ⋯⟩
[Meta.Tactic.simp.rewrite] eq_self:1000:
⟨v, ⋯⟩ = ⟨v, ⋯⟩
==>
True
-/
#guard_msgs in
example (h₁: k ≤ v - 1) (h₂: 0 < v):
(if k ≤ v - 1 then Fin.mk (v-1+1) sorry else Fin.mk (v-1) sorry) = Fin.mk v sorry (n:=n) := by
simp (config := { memoize := false}) only [
h₁, h₂,
ite_true,
succ_pred_eq_of_pos
----------------
, le_of_not_lt
, lt_of_succ_lt
]
/--
warning: declaration uses `sorry`
---
trace: [Meta.Tactic.simp.rewrite] h₁:1000:
k ≤ v - 1
==>
True
[Meta.Tactic.simp.discharge] succ_pred_eq_of_pos discharge ✅️
0 < v
[Meta.Tactic.simp.rewrite] h₂:1000:
0 < v
==>
True
[Meta.Tactic.simp.rewrite] succ_pred_eq_of_pos:1000:
v - 1 + 1
==>
v
[Meta.Tactic.simp.rewrite] ite_true:1000:
if True then ⟨v, ⋯⟩ else ⟨v - 1, ⋯⟩
==>
⟨v, ⋯⟩
[Meta.Tactic.simp.rewrite] eq_self:1000:
⟨v, ⋯⟩ = ⟨v, ⋯⟩
==>
True
-/
#guard_msgs in
example (h₁: k ≤ v - 1) (h₂: 0 < v):
(if k ≤ v - 1 then Fin.mk (v-1+1) sorry else Fin.mk (v-1) sorry) = Fin.mk v sorry (n:=n) := by
simp only [
h₁, h₂,
ite_true,
succ_pred_eq_of_pos
----------------
--, le_of_not_lt
--, lt_of_succ_lt
]