Documentation

Mathlib.RingTheory.Polynomial.DegreeLT

Polynomials with degree strictly less than n #

This file contains the properties of the submodule of polynomials of degree less than n in a (semi)ring R, denoted R[X]_n.

Main definitions/lemmas #

The R-submodule of R[X] consisting of polynomials of degree < n.

Equations
    Instances For
      noncomputable def Polynomial.degreeLT.basis (R : Type u_1) [Semiring R] (n : ) :
      Module.Basis (Fin n) R (degreeLT R n)

      Basis for R[X]_n given by X^i with i < n.

      Equations
        Instances For
          @[simp]
          theorem Polynomial.degreeLT.basis_repr {R : Type u_1} [Semiring R] {n : } (i : Fin n) (P : (degreeLT R n)) :
          ((basis R n).repr P) i = (↑P).coeff i
          @[simp]
          theorem Polynomial.degreeLT.basis_val {R : Type u_1} [Semiring R] {n : } (i : Fin n) :
          ((basis R n) i) = X ^ i
          noncomputable def Polynomial.degreeLT.basisProd (R : Type u_1) [Semiring R] (m n : ) :
          Module.Basis (Fin (m + n)) R ((degreeLT R m) × (degreeLT R n))

          Basis for R[X]_m × R[X]_n.

          Equations
            Instances For
              @[simp]
              theorem Polynomial.degreeLT.basisProd_castAdd {R : Type u_1} [Semiring R] (m n : ) (i : Fin m) :
              (basisProd R m n) (Fin.castAdd n i) = ((basis R m) i, 0)
              @[simp]
              theorem Polynomial.degreeLT.basisProd_natAdd {R : Type u_1} [Semiring R] (m n : ) (i : Fin n) :
              (basisProd R m n) (Fin.natAdd m i) = (0, (basis R n) i)
              noncomputable def Polynomial.degreeLT.addLinearEquiv (R : Type u_1) [Semiring R] (m n : ) :
              (degreeLT R (m + n)) ≃ₗ[R] (degreeLT R m) × (degreeLT R n)

              An isomorphism between R[X]_(m + n) and R[X]_m × R[X]_n given by the fact that the bases are both indexed by Fin (m + n).

              Equations
                Instances For
                  theorem Polynomial.degreeLT.addLinearEquiv_castAdd {R : Type u_1} [Semiring R] {m n : } (i : Fin m) :
                  (addLinearEquiv R m n) ((basis R (m + n)) (Fin.castAdd n i)) = ((basis R m) i, 0)
                  theorem Polynomial.degreeLT.addLinearEquiv_natAdd {R : Type u_1} [Semiring R] {m n : } (i : Fin n) :
                  (addLinearEquiv R m n) ((basis R (m + n)) (Fin.natAdd m i)) = (0, (basis R n) i)
                  theorem Polynomial.degreeLT.addLinearEquiv_symm_apply_inl_basis {R : Type u_1} [Semiring R] {m n : } (i : Fin m) :
                  (addLinearEquiv R m n).symm ((LinearMap.inl R (degreeLT R m) (degreeLT R n)) ((basis R m) i)) = (basis R (m + n)) (Fin.castAdd n i)
                  theorem Polynomial.degreeLT.addLinearEquiv_symm_apply_inr_basis {R : Type u_1} [Semiring R] {m n : } (j : Fin n) :
                  (addLinearEquiv R m n).symm ((LinearMap.inr R (degreeLT R m) (degreeLT R n)) ((basis R n) j)) = (basis R (m + n)) (Fin.natAdd m j)
                  theorem Polynomial.degreeLT.addLinearEquiv_symm_apply_inl {R : Type u_1} [Semiring R] {m n : } (P : (degreeLT R m)) :
                  ((addLinearEquiv R m n).symm ((LinearMap.inl R (degreeLT R m) (degreeLT R n)) P)) = P
                  theorem Polynomial.degreeLT.addLinearEquiv_symm_apply_inr {R : Type u_1} [Semiring R] {m n : } (Q : (degreeLT R n)) :
                  ((addLinearEquiv R m n).symm ((LinearMap.inr R (degreeLT R m) (degreeLT R n)) Q)) = Q * X ^ m
                  theorem Polynomial.degreeLT.addLinearEquiv_symm_apply {R : Type u_1} [Semiring R] {m n : } (PQ : (degreeLT R m) × (degreeLT R n)) :
                  ((addLinearEquiv R m n).symm PQ) = PQ.1 + PQ.2 * X ^ m
                  theorem Polynomial.degreeLT.addLinearEquiv_symm_apply' {R : Type u_1} [Semiring R] {m n : } (PQ : (degreeLT R m) × (degreeLT R n)) :
                  ((addLinearEquiv R m n).symm PQ) = PQ.1 + X ^ m * PQ.2
                  theorem Polynomial.degreeLT.addLinearEquiv_apply' {m n : } {R : Type u_2} [Ring R] (f : (degreeLT R (m + n))) :
                  ((addLinearEquiv R m n) f).1 = f %ₘ X ^ m ((addLinearEquiv R m n) f).2 = f /ₘ X ^ m
                  theorem Polynomial.degreeLT.addLinearEquiv_apply_fst {m n : } {R : Type u_2} [Ring R] (f : (degreeLT R (m + n))) :
                  ((addLinearEquiv R m n) f).1 = f %ₘ X ^ m
                  theorem Polynomial.degreeLT.addLinearEquiv_apply_snd {m n : } {R : Type u_2} [Ring R] (f : (degreeLT R (m + n))) :
                  ((addLinearEquiv R m n) f).2 = f /ₘ X ^ m
                  theorem Polynomial.degreeLT.addLinearEquiv_apply {m n : } {R : Type u_2} [Ring R] (f : (degreeLT R (m + n))) :
                  (addLinearEquiv R m n) f = (f %ₘ X ^ m, , f /ₘ X ^ m, )
                  @[simp]
                  theorem Polynomial.taylor_mem_degreeLT {R : Type u_1} [CommRing R] {r : R} {n : } {f : Polynomial R} :
                  (taylor r) f degreeLT R n f degreeLT R n
                  noncomputable def Polynomial.taylorLinearEquiv {R : Type u_1} [CommRing R] (r : R) (n : ) :
                  (degreeLT R n) ≃ₗ[R] (degreeLT R n)

                  The map taylor r induces an automorphism of the module R[X]_n of polynomials of degree < n.

                  Equations
                    Instances For
                      @[simp]
                      theorem Polynomial.taylorLinearEquiv_apply_coe {R : Type u_1} [CommRing R] (r : R) (n : ) (a✝ : (degreeLT R n)) :
                      ((taylorLinearEquiv r n) a✝) = (((↑(taylorEquiv r)).submoduleMap (degreeLT R n)) a✝)
                      @[simp]
                      @[simp]