- nil : Poly.nil.NonnegCoeffs
- add (a : Int) (x : Var) (p : Poly) : a ≥ 0 → p.NonnegCoeffs → (Poly.add a x p).NonnegCoeffs
Instances For
theorem
Lean.Grind.Linarith.instAssociativeHAdd_1
{α : Type u_1}
[NatModule α]
:
Std.Associative fun (x1 x2 : α) => x1 + x2
theorem
Lean.Grind.Linarith.instCommutativeHAdd_1
{α : Type u_1}
[NatModule α]
:
Std.Commutative fun (x1 x2 : α) => x1 + x2
theorem
Lean.Grind.Linarith.Poly.denoteN_append
{α : Type u_1}
[NatModule α]
(ctx : Context α)
(p₁ p₂ : Poly)
:
p₁.NonnegCoeffs → p₂.NonnegCoeffs → denoteN ctx (p₁.append p₂) = denoteN ctx p₁ + denoteN ctx p₂
theorem
Lean.Grind.Linarith.Poly.denoteN_combine
{α : Type u_1}
[NatModule α]
(ctx : Context α)
(p₁ p₂ : Poly)
:
p₁.NonnegCoeffs → p₂.NonnegCoeffs → denoteN ctx (p₁.combine p₂) = denoteN ctx p₁ + denoteN ctx p₂
theorem
Lean.Grind.Linarith.Poly.mul'_Nonneg
(p : Poly)
(k : Nat)
:
p.NonnegCoeffs → (p.mul' ↑k).NonnegCoeffs
theorem
Lean.Grind.Linarith.Poly.mul_Nonneg
(p : Poly)
(k : Nat)
:
p.NonnegCoeffs → (p.mul ↑k).NonnegCoeffs
theorem
Lean.Grind.Linarith.Poly.append_Nonneg
(p₁ p₂ : Poly)
:
p₁.NonnegCoeffs → p₂.NonnegCoeffs → (p₁.append p₂).NonnegCoeffs
theorem
Lean.Grind.Linarith.Poly.combine_Nonneg
(p₁ p₂ : Poly)
:
p₁.NonnegCoeffs → p₂.NonnegCoeffs → (p₁.combine p₂).NonnegCoeffs
theorem
Lean.Grind.Linarith.Expr.denoteN_toPolyN
{α : Type u_1}
[NatModule α]
(ctx : Context α)
(e : Expr)
:
theorem
Lean.Grind.Linarith.eq_normN
{α : Type u_1}
[NatModule α]
(ctx : Context α)
(lhs rhs : Expr)
:
eq_normN_cert lhs rhs = true → Expr.denoteN ctx lhs = Expr.denoteN ctx rhs