lean4-htt/tests/lean/run/dsimp1.lean
Joachim Breitner 0e49576fe4
feat: guard_msgs to treat trace messages separate (#8267)
This PR makes `#guard_msgs` to treat `trace` messages separate from
`info`, `warning` and `error`. It also introduce the ability to say
`#guard_msgs (pass info`, like `(drop info)` so far, and also adds
`(check info)` as the explicit form of `(info)`, for completeness.

Fixes #8266
2025-05-09 05:44:34 +00:00

38 lines
749 B
Text

def Nat.isZero (x : Nat) : Bool :=
match x with
| 0 => true
| _+1 => false
axiom P : Bool → Prop
axiom P_false : P false
/--
trace: x : Nat
⊢ P (1 + x).isZero
-/
#guard_msgs in
example (x : Nat) : P (1 + id x.succ.pred).isZero := by
dsimp
trace_state
simp [Nat.succ_add]
dsimp [Nat.isZero]
apply P_false
example (x : Nat) : P (id x.succ.succ).isZero := by
dsimp [Nat.isZero]
apply P_false
example (x : Nat) : P (id x.succ.succ).isZero := by
dsimp [Nat.isZero.eq_2]
apply P_false
example (x : Nat) : P (id x.succ.succ).isZero := by
dsimp!
apply P_false
@[simp] theorem isZero_succ (x : Nat) : (x + 1).isZero = false :=
rfl
theorem ex1 (x : Nat) : P (id x.succ.succ.pred).isZero := by
dsimp
apply P_false