File: Mathlib/FieldTheory/Finite/Polynomial.lean

full_name: MvPolynomial.C_dvd_iff_zmod
code: /-- A polynomial over the integers is divisible by `n : ℕ`
if and only if it is zero over `ZMod n`. -/
theorem C_dvd_iff_zmod (n : ℕ) (φ : MvPolynomial σ ℤ) :
    C (n : ℤ) ∣ φ ↔ map (Int.castRingHom (ZMod n)) φ = 0 
goal: MvPolynomial.C ↑n ∣ φ ↔ (MvPolynomial.map (Int.castRingHom (ZMod n))) φ = 0

full_name: MvPolynomial.frobenius_zmod
code: theorem frobenius_zmod (f : MvPolynomial σ (ZMod p)) : frobenius _ p f = expand p f 
goal: (frobenius (MvPolynomial σ (ZMod p)) p) f = (MvPolynomial.expand p) f

full_name: MvPolynomial.expand_zmod
code: theorem expand_zmod (f : MvPolynomial σ (ZMod p)) : expand p f = f ^ p 
goal: (MvPolynomial.expand p) f = f ^ p

full_name: MvPolynomial.indicator
code: /-- Over a field, this is the indicator function as an `MvPolynomial`. -/
def indicator [CommRing K] (a : σ → K) : MvPolynomial σ K 
goal: MvPolynomial σ K

full_name: MvPolynomial.eval_indicator_apply_eq_one
code: theorem eval_indicator_apply_eq_one (a : σ → K) : eval a (indicator a) = 1 
goal: (MvPolynomial.eval a) (MvPolynomial.indicator a) = 1

full_name: MvPolynomial.degrees_indicator
code: theorem degrees_indicator (c : σ → K) :
    degrees (indicator c) ≤ ∑ s : σ, (Fintype.card K - 1) • {s} 
goal: (MvPolynomial.indicator c).degrees ≤ ∑ s : σ, (Fintype.card K - 1) • {s}

full_name: MvPolynomial.indicator_mem_restrictDegree
code: theorem indicator_mem_restrictDegree (c : σ → K) :
    indicator c ∈ restrictDegree σ K (Fintype.card K - 1) 
goal: MvPolynomial.indicator c ∈ MvPolynomial.restrictDegree σ K (Fintype.card K - 1)

full_name: MvPolynomial.eval_indicator_apply_eq_zero
code: theorem eval_indicator_apply_eq_zero (a b : σ → K) (h : a ≠ b) : eval a (indicator b) = 0 
goal: (MvPolynomial.eval a) (MvPolynomial.indicator b) = 0

full_name: MvPolynomial.evalₗ_apply
code: /-- `MvPolynomial.eval` as a `K`-linear map. -/
@[simps]
def evalₗ [CommSemiring K] : MvPolynomial σ K →ₗ[K] (σ → K) → K 
goal: (MvPolynomial.evalₗ K σ) p e = (MvPolynomial.eval e) p

full_name: MvPolynomial.evalₗ
code: /-- `MvPolynomial.eval` as a `K`-linear map. -/
@[simps]
def evalₗ [CommSemiring K] : MvPolynomial σ K →ₗ[K] (σ → K) → K 
goal: MvPolynomial σ K →ₗ[K] (σ → K) → K

full_name: MvPolynomial.map_restrict_dom_evalₗ
code: theorem map_restrict_dom_evalₗ : (restrictDegree σ K (Fintype.card K - 1)).map (evalₗ K σ) = ⊤ 
goal: Submodule.map (MvPolynomial.evalₗ K σ) (MvPolynomial.restrictDegree σ K (Fintype.card K - 1)) = ⊤

full_name: MvPolynomial.R
code: /-- The submodule of multivariate polynomials whose degree of each variable is strictly less
than the cardinality of K. -/
def R [CommRing K] : Type u 
goal: Type u

full_name: MvPolynomial.instAddCommGroupR
code: noncomputable instance [CommRing K] : AddCommGroup (R σ K) 
goal: AddCommGroup (MvPolynomial.R σ K)

full_name: MvPolynomial.instModuleR
code: noncomputable instance [CommRing K] : Module K (R σ K) 
goal: Module K (MvPolynomial.R σ K)

full_name: MvPolynomial.instInhabitedR
code: noncomputable instance [CommRing K] : Inhabited (R σ K) 
goal: Inhabited (MvPolynomial.R σ K)

full_name: MvPolynomial.evalᵢ
code: /-- Evaluation in the `mv_polynomial.R` subtype. -/
def evalᵢ [CommRing K] : R σ K →ₗ[K] (σ → K) → K 
goal: MvPolynomial.R σ K →ₗ[K] (σ → K) → K

full_name: MvPolynomial.decidableRestrictDegree
code: noncomputable instance decidableRestrictDegree (m : ℕ) :
    DecidablePred (· ∈ { n : σ →₀ ℕ | ∀ i, n i ≤ m }) 
goal: DecidablePred fun x => x ∈ {n | ∀ (i : σ), n i ≤ m}

full_name: MvPolynomial.rank_R
code: theorem rank_R [Fintype σ] : Module.rank K (R σ K) = Fintype.card (σ → K) 
goal: Module.rank K (MvPolynomial.R σ K) = ↑(Fintype.card (σ → K))

full_name: MvPolynomial.instFiniteDimensionalROfFinite
code: instance [Finite σ] : FiniteDimensional K (R σ K) 
goal: FiniteDimensional K (MvPolynomial.R σ K)

full_name: MvPolynomial.finrank_R
code: theorem finrank_R [Fintype σ] : FiniteDimensional.finrank K (R σ K) = Fintype.card (σ → K) 
goal: FiniteDimensional.finrank K (MvPolynomial.R σ K) = Fintype.card (σ → K)

full_name: MvPolynomial.range_evalᵢ
code: theorem range_evalᵢ [Finite σ] : range (evalᵢ σ K) = ⊤ 
goal: LinearMap.range (MvPolynomial.evalᵢ σ K) = ⊤

full_name: MvPolynomial.ker_evalₗ
code: theorem ker_evalₗ [Finite σ] : ker (evalᵢ σ K) = ⊥ 
goal: LinearMap.ker (MvPolynomial.evalᵢ σ K) = ⊥

full_name: MvPolynomial.eq_zero_of_eval_eq_zero
code: theorem eq_zero_of_eval_eq_zero [Finite σ] (p : MvPolynomial σ K) (h : ∀ v : σ → K, eval v p = 0)
    (hp : p ∈ restrictDegree σ K (Fintype.card K - 1)) : p = 0 
goal: p = 0