# Induction on polynomials #

This file contains lemmas dealing with different flavours of induction on polynomials.
See also `Data/Polynomial/Inductions.lean`

(with an `s`

!).

The main result is `Polynomial.induction_on`

.

theorem
Polynomial.induction_on
{R : Type u}
[Semiring R]
{M : Polynomial R → Prop}
(p : Polynomial R)
(h_C : (a : R) → M (↑Polynomial.C a))
(h_add : (p q : Polynomial R) → M p → M q → M (p + q))
(h_monomial : (n : ℕ) → (a : R) → M (↑Polynomial.C a * Polynomial.X ^ n) → M (↑Polynomial.C a * Polynomial.X ^ (n + 1)))
:

M p

theorem
Polynomial.induction_on'
{R : Type u}
[Semiring R]
{M : Polynomial R → Prop}
(p : Polynomial R)
(h_add : (p q : Polynomial R) → M p → M q → M (p + q))
(h_monomial : (n : ℕ) → (a : R) → M (↑(Polynomial.monomial n) a))
:

M p

To prove something about polynomials, it suffices to show the condition is closed under taking sums, and it holds for monomials.

theorem
Polynomial.span_le_of_C_coeff_mem
{R : Type u}
[Semiring R]
{f : Polynomial R}
{I : Ideal (Polynomial R)}
(cf : ∀ (i : ℕ), ↑Polynomial.C (Polynomial.coeff f i) ∈ I)
:

Ideal.span {g | ∃ i, g = ↑Polynomial.C (Polynomial.coeff f i)} ≤ I

If the coefficients of a polynomial belong to an ideal, then that ideal contains the ideal spanned by the coefficients of the polynomial.

theorem
Polynomial.mem_span_C_coeff
{R : Type u}
[Semiring R]
{f : Polynomial R}
:

f ∈ Ideal.span {g | ∃ i, g = ↑Polynomial.C (Polynomial.coeff f i)}

theorem
Polynomial.exists_C_coeff_not_mem
{R : Type u}
[Semiring R]
{f : Polynomial R}
{I : Ideal (Polynomial R)}
:

¬f ∈ I → ∃ i, ¬↑Polynomial.C (Polynomial.coeff f i) ∈ I