positivity

positivity は、0 ≤ x0 < xx ≠ 0 という形のゴールを証明するためのタクティクです。

import Mathlib.Tactic

variable {a b : ℤ}

example (ha : 3 < a) : 0 ≤ a ^ 3 + a := by
  -- linarith では示せない
  fail_if_success linarith

  -- omega でも示せない
  fail_if_success omega

  positivity

example (ha : 1 < a) : 0 < |3 + a| := by
  -- linarith では示せない
  fail_if_success linarith

  -- omega でも示せない
  fail_if_success omega

  positivity

ゴールを構成する式がすべて数値的な下界を持つならば、positivity は再帰的に適用されます。

example : 0 ≤ max (-3) (b ^ 2) := by positivity

example : 0 < max (-3) ((1 + a) ^ 2 + 3) := by positivity

example : 0 < |2 + a| + |3 + b| + |1 + a ^ 2| := by positivity