positivity core functionality #
This file sets up the positivity tactic and the @[positivity] attribute,
which allow for plugging in new positivity functionality around a positivity-based driver.
The actual behavior is in @[positivity]-tagged definitions in Tactic.Positivity.Basic
and elsewhere.
Attribute for identifying positivity extensions.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Mathlib.Meta.Positivity.instReprStrictness = { reprPrec := Mathlib.Meta.Positivity.reprStrictness✝ }
- eval : {u : Lean.Level} → {α : Q(Type u)} → (zα : Q(Zero «$α»)) → (pα : Q(PartialOrder «$α»)) → (e : Q(«$α»)) → Lean.MetaM (Mathlib.Meta.Positivity.Strictness zα pα e)
Attempts to prove an expression
e : αis>0,≥0, or≠0.
An extension for positivity.
Instances For
Read a positivity extension from a declaration of the right type.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Each positivity extension is labelled with a collection of patterns
which determine the expressions to which it should be applied.
Equations
Instances For
Environment extensions for positivity declarations
An auxillary entry point to the positivity tactic. Given a proposition t of the form
0 [≤/≠] e, attempts to recurse on the structure of t to prove it. It returns a proof
or fails.
Instances For
The main entry point to the positivity tactic. Given a goal goal of the form 0 [≤/≠] e,
attempts to recurse on the structure of e to prove the goal.
It will either close goal or fail.
Equations
- Mathlib.Meta.Positivity.positivity goal = do let t ← Lean.Meta.withReducible (Lean.MVarId.getType' goal) let p ← Mathlib.Meta.Positivity.solve t Lean.MVarId.assign goal p
Instances For
Tactic solving goals of the form 0 ≤ x, 0 < x and x ≠ 0. The tactic works recursively
according to the syntax of the expression x, if the atoms composing the expression all have
numeric lower bounds which can be proved positive/nonnegative/nonzero by norm_num. This tactic
either closes the goal or fails.
Examples:
example {a : ℤ} (ha : 3 < a) : 0 ≤ a ^ 3 + a := by positivity
example {a : ℤ} (ha : 1 < a) : 0 < |(3:ℤ) + a| := by positivity
example {b : ℤ} : 0 ≤ max (-3) (b ^ 2) := by positivity
Equations
- Mathlib.Tactic.Positivity.positivity = Lean.ParserDescr.node `Mathlib.Tactic.Positivity.positivity 1024 (Lean.ParserDescr.nonReservedSymbol "positivity" false)