Arithmetic tactics #
This file defines the positivity! and arith tactics, which are slight extensions of the existing
arithmetic tactics in mathlib (positivity and linarith).
Equations
- Tactic.cases_and = Lean.ParserDescr.node `Tactic.cases_and 1024 (Lean.ParserDescr.nonReservedSymbol "cases_and" false)
 
Instances For
Positivity can only work with goals and hypotheses of the form 0 R x, where R ∈ {<, ≤, ≠}.
Our positivity extension is designed to admit hypotheses of the form a R x and x R a where
a ≠ 0. For example, 1 ≤ x → 0 ≤ log x. To be able to use positivity, we rewrite 1 ≤ x into
0 ≤ x - 1. This procedure does exactly that, changing goals and hypotheses to make them compatible
with positivity.
Equations
- One or more equations did not get rendered due to their size.
 
Instances For
Equations
- Tactic.prepare_positivity = Lean.ParserDescr.node `Tactic.prepare_positivity 1024 (Lean.ParserDescr.nonReservedSymbol "prepare_positivity" false)
 
Instances For
Call positivity but if the expression has no free variables, we try to apply norm_num
first.
Equations
- One or more equations did not get rendered due to their size.
 
Instances For
Equations
- Tactic.positivity = Lean.ParserDescr.node `Tactic.positivity 1024 (Lean.ParserDescr.nonReservedSymbol "positivity_maybe_norm_num" false)
 
Instances For
Extension of positivity with some pre-processing and the option to call norm_num.
Equations
- tacticPositivity! = Lean.ParserDescr.node `tacticPositivity! 1024 (Lean.ParserDescr.nonReservedSymbol "positivity!" false)
 
Instances For
Combination of tactics. We try positivity!, then linarith, then norm_num, then simp.
Equations
- tacticArith = Lean.ParserDescr.node `tacticArith 1024 (Lean.ParserDescr.nonReservedSymbol "arith" false)