hint

hint は複数のタクティクの中から提案を出してくれるタクティクです。デフォルトでは

の7つのタクティクを同時に試します。

  • ゴールを閉じることに成功したものは緑色で示され、
  • 進捗があったものはウィジェットに新しいゴールを示します。
import Mathlib.Tactic -- `hint` は検索を伴うので、おおざっぱに import している

variable (P Q R : Prop) (a b : ℕ)

/--
info: Try these:
• linarith
-/
#guard_msgs in
example (h : 1 < 0) : False := by
  hint

/--
info: Try these:
• exact h p
-/
#guard_msgs in
example (p : P) (h : P → Q) : Q := by
  hint

/--
info: Try these:
• simp_all only [and_self]
-/
#guard_msgs in
example (x : P ∧ Q ∧ R ∧ R) : Q ∧ P ∧ R := by
  hint

/--
info: Try these:
• linarith
-/
#guard_msgs in
example (h : a < b) : ¬ b < a := by
  hint

/--
info: Try these:
• omega
-/
#guard_msgs in
example : 37^2 - 35^2 = 72 * 2 := by
  hint

/--
info: Try these:
• decide
-/
#guard_msgs in
example : Nat.Prime 37 := by
  hint

タクティクの新規登録

登録されているタクティクに tac を追加するには、register_hint tac を実行します。

register_hint nlinarith

/--
info: Try these:
• nlinarith
-/
#guard_msgs in
example (h : a ≤ b) : (a + b) ^ 2 ≤ 4 * b ^ 2 := by
  hint