Documentation

Mathlib.FieldTheory.Finite.Polynomial

Polynomials over finite fields #

theorem MvPolynomial.C_dvd_iff_zmod {σ : Type u_1} (n : ) (φ : MvPolynomial σ ) :
C n φ (map (Int.castRingHom (ZMod n))) φ = 0

A polynomial over the integers is divisible by n : ℕ if and only if it is zero over ZMod n.

theorem MvPolynomial.frobenius_zmod {σ : Type u_1} {p : } [Fact (Nat.Prime p)] (f : MvPolynomial σ (ZMod p)) :
(frobenius (MvPolynomial σ (ZMod p)) p) f = (expand p) f
theorem MvPolynomial.expand_zmod {σ : Type u_1} {p : } [Fact (Nat.Prime p)] (f : MvPolynomial σ (ZMod p)) :
(expand p) f = f ^ p
def MvPolynomial.indicator {K : Type u_1} {σ : Type u_2} [Fintype K] [Fintype σ] [CommRing K] (a : σK) :

Over a field, this is the indicator function as an MvPolynomial.

Equations
    Instances For
      theorem MvPolynomial.eval_indicator_apply_eq_one {K : Type u_1} {σ : Type u_2} [Fintype K] [Fintype σ] [CommRing K] (a : σK) :
      (eval a) (indicator a) = 1
      theorem MvPolynomial.degrees_indicator {K : Type u_1} {σ : Type u_2} [Fintype K] [Fintype σ] [CommRing K] (c : σK) :
      (indicator c).degrees s : σ, (Fintype.card K - 1) {s}
      theorem MvPolynomial.indicator_mem_restrictDegree {K : Type u_1} {σ : Type u_2} [Fintype K] [Fintype σ] [CommRing K] (c : σK) :
      theorem MvPolynomial.eval_indicator_apply_eq_zero {K : Type u_1} {σ : Type u_2} [Fintype K] [Fintype σ] [Field K] (a b : σK) (h : a b) :
      (eval a) (indicator b) = 0
      def MvPolynomial.evalₗ (K : Type u_1) (σ : Type u_2) [CommSemiring K] :
      MvPolynomial σ K →ₗ[K] (σK)K

      MvPolynomial.eval as a K-linear map.

      Equations
        Instances For
          @[simp]
          theorem MvPolynomial.evalₗ_apply (K : Type u_1) (σ : Type u_2) [CommSemiring K] (p : MvPolynomial σ K) (e : σK) :
          (evalₗ K σ) p e = (eval e) p
          def MvPolynomial.R (σ K : Type u) [Fintype K] [CommRing K] :

          The submodule of multivariate polynomials whose degree of each variable is strictly less than the cardinality of K.

          Equations
            Instances For
              noncomputable instance MvPolynomial.instAddCommGroupR (σ K : Type u) [Fintype K] [CommRing K] :
              Equations
                noncomputable instance MvPolynomial.instModuleR (σ K : Type u) [Fintype K] [CommRing K] :
                Module K (R σ K)
                Equations
                  noncomputable instance MvPolynomial.instInhabitedR (σ K : Type u) [Fintype K] [CommRing K] :
                  Inhabited (R σ K)
                  Equations
                    noncomputable def MvPolynomial.evalᵢ (σ K : Type u) [Fintype K] [CommRing K] :
                    R σ K →ₗ[K] (σK)K

                    Evaluation in the MvPolynomial.R subtype.

                    Equations
                      Instances For
                        noncomputable instance MvPolynomial.decidableRestrictDegree (σ : Type u) (m : ) :
                        DecidablePred fun (x : σ →₀ ) => x {n : σ →₀ | ∀ (i : σ), n i m}
                        Equations
                          theorem MvPolynomial.rank_R (σ K : Type u) [Fintype K] [Field K] [Fintype σ] :
                          Module.rank K (R σ K) = (Fintype.card (σK))
                          theorem MvPolynomial.finrank_R (σ K : Type u) [Fintype K] [Field K] [Fintype σ] :
                          Module.finrank K (R σ K) = Fintype.card (σK)
                          theorem MvPolynomial.eq_zero_of_eval_eq_zero (σ K : Type u) [Fintype K] [Field K] [Finite σ] (p : MvPolynomial σ K) (h : ∀ (v : σK), (eval v) p = 0) (hp : p restrictDegree σ K (Fintype.card K - 1)) :
                          p = 0