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

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

    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

      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

          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) :
          MvPolynomial.IsWeightedHomogeneous w (MvPolynomial.C r) 0

          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} (hφ : MvPolynomial.IsWeightedHomogeneous w φ n) (d : σ →₀ ) (hd : (Finsupp.weight w) d n) :

          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 : M} {n : M} {w : σM} (hφ : φ 0) (hm : MvPolynomial.IsWeightedHomogeneous w φ m) (hn : MvPolynomial.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} {ψ : MvPolynomial σ R} {n : M} {w : σM} (hφ : MvPolynomial.IsWeightedHomogeneous w φ n) (hψ : MvPolynomial.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, MvPolynomial.IsWeightedHomogeneous w (φ i) n) :
          MvPolynomial.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} {ψ : MvPolynomial σ R} {m : M} {n : M} {w : σM} (hφ : MvPolynomial.IsWeightedHomogeneous w φ m) (hψ : MvPolynomial.IsWeightedHomogeneous w ψ n) :

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

          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, MvPolynomial.IsWeightedHomogeneous w (φ i) (n i))MvPolynomial.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} (hφ : MvPolynomial.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] :

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

            @[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) :
            (MvPolynomial.weightedHomogeneousComponent w n) (MvPolynomial.C r * φ) = MvPolynomial.C r * (MvPolynomial.weightedHomogeneousComponent w 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) (h : dφ.support, (Finsupp.weight w) d 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) :
            ∑ᶠ (m : M), (MvPolynomial.weightedHomogeneousComponent w m) φ = φ

            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) :
            ∑ᶠ (m : M), (MvPolynomial.weightedHomogeneousComponent w 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 : M} {n : M} {p : MvPolynomial σ R} (h : p MvPolynomial.weightedHomogeneousSubmodule R w n) :
            (MvPolynomial.weightedHomogeneousComponent w m) p = if m = n then p else 0

            The weighted homogeneous components of a weighted homogeneous polynomial.

            theorem MvPolynomial.DirectSum.coeLinearMap_eq_dfinsupp_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) => { x : MvPolynomial σ R // x MvPolynomial.weightedHomogeneousSubmodule R w i }) :
            (DirectSum.coeLinearMap fun (i : M) => MvPolynomial.weightedHomogeneousSubmodule R w i) x = DFinsupp.sum x fun (x : M) (x_1 : { x_1 : MvPolynomial σ R // x_1 MvPolynomial.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) => { x : MvPolynomial σ R // x MvPolynomial.weightedHomogeneousSubmodule R w i }) :
            (DirectSum.coeAddMonoidHom fun (i : M) => MvPolynomial.weightedHomogeneousSubmodule R w i) x = DFinsupp.sum x fun (x : M) (x_1 : { x_1 : MvPolynomial σ R // x_1 MvPolynomial.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) => { x : MvPolynomial σ R // x MvPolynomial.weightedHomogeneousSubmodule R w i }) :
            (DirectSum.coeLinearMap fun (i : M) => MvPolynomial.weightedHomogeneousSubmodule R w i) x = ∑ᶠ (m : M), (x m)
            @[simp]
            theorem MvPolynomial.weightedHomogeneousComponent_zero {R : Type u_1} {M : Type u_2} [CommSemiring R] {σ : Type u_3} [CanonicallyOrderedAddCommMonoid M] {w : σM} (φ : MvPolynomial σ R) [NoZeroSMulDivisors M] (hw : ∀ (i : σ), w i 0) :

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

            def MvPolynomial.NonTorsionWeight {M : Type u_2} {σ : Type u_3} [CanonicallyOrderedAddCommMonoid 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} [CanonicallyOrderedAddCommMonoid M] {w : σM} [NoZeroSMulDivisors M] (hw : ∀ (i : σ), w i 0) :
              theorem MvPolynomial.weightedDegree_eq_zero_iff {M : Type u_2} {σ : Type u_3} [CanonicallyLinearOrderedAddCommMonoid M] {w : σM} (hw : MvPolynomial.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 multivatiate 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} [CanonicallyLinearOrderedAddCommMonoid M] {w : σM} (hw : MvPolynomial.NonTorsionWeight w) (p : MvPolynomial σ R) :
              MvPolynomial.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_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) :
              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) => { x : MvPolynomial σ R // x MvPolynomial.weightedHomogeneousSubmodule R w i }

              The decompose' argument of weightedDecomposition.

              Equations
              • One or more equations did not get rendered due to their size.
              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) :

                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] :
                    DirectSum.Decomposition.decompose' = fun (φ : MvPolynomial σ R) => (DirectSum.mk (fun (i : M) => { x : MvPolynomial σ R // x MvPolynomial.weightedHomogeneousSubmodule R w i }) (Finset.image (⇑(Finsupp.weight w)) φ.support)) fun (m : (Finset.image (⇑(Finsupp.weight w)) φ.support)) => (MvPolynomial.weightedHomogeneousComponent w m) φ,