This PR ensures users can select the "minimal indexable subexpression" condition in `grind` parameters. Example, they can now write `grind [! -> thmName]`. `grind?` will include the `!` modifier whenever users had used `@[grind!]`. This PR also fixes a missing case in the new pattern inference procedure. It also adjusts some `grind` annotations and tests in preparation for setting the new pattern inference heuristic as the new default.
17 lines
492 B
Text
17 lines
492 B
Text
module
|
|
opaque q : Nat → Prop
|
|
opaque p : Nat → Prop
|
|
|
|
attribute [grind symbol default] HAdd.hAdd
|
|
|
|
/-- info: foo: [@HAdd.hAdd `[Nat] `[Nat] `[Nat] `[instHAdd] #6 #5] -/
|
|
#guard_msgs (info) in
|
|
@[grind!? =>] theorem foo (x y : Nat) : x + y < 10 → q x → p x → p y → q y → x = y := by
|
|
sorry
|
|
|
|
attribute [grind symbol high] p
|
|
|
|
/-- info: bla: [p #6, p #5] -/
|
|
#guard_msgs (info) in
|
|
@[grind? =>] theorem bla (x y : Nat) : x + y < 10 → q x → p x → p y → q y → x = y := by
|
|
sorry
|