Documentation

Mathlib.RingTheory.MvPolynomial.Homogeneous

Homogeneous polynomials #

A multivariate polynomial φ is homogeneous of degree n if all monomials occurring in φ have degree n.

Main definitions/lemmas #

def MvPolynomial.IsHomogeneous {σ : Type u_1} {R : Type u_3} [CommSemiring R] (φ : MvPolynomial σ R) (n : ) :

A multivariate polynomial φ is homogeneous of degree n if all monomials occurring in φ have degree n.

Equations
Instances For

    The submodule of homogeneous MvPolynomials of degree n.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem MvPolynomial.homogeneousSubmodule_eq_finsupp_supported (σ : Type u_1) (R : Type u_3) [CommSemiring R] (n : ) :
      MvPolynomial.homogeneousSubmodule σ R n = Finsupp.supported R R {d : σ →₀ | (Finset.sum d.support fun (i : σ) => d i) = n}

      While equal, the former has a convenient definitional reduction.

      theorem MvPolynomial.isHomogeneous_monomial {σ : Type u_1} {R : Type u_3} [CommSemiring R] (d : σ →₀ ) (r : R) (n : ) (hn : (Finset.sum d.support fun (i : σ) => d i) = n) :
      theorem MvPolynomial.isHomogeneous_C (σ : Type u_1) {R : Type u_3} [CommSemiring R] (r : R) :
      MvPolynomial.IsHomogeneous (MvPolynomial.C r) 0
      theorem MvPolynomial.IsHomogeneous.coeff_eq_zero {σ : Type u_1} {R : Type u_3} [CommSemiring R] {φ : MvPolynomial σ R} {n : } (hφ : MvPolynomial.IsHomogeneous φ n) (d : σ →₀ ) (hd : (Finset.sum d.support fun (i : σ) => d i) n) :
      theorem MvPolynomial.IsHomogeneous.inj_right {σ : Type u_1} {R : Type u_3} [CommSemiring R] {φ : MvPolynomial σ R} {m : } {n : } (hm : MvPolynomial.IsHomogeneous φ m) (hn : MvPolynomial.IsHomogeneous φ n) (hφ : φ 0) :
      m = n
      theorem MvPolynomial.IsHomogeneous.add {σ : Type u_1} {R : Type u_3} [CommSemiring R] {φ : MvPolynomial σ R} {ψ : MvPolynomial σ R} {n : } (hφ : MvPolynomial.IsHomogeneous φ n) (hψ : MvPolynomial.IsHomogeneous ψ n) :
      theorem MvPolynomial.IsHomogeneous.sum {σ : Type u_1} {R : Type u_3} [CommSemiring R] {ι : Type u_5} (s : Finset ι) (φ : ιMvPolynomial σ R) (n : ) (h : is, MvPolynomial.IsHomogeneous (φ i) n) :
      MvPolynomial.IsHomogeneous (Finset.sum s fun (i : ι) => φ i) n
      theorem MvPolynomial.IsHomogeneous.mul {σ : Type u_1} {R : Type u_3} [CommSemiring R] {φ : MvPolynomial σ R} {ψ : MvPolynomial σ R} {m : } {n : } (hφ : MvPolynomial.IsHomogeneous φ m) (hψ : MvPolynomial.IsHomogeneous ψ n) :
      theorem MvPolynomial.IsHomogeneous.prod {σ : Type u_1} {R : Type u_3} [CommSemiring R] {ι : Type u_5} (s : Finset ι) (φ : ιMvPolynomial σ R) (n : ι) (h : is, MvPolynomial.IsHomogeneous (φ i) (n i)) :
      MvPolynomial.IsHomogeneous (Finset.prod s fun (i : ι) => φ i) (Finset.sum s fun (i : ι) => n i)
      theorem MvPolynomial.IsHomogeneous.sub {R : Type u_5} {σ : Type u_6} [CommRing R] {φ : MvPolynomial σ R} {ψ : MvPolynomial σ R} {n : } (hφ : MvPolynomial.IsHomogeneous φ n) (hψ : MvPolynomial.IsHomogeneous ψ n) :
      theorem MvPolynomial.IsHomogeneous.totalDegree {σ : Type u_1} {R : Type u_3} [CommSemiring R] {φ : MvPolynomial σ R} {n : } (hφ : MvPolynomial.IsHomogeneous φ n) (h : φ 0) :
      theorem MvPolynomial.IsHomogeneous.rename_isHomogeneous {σ : Type u_1} {τ : Type u_2} {R : Type u_3} [CommSemiring R] {φ : MvPolynomial σ R} {n : } {f : στ} (h : MvPolynomial.IsHomogeneous φ n) :
      theorem MvPolynomial.IsHomogeneous.eq_zero_of_forall_eval_eq_zero_of_le_card {R : Type u_5} {σ : Type u_6} [CommRing R] [IsDomain R] {F : MvPolynomial σ R} {n : } (hF : MvPolynomial.IsHomogeneous F n) (h : ∀ (r : σR), (MvPolynomial.eval r) F = 0) (hnR : n Cardinal.mk R) :
      F = 0

      See MvPolynomial.IsHomogeneous.eq_zero_of_forall_eval_eq_zero for a version that assumes Infinite R.

      theorem MvPolynomial.IsHomogeneous.funext_of_le_card {R : Type u_5} {σ : Type u_6} [CommRing R] [IsDomain R] {F : MvPolynomial σ R} {G : MvPolynomial σ R} {n : } (hF : MvPolynomial.IsHomogeneous F n) (hG : MvPolynomial.IsHomogeneous G n) (h : ∀ (r : σR), (MvPolynomial.eval r) F = (MvPolynomial.eval r) G) (hnR : n Cardinal.mk R) :
      F = G

      See MvPolynomial.IsHomogeneous.funext for a version that assumes Infinite R.

      theorem MvPolynomial.IsHomogeneous.eq_zero_of_forall_eval_eq_zero {R : Type u_5} {σ : Type u_6} [CommRing R] [IsDomain R] [Infinite R] {F : MvPolynomial σ R} {n : } (hF : MvPolynomial.IsHomogeneous F n) (h : ∀ (r : σR), (MvPolynomial.eval r) F = 0) :
      F = 0

      See MvPolynomial.IsHomogeneous.eq_zero_of_forall_eval_eq_zero_of_le_card for a version that assumes n ≤ #R.

      theorem MvPolynomial.IsHomogeneous.funext {R : Type u_5} {σ : Type u_6} [CommRing R] [IsDomain R] [Infinite R] {F : MvPolynomial σ R} {G : MvPolynomial σ R} {n : } (hF : MvPolynomial.IsHomogeneous F n) (hG : MvPolynomial.IsHomogeneous G n) (h : ∀ (r : σR), (MvPolynomial.eval r) F = (MvPolynomial.eval r) G) :
      F = G

      See MvPolynomial.IsHomogeneous.funext_of_le_card for a version that assumes n ≤ #R.

      The homogeneous submodules form a graded ring. This instance is used by DirectSum.commSemiring and DirectSum.algebra.

      Equations

      homogeneousComponent n φ is the part of φ that is homogeneous of degree n. See sum_homogeneousComponent for the statement that φ is equal to the sum of all its homogeneous components.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem MvPolynomial.coeff_homogeneousComponent {σ : Type u_1} {R : Type u_3} [CommSemiring R] (n : ) (φ : MvPolynomial σ R) (d : σ →₀ ) :
        MvPolynomial.coeff d ((MvPolynomial.homogeneousComponent n) φ) = if (Finset.sum d.support fun (i : σ) => d i) = n then MvPolynomial.coeff d φ else 0
        theorem MvPolynomial.homogeneousComponent_apply {σ : Type u_1} {R : Type u_3} [CommSemiring R] (n : ) (φ : MvPolynomial σ R) :
        (MvPolynomial.homogeneousComponent n) φ = Finset.sum (Finset.filter (fun (d : σ →₀ ) => (Finset.sum d.support fun (i : σ) => d i) = n) (MvPolynomial.support φ)) fun (d : σ →₀ ) => (MvPolynomial.monomial d) (MvPolynomial.coeff d φ)
        @[simp]
        theorem MvPolynomial.homogeneousComponent_zero {σ : Type u_1} {R : Type u_3} [CommSemiring R] (φ : MvPolynomial σ R) :
        @[simp]
        theorem MvPolynomial.homogeneousComponent_C_mul {σ : Type u_1} {R : Type u_3} [CommSemiring R] (φ : MvPolynomial σ R) (n : ) (r : R) :
        (MvPolynomial.homogeneousComponent n) (MvPolynomial.C r * φ) = MvPolynomial.C r * (MvPolynomial.homogeneousComponent n) φ
        theorem MvPolynomial.homogeneousComponent_eq_zero' {σ : Type u_1} {R : Type u_3} [CommSemiring R] (n : ) (φ : MvPolynomial σ R) (h : dMvPolynomial.support φ, (Finset.sum d.support fun (i : σ) => d i) n) :