lean4-htt/tests/lean/run/cdotAtSimpArg.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

66 lines
1.2 KiB
Text

/-! Test `·` being able to refer to constants in `simp` -/
example : ¬ true = false := by
simp [(¬ ·)]
/-! Test `binop%` -/
/--
trace: y x : Nat
h : y = 0
⊢ Add.add x y = x
-/
#guard_msgs in
example (h : y = 0) : x + y = x := by
simp [(.+.)] -- Expands `HAdd.hAdd
trace_state
simp [Add.add]
simp [h, Nat.add]
done
/--
trace: y x : Nat
h : y = 0
⊢ Add.add x y = x
-/
#guard_msgs in
example (h : y = 0) : x + y = x := by
simp [.+.]
trace_state
simp [Add.add]
simp [h, Nat.add]
done
/-! Test `binop%` variant `rightact%` as well -/
/--
error: unsolved goals
x y : Nat
⊢ Pow.pow x y = Pow.pow y x
-/
#guard_msgs in
example (x y : Nat) : x ^ y = y ^ x := by
simp only [.^.]
def f (n m : Nat) : Nat := n + m
macro "ff" t1:term:arg t2:term:arg : term => `(f $t2 $t1)
/--
error: unsolved goals
x y : Nat
⊢ [x + y, y + x].sum > 0
-/
#guard_msgs in
example (x y : Nat) : [f x y, ff x y].sum > 0 := by
simp only [ff · ·] -- NB: ff is syntax, this unfolds also f
/--
error: unsolved goals
x y : Nat
⊢ List.Mem x [x]
-/
#guard_msgs in
example (x y : Nat) : x ∈ [x] := by
simp only [· ∈ ·] -- syntax has arguments swapped, see #5905