exists_eval_ne_zero_fin
A nonzero multivariable polynomial in finitely many variables over an infinite field has a nonzero evaluation.
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
namespace FieldArithmetic
namespace Chapter06
open Cardinal Polynomial
open MvPolynomial
variable {K : Type*} [Field K] [Infinite K]theorem exists_eval_ne_zero_fin :
∀ {n : ℕ} {F : MvPolynomial (Fin n) K}, F ≠ 0 → ∃ r, eval r F ≠ 0
| 0, F, hF => by
use 0
contrapose hF
ext d
simpa only [Subsingleton.elim d 0, MvPolynomial.eval_zero,
AddMonoidAlgebra.coeff_zero] using! hF
| n + 1, F, hF => by
let p : Polynomial (MvPolynomial (Fin n) K) := finSuccEquiv K n F
have hp : p ≠ 0 := EmbeddingLike.map_ne_zero_iff.2 hF
obtain ⟨i, hi⟩ : ∃ i : ℕ, p.coeff i ≠ 0 := by
contrapose! hp
exact Polynomial.ext hp
obtain ⟨r, hr⟩ := exists_eval_ne_zero_fin hi
let q : K[X] := p.map (eval r)
have hq : q ≠ 0 := by
intro hq
apply hr
rw [← MvPolynomial.coeff_eval_eq_eval_coeff (Fin n) r p i]
change q.coeff i = 0
rw [hq, Polynomial.coeff_zero]
have hqK : q.natDegree < #K :=
lt_of_lt_of_le Cardinal.natCast_lt_aleph0
(Cardinal.infinite_iff.mp ‹Infinite K›)
obtain ⟨y, hy⟩ := q.exists_eval_ne_zero_of_natDegree_lt_card hq hqK
use Fin.cons y r
rwa [eval_eq_eval_mv_eval']