Documentation

Mathlib.RingTheory.MvPolynomial.WeightedHomogeneous

Weighted homogeneous polynomials #

It is possible to assign weights (in a commutative additive monoid M) to the variables of a multivariate polynomial ring, so that monomials of the ring then have a weighted degree with respect to the weights of the variables. The weights are represented by a function w : σ → M, where σ are the indeterminates.

A multivariate polynomial φ is weighted homogeneous of weighted degree m : M if all monomials occurring in φ have the same weighted degree m.

Main definitions/lemmas #

weight #

def MvPolynomial.weightedTotalDegree' {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] [SemilatticeSup M] (w : σM) (p : MvPolynomial σ R) :

The weighted total degree of a multivariate polynomial, taking values in WithBot M.

Equations
    Instances For
      theorem MvPolynomial.weightedTotalDegree'_eq_bot_iff {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] [SemilatticeSup M] (w : σM) (p : MvPolynomial σ R) :

      The weightedTotalDegree' of a polynomial p is if and only if p = 0.

      theorem MvPolynomial.weightedTotalDegree'_zero {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] [SemilatticeSup M] (w : σM) :

      The weightedTotalDegree' of the zero polynomial is .

      def MvPolynomial.weightedTotalDegree {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] [SemilatticeSup M] [OrderBot M] (w : σM) (p : MvPolynomial σ R) :
      M

      When M has a element, we can define the weighted total degree of a multivariate polynomial as a function taking values in M.

      Equations
        Instances For
          theorem MvPolynomial.weightedTotalDegree_coe {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] [SemilatticeSup M] [OrderBot M] (w : σM) (p : MvPolynomial σ R) (hp : p 0) :

          This lemma relates weightedTotalDegree and weightedTotalDegree'.

          theorem MvPolynomial.weightedTotalDegree_zero {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] [SemilatticeSup M] [OrderBot M] (w : σM) :

          The weightedTotalDegree of the zero polynomial is .

          theorem MvPolynomial.le_weightedTotalDegree {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] [SemilatticeSup M] [OrderBot M] (w : σM) {φ : MvPolynomial σ R} {d : σ →₀ } (hd : d φ.support) :
          def MvPolynomial.IsWeightedHomogeneous {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) (φ : MvPolynomial σ R) (m : M) :

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

          Equations
            Instances For
              def MvPolynomial.weightedHomogeneousSubmodule (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) (m : M) :

              The submodule of homogeneous MvPolynomials of degree n.

              Equations
                Instances For
                  @[simp]
                  theorem MvPolynomial.mem_weightedHomogeneousSubmodule (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) (m : M) (p : MvPolynomial σ R) :

                  The submodule weightedHomogeneousSubmodule R w m of homogeneous MvPolynomials of degree n is equal to the R-submodule of all p : (σ →₀ ℕ) →₀ R such that p.support ⊆ {d | weight w d = m}. While equal, the former has a convenient definitional reduction.

                  The submodule generated by products Pm * Pn of weighted homogeneous polynomials of degrees m and n is contained in the submodule of weighted homogeneous polynomials of degree m + n.

                  theorem MvPolynomial.isWeightedHomogeneous_monomial {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) (d : σ →₀ ) (r : R) {m : M} (hm : (Finsupp.weight w) d = m) :

                  Monomials are weighted homogeneous.

                  A polynomial of weightedTotalDegree is weighted_homogeneous of degree .

                  theorem MvPolynomial.isWeightedHomogeneous_C {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) (r : R) :

                  Constant polynomials are weighted homogeneous of degree 0.

                  theorem MvPolynomial.isWeightedHomogeneous_zero (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) (m : M) :

                  0 is weighted homogeneous of any degree.

                  theorem MvPolynomial.isWeightedHomogeneous_one (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) :

                  1 is weighted homogeneous of degree 0.

                  theorem MvPolynomial.isWeightedHomogeneous_X (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) (i : σ) :

                  An indeterminate i : σ is weighted homogeneous of degree w i.

                  theorem MvPolynomial.IsWeightedHomogeneous.coeff_eq_zero {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {φ : MvPolynomial σ R} {n : M} {w : σM} ( : IsWeightedHomogeneous w φ n) (d : σ →₀ ) (hd : (Finsupp.weight w) d n) :
                  coeff d φ = 0

                  The weighted degree of a weighted homogeneous polynomial controls its support.

                  theorem MvPolynomial.IsWeightedHomogeneous.inj_right {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {φ : MvPolynomial σ R} {m n : M} {w : σM} ( : φ 0) (hm : IsWeightedHomogeneous w φ m) (hn : IsWeightedHomogeneous w φ n) :
                  m = n

                  The weighted degree of a nonzero weighted homogeneous polynomial is well-defined.

                  theorem MvPolynomial.IsWeightedHomogeneous.add {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {φ ψ : MvPolynomial σ R} {n : M} {w : σM} ( : IsWeightedHomogeneous w φ n) ( : IsWeightedHomogeneous w ψ n) :

                  The sum of two weighted homogeneous polynomials of degree n is weighted homogeneous of weighted degree n.

                  theorem MvPolynomial.IsWeightedHomogeneous.sum {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {ι : Type u_4} (s : Finset ι) (φ : ιMvPolynomial σ R) (n : M) {w : σM} (h : is, IsWeightedHomogeneous w (φ i) n) :
                  IsWeightedHomogeneous w (∑ is, φ i) n

                  The sum of weighted homogeneous polynomials of degree n is weighted homogeneous of weighted degree n.

                  theorem MvPolynomial.IsWeightedHomogeneous.mul {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {φ ψ : MvPolynomial σ R} {m n : M} {w : σM} ( : IsWeightedHomogeneous w φ m) ( : IsWeightedHomogeneous w ψ n) :
                  IsWeightedHomogeneous w (φ * ψ) (m + n)

                  The product of weighted homogeneous polynomials of weighted degrees m and n is weighted homogeneous of weighted degree m + n.

                  theorem MvPolynomial.IsWeightedHomogeneous.pow {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {φ : MvPolynomial σ R} {m : M} {w : σM} ( : IsWeightedHomogeneous w φ m) (n : ) :
                  IsWeightedHomogeneous w (φ ^ n) (n m)
                  theorem MvPolynomial.IsWeightedHomogeneous.prod {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {ι : Type u_4} (s : Finset ι) (φ : ιMvPolynomial σ R) (n : ιM) {w : σM} :
                  (∀ is, IsWeightedHomogeneous w (φ i) (n i))IsWeightedHomogeneous w (∏ is, φ i) (∑ is, n i)

                  A product of weighted homogeneous polynomials is weighted homogeneous, with weighted degree equal to the sum of the weighted degrees.

                  theorem MvPolynomial.IsWeightedHomogeneous.weighted_total_degree {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {φ : MvPolynomial σ R} {n : M} [SemilatticeSup M] {w : σM} ( : IsWeightedHomogeneous w φ n) (h : φ 0) :

                  A non zero weighted homogeneous polynomial of weighted degree n has weighted total degree n.

                  The weighted homogeneous submodules form a graded monoid.

                  def MvPolynomial.weightedHomogeneousComponent {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) (n : M) :

                  weightedHomogeneousComponent w n φ is the part of φ that is weighted homogeneous of weighted degree n, with respect to the weights w. See sum_weightedHomogeneousComponent for the statement that φ is equal to the sum of all its weighted homogeneous components.

                  Equations
                    Instances For
                      theorem MvPolynomial.coeff_weightedHomogeneousComponent {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {w : σM} (n : M) (φ : MvPolynomial σ R) [DecidableEq M] (d : σ →₀ ) :
                      theorem MvPolynomial.weightedHomogeneousComponent_apply {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {w : σM} (n : M) (φ : MvPolynomial σ R) [DecidableEq M] :
                      (weightedHomogeneousComponent w n) φ = dφ.support with (Finsupp.weight w) d = n, (monomial d) (coeff d φ)

                      The n weighted homogeneous component of a polynomial is weighted homogeneous of weighted degree n.

                      theorem MvPolynomial.weightedHomogeneousComponent_mem {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) (φ : MvPolynomial σ R) (m : M) :
                      @[simp]
                      theorem MvPolynomial.weightedHomogeneousComponent_C_mul {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {w : σM} (φ : MvPolynomial σ R) (n : M) (r : R) :
                      theorem MvPolynomial.weightedHomogeneousComponent_eq_zero' {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {w : σM} (n : M) (φ : MvPolynomial σ R) (h : dφ.support, (Finsupp.weight w) d n) :
                      theorem MvPolynomial.weightedHomogeneousComponent_eq_zero {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {w : σM} (n : M) (φ : MvPolynomial σ R) [SemilatticeSup M] [OrderBot M] (h : weightedTotalDegree w φ < n) :
                      theorem MvPolynomial.weightedHomogeneousComponent_finsupp {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {w : σM} (φ : MvPolynomial σ R) :
                      theorem MvPolynomial.sum_weightedHomogeneousComponent {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) (φ : MvPolynomial σ R) :

                      Every polynomial is the sum of its weighted homogeneous components.

                      theorem MvPolynomial.finsum_weightedHomogeneousComponent {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) (φ : MvPolynomial σ R) :
                      theorem MvPolynomial.IsWeightedHomogeneous.weightedHomogeneousComponent_ne {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {w : σM} {m : M} (n : M) {p : MvPolynomial σ R} (hp : IsWeightedHomogeneous w p m) :
                      theorem MvPolynomial.weightedHomogeneousComponent_of_mem {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {w : σM} [DecidableEq M] {m n : M} {p : MvPolynomial σ R} (h : p weightedHomogeneousSubmodule R w n) :

                      The weighted homogeneous components of a weighted homogeneous polynomial.

                      theorem MvPolynomial.weightedHomogeneousComponent_of_isWeightedHomogeneous_ne {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] {w : σM} {m n : M} {p : MvPolynomial σ R} (hp : IsWeightedHomogeneous w p m) (hn : n m) :
                      theorem MvPolynomial.DirectSum.coeLinearMap_eq_dfinsuppSum (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) [DecidableEq σ] [DecidableEq R] [DecidableEq M] (x : DirectSum M fun (i : M) => (weightedHomogeneousSubmodule R w i)) :
                      (DirectSum.coeLinearMap fun (i : M) => weightedHomogeneousSubmodule R w i) x = DFinsupp.sum x fun (x : M) (x_1 : (weightedHomogeneousSubmodule R w x)) => x_1
                      theorem MvPolynomial.DirectSum.coeAddMonoidHom_eq_support_sum (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) [DecidableEq σ] [DecidableEq R] [DecidableEq M] (x : DirectSum M fun (i : M) => (weightedHomogeneousSubmodule R w i)) :
                      (DirectSum.coeAddMonoidHom fun (i : M) => weightedHomogeneousSubmodule R w i) x = DFinsupp.sum x fun (x : M) (x_1 : (weightedHomogeneousSubmodule R w x)) => x_1
                      theorem MvPolynomial.DirectSum.coeLinearMap_eq_finsum (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) [DecidableEq M] (x : DirectSum M fun (i : M) => (weightedHomogeneousSubmodule R w i)) :
                      (DirectSum.coeLinearMap fun (i : M) => weightedHomogeneousSubmodule R w i) x = ∑ᶠ (m : M), (x m)
                      theorem MvPolynomial.weightedHomogeneousComponent_directSum (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] (w : σM) [DecidableEq M] (x : DirectSum M fun (i : M) => (weightedHomogeneousSubmodule R w i)) (m : M) :
                      @[simp]
                      theorem MvPolynomial.weightedHomogeneousComponent_zero {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] [PartialOrder M] {w : σM} (φ : MvPolynomial σ R) [CanonicallyOrderedAdd M] [NoZeroSMulDivisors M] (hw : ∀ (i : σ), w i 0) :

                      If M is a canonically OrderedAddCommMonoid, then the weightedHomogeneousComponent of weighted degree 0 of a polynomial is its constant coefficient.

                      def MvPolynomial.NonTorsionWeight {M : Type u_2} {σ : Type u_3} [AddCommMonoid M] (w : σM) :

                      A weight function is nontorsion if its values are not torsion.

                      Equations
                        Instances For
                          theorem MvPolynomial.nonTorsionWeight_of {M : Type u_2} {σ : Type u_3} [AddCommMonoid M] {w : σM} [NoZeroSMulDivisors M] (hw : ∀ (i : σ), w i 0) :
                          theorem MvPolynomial.weightedDegree_eq_zero_iff {M : Type u_2} {σ : Type u_3} [AddCommMonoid M] [PartialOrder M] {w : σM} [CanonicallyOrderedAdd M] (hw : NonTorsionWeight w) {m : σ →₀ } :
                          (Finsupp.weight w) m = 0 ∀ (x : σ), m x = 0

                          If w is a nontorsion weight function, then the finitely supported function m : σ →₀ ℕ has weighted degree zero if and only if ∀ x : σ, m x = 0.

                          A multivariate polynomial is weighted homogeneous of weighted degree zero if and only if its weighted total degree is equal to zero.

                          theorem MvPolynomial.weightedTotalDegree_eq_zero_iff {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [AddCommMonoid M] [LinearOrder M] [OrderBot M] [CanonicallyOrderedAdd M] {w : σM} (hw : NonTorsionWeight w) (p : MvPolynomial σ R) :
                          weightedTotalDegree w p = 0 mp.support, ∀ (x : σ), m x = 0

                          If w is a nontorsion weight function, then a multivariate polynomial has weighted total degree zero if and only if for every m ∈ p.support and x : σ, m x = 0.

                          theorem MvPolynomial.weightedHomogeneousComponent_eq_zero_of_notMem {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} (w : σM) [AddCommMonoid M] [DecidableEq M] (φ : MvPolynomial σ R) (i : M) (hi : iFinset.image (⇑(Finsupp.weight w)) φ.support) :
                          @[deprecated MvPolynomial.weightedHomogeneousComponent_eq_zero_of_notMem (since := "2025-05-23")]
                          theorem MvPolynomial.weightedHomogeneousComponent_eq_zero_of_not_mem {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} (w : σM) [AddCommMonoid M] [DecidableEq M] (φ : MvPolynomial σ R) (i : M) (hi : iFinset.image (⇑(Finsupp.weight w)) φ.support) :

                          Alias of MvPolynomial.weightedHomogeneousComponent_eq_zero_of_notMem.

                          def MvPolynomial.decompose' (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} (w : σM) [AddCommMonoid M] [DecidableEq M] (φ : MvPolynomial σ R) :
                          DirectSum M fun (i : M) => (weightedHomogeneousSubmodule R w i)

                          The decompose' argument of weightedDecomposition.

                          Equations
                            Instances For
                              theorem MvPolynomial.decompose'_apply (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} (w : σM) [AddCommMonoid M] [DecidableEq M] (φ : MvPolynomial σ R) (m : M) :
                              ((decompose' R w φ) m) = (weightedHomogeneousComponent w m) φ

                              Given a weight w, the decomposition of MvPolynomial σ R into weighted homogeneous submodules

                              Equations
                                Instances For

                                  Given a weight, MvPolynomial as a graded algebra

                                  Equations
                                    Instances For
                                      theorem MvPolynomial.weightedDecomposition.decompose'_eq (R : Type u_1) {M : Type u_2} [CommSemiring R] {σ : Type u_3} (w : σM) [AddCommMonoid M] [DecidableEq M] :