lean4-htt/tests/lean/run/grind_set_config.lean
Leonardo de Moura d3c9056d2b
feat: support grind parameters in finish and finish? (#11012)
This PR ensures the `grind` tactics `finish` and `finish?` can take
parameters.
2025-10-29 20:51:48 +00:00

46 lines
1.2 KiB
Text

set_option warn.sorry false
opaque f : Nat → Nat
opaque g : Nat → Nat
theorem fax : f (x + 1) = g (f x) := sorry
example : f (x + 100) = a := by
grind -ring =>
set_config (gen := 15) -lia in
-- The following instantiations should not fail since we set
-- `gen` to 15
use [fax]; use [fax]; use [fax]; use [fax]; use [fax]
use [fax]; use [fax]; use [fax]; use [fax]; use [fax]
use [fax]; use [fax]; use [fax]; use [fax]; use [fax]
fail_if_success use [fax] -- should fail
fail_if_success have : 2*x ≠ 1 -- cutsat is disabled
set_config +lia in
have : 2*x ≠ 1
set_config (lia := false) in
fail_if_success have : 3*x ≠ 1
set_config (lia := true) in
have : 3*x ≠ 1
sorry
opaque foo : Nat → Nat
axiom fooAx1 : foo (x + 1) = foo x
axiom fooAx2 : foo 0 ≥ 10
example : foo 40 ≥ 5 := by
grind [fooAx1] =>
have := fooAx2
finish (gen := 50) (ematch := 50)
example : foo 10 ≥ 5 := by
grind [fooAx1] =>
have := fooAx2
finish? (gen := 10) (ematch := 10)
attribute [grind] fooAx2
example : foo 30 ≥ 5 := by
have := fooAx2
grind => finish (gen := 50) (ematch := 50) [fooAx1]
example : foo 30 ≥ 5 := by
have := fooAx2
grind => finish? (gen := 50) (ematch := 50) [fooAx1]