78 lines
2 KiB
Text
78 lines
2 KiB
Text
opaque f : Nat → Nat
|
|
|
|
/--
|
|
error: the modifier `usr` is only relevant in parameters for `grind only`
|
|
-/
|
|
#guard_msgs (error) in
|
|
@[grind usr]
|
|
theorem fthm : f (f x) = f x := sorry
|
|
|
|
/-- info: [grind.ematch.pattern] fthm: [f #0] -/
|
|
#guard_msgs (info) in
|
|
set_option trace.grind.ematch.pattern true in
|
|
example : f (f (f x)) = f x := by
|
|
grind only [fthm]
|
|
|
|
/--
|
|
info: [grind.ematch.instance] fthm: f (f (f (f x))) = f (f (f x))
|
|
[grind.ematch.instance] fthm: f (f (f x)) = f (f x)
|
|
[grind.ematch.instance] fthm: f (f x) = f x
|
|
-/
|
|
#guard_msgs (info) in
|
|
set_option trace.grind.ematch.instance true in
|
|
example : f (f (f x)) = f x := by
|
|
grind only [fthm]
|
|
|
|
/--
|
|
info: [grind.ematch.instance] fthm: f (f x) = f x
|
|
[grind.ematch.instance] fthm: f (f (f x)) = f (f x)
|
|
-/
|
|
#guard_msgs (info) in
|
|
-- should not instantiate anything using pattern `f (f #0)`
|
|
set_option trace.grind.ematch.instance true in
|
|
example : f x = x := by
|
|
fail_if_success grind only [fthm]
|
|
sorry
|
|
|
|
/--
|
|
error: the modifier `usr` is only relevant in parameters for `grind only`
|
|
-/
|
|
#guard_msgs (error) in
|
|
example : f (f (f x)) = f x := by
|
|
grind [usr fthm]
|
|
|
|
/--
|
|
error: invalid use of `usr` modifier, `fthm` does not have patterns specified with the command `grind_pattern`
|
|
-/
|
|
#guard_msgs (error) in
|
|
example : f (f (f x)) = f x := by
|
|
grind only [usr fthm]
|
|
|
|
grind_pattern fthm => f (f x)
|
|
|
|
example : f (f (f x)) = f x := by
|
|
grind only [usr fthm]
|
|
|
|
#guard_msgs (info) in
|
|
-- should not instantiate anything using pattern `f (f #0)`
|
|
set_option trace.grind.ematch.instance true in
|
|
example : f x = x := by
|
|
fail_if_success grind only [usr fthm]
|
|
sorry
|
|
|
|
/--
|
|
info: [grind.ematch.instance] fthm: f (f x) = f x
|
|
[grind.ematch.instance] fthm: f (f (f x)) = f (f x)
|
|
-/
|
|
#guard_msgs (info) in
|
|
set_option trace.grind.ematch.instance true in
|
|
example : f x = x := by
|
|
fail_if_success grind only [fthm]
|
|
sorry
|
|
|
|
/--
|
|
error: the modifier `usr` is only relevant in parameters for `grind only`
|
|
-/
|
|
#guard_msgs (error) in
|
|
example : f (f (f x)) = f x := by
|
|
grind [usr fthm]
|