Closed dwrensha closed 4 months ago
Minimised:
import Aesop
@[aesop 90%]
def myTacGen : Aesop.TacGen := fun _ => do
return #[("exact ⟨val - f { val := val, property := property }, fun a ha => by simpa⟩",
0.9)]
theorem foo2 (f : { x // 0 < x } → { x // 0 < x })
(val : Nat)
(property : 0 < val) :
∃ w x, ∀ (a : Nat) (b : 0 < a), ↑(f { val := a, property := b }) = w * a + x := by
constructor
aesop?
-- Try this:
-- exact ⟨val - f { val := val, property := property }, fun a ha => by simpa⟩
I expect
aesop?
to only suggest things that actually close the proof. However, here is an example where it returns something that fails:Try this: simp_all only [Subtype.forall, exists_and_left] unhygienic with_reducible aesop_destruct_products apply Exists.intro apply And.intro on_goal 2 => exact ⟨val - f { val := val, property := property }, fun a ha => by simpa⟩ exact property
This is with mathlib commit
8d0c6e6f821392660468fdce7c5463740d7988be
and aesop commit5fefb40a7c9038a7150e7edd92e43b1b94c49e79