apply?
apply?
は,カレントゴールを apply
や refine
で変形することができないか,ライブラリから検索して提案してくれるタクティクです.
複数の候補が提案されたときは,どれを選ぶとゴールが何に変わるのか表示されるので,その中から好ましいものを選ぶと良いでしょう.
import Mathlib.Algebra.Algebra.Basic -- 群を使うのに必要
import Mathlib.Tactic.Says -- `says` を使うのに必要
set_option says.verify true
variable (G H : Type)
/-- 群順同型が積を保つという定理 -/
example [Group G] [Group H] (f : G →* H) (a b : G) :
f (a * b) = f a * f b := by
-- `exact MonoidHom.map_mul f a b` を提案してくれる
apply? says exact MonoidHom.map_mul f a b
補足
apply?
はあくまで証明を書くときに補助として使うものです.
sorry
と同じように,清書した証明に残してはいけません.
sorry
と同じと言いましたが,実際 apply?
は sorryAx
を裏で使用します.
theorem T (x y : Nat) (_: x ≤ y) : 8 ^ x ≤ 16 ^ y := by
apply?
-- `apply?` しただけで `done` が通り,示せているように見える
done
/-- info: 'T' depends on axioms: [propext, sorryAx] -/
#guard_msgs in #print axioms T