Documentation

DerivedAlgGeo.Algebra.Module.GradedModule.Localization

Degree-zero homogeneous localization of graded modules #

This file supplies the algebraic input missing from Mathlib's Proj API. Mathlib already constructs the degree-zero homogeneous localization ring HomogeneousLocalization 𝒜 S and the ordinary localized module LocalizedModule S M. We isolate inside the latter the fractions whose module numerator and ring denominator lie in matching graded pieces.

The construction is intentionally indexed by the same additive grading monoid on the ring and the module. Integer shifts, which reconcile a natural grading on the ring with an integer-indexed family of module twists, belong to the separate graded-shift layer.

Localizing away from one element #

awayMk writes the fraction m / fⁿ, and two statements make it a usable normal form:

Together these turn DegreeZeroLocalization 𝒜 𝓜 (.powers f) into fractions with an explicit representative and a computable equality test, which is what any basis for it has to start from (see the Laurent monomial basis of #491).

awayMk_eq_zero_iff specialises the equality test to the zero fraction, which is what makes the numerator a faithful record: any independence statement about fractions reduces to one about numerators.

awayMk_zero, awayMk_add, awayMk_sum and awayMk_shift are the arithmetic that goes with the normal form: the first three are additivity in the numerator at a fixed denominator, and the last puts two fractions over a common denominator. Spanning arguments need exactly this pair — decompose a numerator into a sum, then align denominators — and none of the four costs a cancellation hypothesis.

Homogeneous fractions #

structure GradedModule.NumDenSameDeg {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [CommRing A] [SetLike σA A] [SetLike σM M] (𝒜 : ι → σA) (𝓜 : ι → σM) (S : Submonoid A) :
Type (max (max u_1 u_2) u_3)

A module fraction whose numerator and denominator lie in matching graded pieces.

  • deg : Κ

    The common grading index of the numerator and denominator.

  • num : ↥(𝓜 self.deg)

    The homogeneous numerator.

  • den : ↥(𝒜 self.deg)

    The homogeneous denominator.

  • den_mem : ↑self.den ∈ S

    The denominator belongs to the submonoid being localized.

Instances For
    def GradedModule.NumDenSameDeg.embedding {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [SetLike σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} {S : Submonoid A} (c : NumDenSameDeg 𝒜 𝓜 S) :

    Forget the grading certificate and view a homogeneous module fraction in the ordinary localized module.

    Equations
    Instances For
      @[simp]
      theorem GradedModule.NumDenSameDeg.embedding_eq {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [SetLike σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} {S : Submonoid A} (c : NumDenSameDeg 𝒜 𝓜 S) :

      The degree-zero submodule #

      @[implicit_reducible]
      noncomputable instance GradedModule.localizedModuleModule {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] (𝒜 : ι → σA) [GradedRing 𝒜] (S : Submonoid A) :

      Restrict scalars on the ordinary localized module along the inclusion of the degree-zero homogeneous localization into the full localization.

      Equations
      def GradedModule.IsDegreeZero {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [SetLike σM M] (𝒜 : ι → σA) (𝓜 : ι → σM) (S : Submonoid A) (z : LocalizedModule S M) :

      An ordinary localized-module element is degree zero if it has a representative whose module numerator and ring denominator lie in matching graded pieces.

      Equations
      Instances For
        theorem GradedModule.isDegreeZero_zero {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ι → σA) (𝓜 : ι → σM) [GradedRing 𝒜] (S : Submonoid A) :
        IsDegreeZero 𝒜 𝓜 S 0
        theorem GradedModule.IsDegreeZero.add {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ι → σA) (𝓜 : ι → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (S : Submonoid A) {x y : LocalizedModule S M} (hx : IsDegreeZero 𝒜 𝓜 S x) (hy : IsDegreeZero 𝒜 𝓜 S y) :
        IsDegreeZero 𝒜 𝓜 S (x + y)
        theorem GradedModule.IsDegreeZero.neg {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ι → σA) (𝓜 : ι → σM) (S : Submonoid A) {x : LocalizedModule S M} (hx : IsDegreeZero 𝒜 𝓜 S x) :
        IsDegreeZero 𝒜 𝓜 S (-x)
        theorem GradedModule.IsDegreeZero.smul {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] (𝒜 : ι → σA) (𝓜 : ι → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (S : Submonoid A) (a : HomogeneousLocalization 𝒜 S) {x : LocalizedModule S M} (hx : IsDegreeZero 𝒜 𝓜 S x) :
        IsDegreeZero 𝒜 𝓜 S (a • x)
        def GradedModule.degreeZeroSubmodule {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ι → σA) (𝓜 : ι → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (S : Submonoid A) :

        The degree-zero homogeneous localization as a submodule of the ordinary localized module.

        Equations
        Instances For
          @[reducible, inline]
          abbrev GradedModule.DegreeZeroLocalization {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ι → σA) (𝓜 : ι → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (S : Submonoid A) :

          The degree-zero homogeneous localization of the graded module M.

          Equations
          Instances For
            def GradedModule.DegreeZeroLocalization.mk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} (c : NumDenSameDeg 𝒜 𝓜 S) :
            ↥(DegreeZeroLocalization 𝒜 𝓜 S)

            Construct a degree-zero localized element from a certified homogeneous fraction.

            Equations
            Instances For
              @[simp]
              theorem GradedModule.DegreeZeroLocalization.coe_mk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} (c : NumDenSameDeg 𝒜 𝓜 S) :
              ↑(mk c) = c.embedding
              theorem GradedModule.DegreeZeroLocalization.mk_surjective {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} :

              Every degree-zero localized element has a homogeneous numerator and denominator.

              theorem GradedModule.DegreeZeroLocalization.ext {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} {x y : ↥(DegreeZeroLocalization 𝒜 𝓜 S)} (h : ↑x = ↑y) :
              x = y
              theorem GradedModule.DegreeZeroLocalization.ext_iff {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} {x y : ↥(DegreeZeroLocalization 𝒜 𝓜 S)} :
              x = y ↔ ↑x = ↑y
              theorem GradedModule.DegreeZeroLocalization.mk_eq_mk_iff {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} (p q : NumDenSameDeg 𝒜 𝓜 S) :
              mk p = mk q ↔ ∃ (u : ↥S), ↑u • ↑q.den • ↑p.num = ↑u • ↑p.den • ↑q.num

              Equality of homogeneous fractions is the ordinary localized-module equality criterion.

              @[simp]
              theorem GradedModule.DegreeZeroLocalization.coe_zero {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} :
              ↑0 = 0
              @[simp]
              theorem GradedModule.DegreeZeroLocalization.coe_add {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} (x y : ↥(DegreeZeroLocalization 𝒜 𝓜 S)) :
              ↑(x + y) = ↑x + ↑y
              @[simp]
              theorem GradedModule.DegreeZeroLocalization.coe_neg {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} (x : ↥(DegreeZeroLocalization 𝒜 𝓜 S)) :
              ↑(-x) = -↑x
              @[simp]
              theorem GradedModule.DegreeZeroLocalization.coe_smul {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} (a : HomogeneousLocalization 𝒜 S) (x : ↥(DegreeZeroLocalization 𝒜 𝓜 S)) :
              ↑(a • x) = a • ↑x
              theorem GradedModule.DegreeZeroLocalization.smul_mk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} (a : HomogeneousLocalization 𝒜 S) (c : NumDenSameDeg 𝒜 𝓜 S) :
              a • mk c = mk { deg := a.deg + c.deg, num := ⟨a.num • ↑c.num, ⋯⟩, den := ⟨a.den * ↑c.den, ⋯⟩, den_mem := ⋯ }

              The scalar action in explicit fractions: (p/q) • (m/s) = (p • m)/(q * s).

              The companion of twistMul_mk for the module action, and the rule a caller needs to rebuild a local-fraction certificate after multiplying by a scalar. Without it the action is opaque at a use site: coe_smul moves the problem into LocalizedModule but says nothing about which fraction comes out.

              The proof is the one already inside IsDegreeZero.smul, which constructs exactly this NumDenSameDeg in order to show the action stays degree zero; naming the computation separately means a caller no longer has to re-derive it.

              Not @[simp]. Its right-hand side is stated with a.num and a.den, the representative HomogeneousLocalization chooses, which is the less usable form — see mk_smul_mk below. Marking both would also be a simpNF conflict, since this one rewrites that one's left-hand side.

              @[simp]
              theorem GradedModule.DegreeZeroLocalization.mk_smul_mk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} (c' : HomogeneousLocalization.NumDenSameDeg 𝒜 S) (c : NumDenSameDeg 𝒜 𝓜 S) :
              HomogeneousLocalization.mk c' • mk c = mk { deg := c'.deg + c.deg, num := ⟨↑c'.num • ↑c.num, ⋯⟩, den := ⟨↑c'.den * ↑c.den, ⋯⟩, den_mem := ⋯ }

              The scalar action on two explicit fractions.

              smul_mk leaves the scalar as a.num / a.den, which are the representative HomogeneousLocalization chooses — not the fields of whatever NumDenSameDeg the caller built a from. When the scalar is itself written as HomogeneousLocalization.mk c', that gap has to be closed again at every use site. This states the rule with both sides explicit, so it does not.

              Maps induced by enlarging the denominator submonoid #

              noncomputable def GradedModule.DegreeZeroLocalization.mapOfLE {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S T : Submonoid A} (h : S ≤ T) :
              ↥(DegreeZeroLocalization 𝒜 𝓜 S) →+ ↥(DegreeZeroLocalization 𝒜 𝓜 T)

              Enlarging the denominator submonoid sends degree-zero homogeneous module fractions to degree-zero homogeneous module fractions.

              Equations
              Instances For
                @[simp]
                theorem GradedModule.DegreeZeroLocalization.mapOfLE_mk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S T : Submonoid A} (h : S ≤ T) (c : NumDenSameDeg 𝒜 𝓜 S) :
                (mapOfLE h) (mk c) = mk { deg := c.deg, num := c.num, den := c.den, den_mem := ⋯ }

                Inverting an element that is not a power of the new denominator #

                mapOfLE covers enlarging the denominator submonoid along an inclusion S ≤ T. The Čech differential needs a case it does not reach: along a face the denominators are .powers g₁ and .powers g₂ with g₁ * h = g₂, and Submonoid.powers g₁ ≤ Submonoid.powers g₂ is false — powers a ≤ powers b needs a to be a power of b, and divisibility is weaker.

                The map still exists, because g₁ is already invertible once g₂ is. These two lemmas supply exactly that, in the form LocalizedModule.lift consumes, and are what a face map must be built from. They are stated for a bare module because nothing about them is graded.

                theorem GradedModule.DegreeZeroLocalization.isUnit_algebraMap_localization_of_mul_mem {A : Type u_2} [CommRing A] {g₁ g₂ h : A} (hgh : g₁ * h ∈ Submonoid.powers g₂) :

                If g₁ * h is a power of g₂, then g₁ is already invertible after inverting g₂.

                g₁ * h is invertible there, and in a commutative ring a factor of a unit is a unit.

                theorem GradedModule.DegreeZeroLocalization.isUnit_algebraMap_end_of_mul_mem {A : Type u_2} {M : Type u_3} [CommRing A] [AddCommGroup M] [Module A M] {g₁ g₂ h : A} (hgh : g₁ * h ∈ Submonoid.powers g₂) (s : ↥(Submonoid.powers g₁)) :

                Every power of g₁ therefore acts invertibly on the module localized at g₂.

                This is the hypothesis of LocalizedModule.lift, so it is what turns the previous lemma into an actual map out of the localization at g₁. The scalar action factors through Localization (Submonoid.powers g₂), where the inverse is available.

                noncomputable def GradedModule.DegreeZeroLocalization.faceLift {A : Type u_2} {M : Type u_3} [CommRing A] [AddCommGroup M] [Module A M] {g₁ g₂ h : A} (hgh : g₁ * h ∈ Submonoid.powers g₂) :

                The map of ordinary localized modules along a Čech face.

                g₁ is already invertible after inverting g₂, so the universal property of LocalizedModule (Submonoid.powers g₁) M produces this map without any inclusion of denominator submonoids. This is the underlying map of faceMap; it carries no grading.

                Equations
                Instances For
                  theorem GradedModule.DegreeZeroLocalization.faceLift_mk {A : Type u_2} {M : Type u_3} [CommRing A] [AddCommGroup M] [Module A M] {g₁ g₂ h : A} (hgh : g₁ * h ∈ Submonoid.powers g₂) (hg : g₁ * h = g₂) (m : M) (n : ℕ) :
                  (faceLift hgh) (LocalizedModule.mk m ⟨g₁ ^ n, ⋯⟩) = LocalizedModule.mk (h ^ n • m) ⟨g₂ ^ n, ⋯⟩

                  Along a face, clearing the denominator g₁ⁿ multiplies numerator and denominator by hⁿ.

                  This is the formula the graded face map is defined by: the abstract LocalizedModule.lift is inverted here into an explicit fraction, which is what the degree-zero certificate needs.

                  Both sides are pinned by multiplying through by g₁ ⁿ, which acts invertibly on the target -- that is the whole content of isUnit_algebraMap_end_of_mul_mem.

                  theorem GradedModule.DegreeZeroLocalization.isDegreeZero_faceLift {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {g₁ g₂ h : A} {e : ι} (hh : h ∈ 𝒜 e) (hgh : g₁ * h ∈ Submonoid.powers g₂) (hg : g₁ * h = g₂) {z : LocalizedModule (Submonoid.powers g₁) M} (hz : IsDegreeZero 𝒜 𝓜 (Submonoid.powers g₁) z) :
                  IsDegreeZero 𝒜 𝓜 (Submonoid.powers g₂) ((faceLift hgh) z)

                  A face map preserves the degree-zero condition.

                  Clearing g₁ⁿ costs hⁿ in both numerator and denominator, so the matching-degree certificate survives with its degree raised by n • e.

                  noncomputable def GradedModule.DegreeZeroLocalization.faceMap {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {g₁ g₂ h : A} {e : ι} (hh : h ∈ 𝒜 e) (hgh : g₁ * h ∈ Submonoid.powers g₂) (hg : g₁ * h = g₂) :
                  ↥(DegreeZeroLocalization 𝒜 𝓜 (Submonoid.powers g₁)) →+ ↥(DegreeZeroLocalization 𝒜 𝓜 (Submonoid.powers g₂))

                  The Čech face map on degree-zero homogeneous localizations.

                  mapOfLE cannot supply this: along a face the denominator submonoids are Submonoid.powers g₁ and Submonoid.powers g₂ with g₁ * h = g₂, and divisibility does not nest powers submonoids. The map exists anyway because g₁ is invertible once g₂ is.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    theorem GradedModule.DegreeZeroLocalization.coe_faceMap {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {g₁ g₂ h : A} {e : ι} (hh : h ∈ 𝒜 e) (hgh : g₁ * h ∈ Submonoid.powers g₂) (hg : g₁ * h = g₂) (z : ↥(DegreeZeroLocalization 𝒜 𝓜 (Submonoid.powers g₁))) :
                    ↑((faceMap hh hgh hg) z) = (faceLift hgh) ↑z
                    theorem GradedModule.DegreeZeroLocalization.faceMap_mk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {g₁ g₂ h : A} {e : ι} (hh : h ∈ 𝒜 e) (hgh : g₁ * h ∈ Submonoid.powers g₂) (hg : g₁ * h = g₂) (c : NumDenSameDeg 𝒜 𝓜 (Submonoid.powers g₁)) (n : ℕ) (hn : g₁ ^ n = ↑c.den) :
                    (faceMap hh hgh hg) (mk c) = mk { deg := n • e + c.deg, num := ⟨h ^ n • ↑c.num, ⋯⟩, den := ⟨g₂ ^ n, ⋯⟩, den_mem := ⋯ }

                    The face map in explicit fractions: m / g₁ⁿ ↦ hⁿ m / g₂ⁿ.

                    Changing the grading by a membership equivalence #

                    Two gradings with the same members present the same degree-zero localization. The underlying element of LocalizedModule S M does not move at all; only the certificate is rebuilt. This is the localization-level counterpart of associatedIsoOfPiecewiseIff, and it is what lets a statement about intShift 𝒜 0 be read as one about 𝒜.

                    noncomputable def GradedModule.DegreeZeroLocalization.linearEquivOfMemIff {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} {σN : Type u_6} [SetLike σN M] [AddSubgroupClass σN M] (𝓝 : ι → σN) [SetLike.GradedSMul 𝒜 𝓝] (hmem : ∀ (i : ι) (m : M), m ∈ 𝓜 i ↔ m ∈ 𝓝 i) :
                    ↥(DegreeZeroLocalization 𝒜 𝓜 S) ≃ₗ[HomogeneousLocalization 𝒜 S] ↥(DegreeZeroLocalization 𝒜 𝓝 S)

                    Degree-zero localizations depend only on the membership predicates of the graded pieces.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem GradedModule.DegreeZeroLocalization.coe_linearEquivOfMemIff {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} {σN : Type u_6} [SetLike σN M] [AddSubgroupClass σN M] (𝓝 : ι → σN) [SetLike.GradedSMul 𝒜 𝓝] (hmem : ∀ (i : ι) (m : M), m ∈ 𝓜 i ↔ m ∈ 𝓝 i) (z : ↥(DegreeZeroLocalization 𝒜 𝓜 S)) :
                      ↑((linearEquivOfMemIff 𝓝 hmem) z) = ↑z
                      @[simp]
                      theorem GradedModule.DegreeZeroLocalization.linearEquivOfMemIff_mk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {S : Submonoid A} {σN : Type u_6} [SetLike σN M] [AddSubgroupClass σN M] (𝓝 : ι → σN) [SetLike.GradedSMul 𝒜 𝓝] (hmem : ∀ (i : ι) (m : M), m ∈ 𝓜 i ↔ m ∈ 𝓝 i) (c : NumDenSameDeg 𝒜 𝓜 S) :
                      (linearEquivOfMemIff 𝓝 hmem) (mk c) = mk { deg := c.deg, num := ⟨↑c.num, ⋯⟩, den := c.den, den_mem := ⋯ }

                      Localization away from one homogeneous element #

                      def GradedModule.DegreeZeroLocalization.awayMk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {f : A} {d : ι} (hf : f ∈ 𝒜 d) (n : ℕ) (m : M) (hm : m ∈ 𝓜 (n • d)) :
                      ↥(DegreeZeroLocalization 𝒜 𝓜 (Submonoid.powers f))

                      The degree-zero fraction m / fⁿ when f has degree d and m has degree n • d.

                      Equations
                      Instances For
                        @[simp]
                        theorem GradedModule.DegreeZeroLocalization.coe_awayMk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {f : A} {d : ι} (hf : f ∈ 𝒜 d) (n : ℕ) (m : M) (hm : m ∈ 𝓜 (n • d)) :
                        ↑(awayMk hf n m hm) = LocalizedModule.mk m ⟨f ^ n, ⋯⟩
                        theorem GradedModule.DegreeZeroLocalization.exists_awayMk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {f : A} {e : ι} (hf : f ∈ 𝒜 e) (hf0 : ∀ (n : ℕ), f ^ n ≠ 0) (z : ↥(DegreeZeroLocalization 𝒜 𝓜 (Submonoid.powers f))) :
                        ∃ (n : ℕ) (m : M) (hm : m ∈ 𝓜 (n • e)), z = awayMk hf n m hm

                        awayMk is a normal form. Every degree-zero fraction away from f is m / fⁿ for some n and some m of degree n • deg f.

                        The denominator is a power of f because that is what Submonoid.powers f means; the content is that the NumDenSameDeg degree certificate has no freedom left. It is pinned by DirectSum.degree_eq_of_mem_mem: the denominator lies both in the certified piece and, as fⁿ, in n • deg f, and a nonzero homogeneous element lies in exactly one piece.

                        The hypothesis is ∀ n, fⁿ ≠ 0 rather than f ≠ 0 so that no domain assumption is needed here; in a domain pow_ne_zero supplies it. It cannot be dropped: over a ring where f is nilpotent the localization is trivial and the degree is genuinely unconstrained.

                        theorem GradedModule.DegreeZeroLocalization.awayMk_eq_awayMk_iff {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] [IsDomain A] [Module.IsTorsionFree A M] {f : A} {e : ι} (hf : f ∈ 𝒜 e) (hf0 : f ≠ 0) {n m : ℕ} {p q : M} (hp : p ∈ 𝓜 (n • e)) (hq : q ∈ 𝓜 (m • e)) :
                        awayMk hf n p hp = awayMk hf m q hq ↔ f ^ m • p = f ^ n • q

                        Cross-multiplication decides equality of awayMks. p / fⁿ = q / fᵐ exactly when fᵐ • p = fⁿ • q, with no surviving ∃ u.

                        mk_eq_mk_iff is the general criterion and it leaves an unknown u ∈ Submonoid.powers f behind. Cancelling that u is the whole point of this lemma and the only place the two hypotheses are used: IsDomain A makes every fᵗ regular, and Module.IsTorsionFree A M turns a regular ring element into an injective scalar action on M. For M = A the latter is an instance, so the polynomial case needs neither supplied by hand.

                        Without torsion-freeness the statement is false, not merely unproved: an f-torsion element of M is a nonzero numerator whose fraction is zero.

                        theorem GradedModule.DegreeZeroLocalization.awayMk_zero {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {f : A} {e : ι} (hf : f ∈ 𝒜 e) (n : ℕ) :
                        awayMk hf n 0 ⋯ = 0

                        The zero numerator gives the zero fraction.

                        theorem GradedModule.DegreeZeroLocalization.awayMk_add {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {f : A} {e : ι} (hf : f ∈ 𝒜 e) (n : ℕ) (p q : M) (hp : p ∈ 𝓜 (n • e)) (hq : q ∈ 𝓜 (n • e)) :
                        awayMk hf n (p + q) ⋯ = awayMk hf n p hp + awayMk hf n q hq

                        awayMk is additive in the numerator at a fixed denominator.

                        theorem GradedModule.DegreeZeroLocalization.awayMk_sum {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {f : A} {e : ι} (hf : f ∈ 𝒜 e) (n : ℕ) {β : Type u_6} (s : Finset β) (p : β → M) (hp : ∀ (b : β), p b ∈ 𝓜 (n • e)) :
                        awayMk hf n (∑ b ∈ s, p b) ⋯ = ∑ b ∈ s, awayMk hf n (p b) ⋯

                        awayMk is additive over a finite sum of numerators.

                        The membership hypothesis is total (∀ b) rather than restricted to s, because the summands on the right have to carry their own certificates and a ∀ b ∈ s hypothesis is not available inside Finset.sum. In practice the summands are monomials of a fixed degree, so nothing is lost.

                        The proof descends into LocalizedModule before inducting. That is not incidental: the numerator appears in the type of awayMk's membership argument, so rewriting Finset.sum_insert in the goal directly fails on a non-type-correct motive. coe_awayMk discharges the certificate first, and the induction then runs over an ordinary equation.

                        theorem GradedModule.DegreeZeroLocalization.awayMk_shift {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {f : A} {e : ι} (hf : f ∈ 𝒜 e) (n t : ℕ) (p : M) (hp : p ∈ 𝓜 (n • e)) (hfp : f ^ t • p ∈ 𝓜 ((n + t) • e)) :
                        awayMk hf (n + t) (f ^ t • p) hfp = awayMk hf n p hp

                        Raising the denominator by fᵗ and the numerator with it leaves the fraction alone.

                        This is what puts two awayMks over a common denominator, which every argument about sums of fractions with different denominators needs. It holds over any ring: no cancellation is performed, so neither IsDomain nor torsion-freeness appears.

                        theorem GradedModule.DegreeZeroLocalization.exists_awayMk_pair {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {f : A} {e : ι} (hf : f ∈ 𝒜 e) (hf0 : ∀ (n : ℕ), f ^ n ≠ 0) (z₁ z₂ : ↥(DegreeZeroLocalization 𝒜 𝓜 (Submonoid.powers f))) :
                        ∃ (n : ℕ) (p₁ : M) (p₂ : M) (hp₁ : p₁ ∈ 𝓜 (n • e)) (hp₂ : p₂ ∈ 𝓜 (n • e)), z₁ = awayMk hf n p₁ hp₁ ∧ z₂ = awayMk hf n p₂ hp₂

                        Two fractions share a denominator. Any two degree-zero fractions away from f have awayMk representatives over one common power fⁿ.

                        This is exists_awayMk on each fraction followed by awayMk_shift to align the two exponents at their sum. It is the move every statement about a sum of fractions opens with — additivity of awayMk exists only at a fixed denominator — and it is what the additivity of the sign projection (#340's contracting homotopy) reduces to. Like exists_awayMk, it costs no domain or torsion-freeness hypothesis: no cancellation is performed.

                        theorem GradedModule.DegreeZeroLocalization.awayMk_eq_zero_iff {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] [IsDomain A] [Module.IsTorsionFree A M] {f : A} {e : ι} (hf : f ∈ 𝒜 e) (hf0 : f ≠ 0) {n : ℕ} {p : M} (hp : p ∈ 𝓜 (n • e)) :
                        awayMk hf n p hp = 0 ↔ p = 0

                        A fraction vanishes exactly when its numerator does.

                        This is awayMk_eq_awayMk_iff against the zero fraction, and it is what makes the numerator a faithful record of the element: any independence statement about fractions reduces to one about numerators. The hypotheses are inherited from that lemma and are needed for the same reason — without torsion-freeness an f-torsion numerator is a nonzero numerator with a zero fraction.

                        theorem GradedModule.DegreeZeroLocalization.awayMk_deg_congr {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {f : A} {e₁ e₂ : ι} (h : e₁ = e₂) (hf₁ : f ∈ 𝒜 e₁) (hf₂ : f ∈ 𝒜 e₂) (n : ℕ) (p : M) (hp₁ : p ∈ 𝓜 (n • e₁)) (hp₂ : p ∈ 𝓜 (n • e₂)) :
                        awayMk hf₁ n p hp₁ = awayMk hf₂ n p hp₂

                        Two equal degree indices give the same awayMk.

                        awayMk records the degree of its denominator in the NumDenSameDeg certificate, so two certificates that are propositionally equal still need transporting. Every caller that meets this has the same shape: one side names the degree as (γ' + single i₀ c).degree and the other as c + γ'.degree.

                        theorem GradedModule.DegreeZeroLocalization.faceMap_awayMk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] {𝒜 : ι → σA} {𝓜 : ι → σM} [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] {g₁ g₂ h : A} {e e₁ : ι} (hh : h ∈ 𝒜 e) (hg₁ : g₁ ∈ 𝒜 e₁) (hgh : g₁ * h ∈ Submonoid.powers g₂) (hg : g₁ * h = g₂) (hg₂ : g₂ ∈ 𝒜 (e + e₁)) (n : ℕ) (p : M) (hp : p ∈ 𝓜 (n • e₁)) (hres : h ^ n • p ∈ 𝓜 (n • (e + e₁))) :
                        (faceMap hh hgh hg) (awayMk hg₁ n p hp) = awayMk hg₂ n (h ^ n • p) hres

                        The face map in awayMk normal form. Restricting p / g₁ⁿ along g₁ * h = g₂ multiplies the numerator by hⁿ and leaves the exponent alone.

                        This is faceMap_mk with the denominator already known to be a power, which is the shape every caller has: the face of a Čech intersection is a restriction between two awayMks, not between two arbitrary NumDenSameDegs. The target degree is written e + e₁ rather than e₁ + e so that n • (e + e₁) matches the n • e + n • e₁ that faceMap_mk produces.

                        Functoriality #

                        structure GradedModule.GradedLinearMap {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σM : Type u_5} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σM M] (𝓜 : ι → σM) {N : Type u_6} {σN : Type u_7} [AddCommGroup N] [Module A N] [SetLike σN N] [AddSubgroupClass σN N] (𝓝 : ι → σN) :
                        Type (max u_3 u_6)

                        An A-linear map which preserves every graded piece. Mathlib has a bundled graded ring map, but currently no corresponding bundled map for internally graded modules.

                        • toLinearMap : M →ₗ[A] N

                          The underlying linear map.

                        • map_mem (i : Κ) (m : M) : m ∈ 𝓜 i → self.toLinearMap m ∈ 𝓝 i

                          The map preserves every homogeneous component.

                        Instances For
                          theorem GradedModule.GradedLinearMap.ext {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σM : Type u_5} {inst✝ : CommRing A} {inst✝¹ : AddCommGroup M} {inst✝² : Module A M} {inst✝³ : SetLike σM M} {𝓜 : ι → σM} {N : Type u_6} {σN : Type u_7} {inst✝⁴ : AddCommGroup N} {inst✝⁵ : Module A N} {inst✝⁶ : SetLike σN N} {inst✝⁷ : AddSubgroupClass σN N} {𝓝 : ι → σN} {x y : GradedLinearMap 𝓜 𝓝} (toLinearMap : x.toLinearMap = y.toLinearMap) :
                          x = y
                          theorem GradedModule.GradedLinearMap.ext_iff {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σM : Type u_5} {inst✝ : CommRing A} {inst✝¹ : AddCommGroup M} {inst✝² : Module A M} {inst✝³ : SetLike σM M} {𝓜 : ι → σM} {N : Type u_6} {σN : Type u_7} {inst✝⁴ : AddCommGroup N} {inst✝⁵ : Module A N} {inst✝⁶ : SetLike σN N} {inst✝⁷ : AddSubgroupClass σN N} {𝓝 : ι → σN} {x y : GradedLinearMap 𝓜 𝓝} :
                          noncomputable def GradedModule.GradedLinearMap.localized {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σM : Type u_5} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σM M] (𝓜 : ι → σM) (S : Submonoid A) {N : Type u_6} {σN : Type u_7} [AddCommGroup N] [Module A N] [SetLike σN N] [AddSubgroupClass σN N] (𝓝 : ι → σN) (f : GradedLinearMap 𝓜 𝓝) :

                          The ordinary localized map underlying a grading-preserving linear map.

                          Equations
                          Instances For
                            @[simp]
                            theorem GradedModule.GradedLinearMap.localized_mk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σM : Type u_5} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σM M] (𝓜 : ι → σM) (S : Submonoid A) {N : Type u_6} {σN : Type u_7} [AddCommGroup N] [Module A N] [SetLike σN N] [AddSubgroupClass σN N] (𝓝 : ι → σN) (f : GradedLinearMap 𝓜 𝓝) (m : M) (s : ↥S) :
                            (localized 𝓜 S 𝓝 f) (LocalizedModule.mk m s) = LocalizedModule.mk (f.toLinearMap m) s
                            noncomputable def GradedModule.GradedLinearMap.map {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ι → σA) (𝓜 : ι → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (S : Submonoid A) {N : Type u_6} {σN : Type u_7} [AddCommGroup N] [Module A N] [SetLike σN N] [AddSubgroupClass σN N] (𝓝 : ι → σN) [SetLike.GradedSMul 𝒜 𝓝] (f : GradedLinearMap 𝓜 𝓝) :
                            ↥(DegreeZeroLocalization 𝒜 𝓜 S) →ₗ[HomogeneousLocalization 𝒜 S] ↥(DegreeZeroLocalization 𝒜 𝓝 S)

                            A grading-preserving linear map sends degree-zero homogeneous localizations to degree-zero homogeneous localizations.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[simp]
                              theorem GradedModule.GradedLinearMap.map_mk {ι : Type u_1} {A : Type u_2} {M : Type u_3} {σA : Type u_4} {σM : Type u_5} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ι → σA) (𝓜 : ι → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (S : Submonoid A) {N : Type u_6} {σN : Type u_7} [AddCommGroup N] [Module A N] [SetLike σN N] [AddSubgroupClass σN N] (𝓝 : ι → σN) [SetLike.GradedSMul 𝒜 𝓝] (f : GradedLinearMap 𝓜 𝓝) (c : NumDenSameDeg 𝒜 𝓜 S) :
                              (map 𝒜 𝓜 S 𝓝 f) (DegreeZeroLocalization.mk c) = DegreeZeroLocalization.mk { deg := c.deg, num := ⟨f.toLinearMap ↑c.num, ⋯⟩, den := c.den, den_mem := ⋯ }

                              The graded ring as a module #

                              When the graded module is the graded ring itself, the construction above recovers Mathlib's degree-zero homogeneous localization. Keeping this comparison explicit is useful for identifying the associated sheaf of the graded ring with the structure sheaf on Proj.

                              noncomputable def GradedModule.DegreeZeroLocalization.homogeneousLocalizationLinearMap {ι : Type u_1} {A : Type u_2} {σA : Type u_4} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [SetLike σA A] [AddSubgroupClass σA A] (𝒜 : ι → σA) [GradedRing 𝒜] (S : Submonoid A) :

                              Regard a homogeneous localization element as a degree-zero element of the localization of the graded ring considered as a module over itself.

                              Equations
                              Instances For
                                @[simp]
                                theorem GradedModule.DegreeZeroLocalization.coe_homogeneousLocalizationLinearMap {ι : Type u_1} {A : Type u_2} {σA : Type u_4} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [SetLike σA A] [AddSubgroupClass σA A] (𝒜 : ι → σA) [GradedRing 𝒜] (S : Submonoid A) (z : HomogeneousLocalization 𝒜 S) :
                                ↑((homogeneousLocalizationLinearMap 𝒜 S) z) = z.val
                                theorem GradedModule.DegreeZeroLocalization.homogeneousLocalizationLinearMap_injective {ι : Type u_1} {A : Type u_2} {σA : Type u_4} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [SetLike σA A] [AddSubgroupClass σA A] (𝒜 : ι → σA) [GradedRing 𝒜] (S : Submonoid A) :
                                theorem GradedModule.DegreeZeroLocalization.homogeneousLocalizationLinearMap_surjective {ι : Type u_1} {A : Type u_2} {σA : Type u_4} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [SetLike σA A] [AddSubgroupClass σA A] (𝒜 : ι → σA) [GradedRing 𝒜] (S : Submonoid A) :
                                noncomputable def GradedModule.DegreeZeroLocalization.selfLinearEquiv {ι : Type u_1} {A : Type u_2} {σA : Type u_4} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [SetLike σA A] [AddSubgroupClass σA A] (𝒜 : ι → σA) [GradedRing 𝒜] (S : Submonoid A) :

                                The degree-zero localization of the graded ring as a module is canonically linearly equivalent to Mathlib's homogeneous localization ring.

                                Equations
                                Instances For
                                  @[simp]
                                  theorem GradedModule.DegreeZeroLocalization.coe_selfLinearEquiv {ι : Type u_1} {A : Type u_2} {σA : Type u_4} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [SetLike σA A] [AddSubgroupClass σA A] (𝒜 : ι → σA) [GradedRing 𝒜] (S : Submonoid A) (z : HomogeneousLocalization 𝒜 S) :
                                  ↑((selfLinearEquiv 𝒜 S) z) = z.val
                                  @[simp]
                                  theorem GradedModule.DegreeZeroLocalization.selfLinearEquiv_apply_mk {ι : Type u_1} {A : Type u_2} {σA : Type u_4} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [SetLike σA A] [AddSubgroupClass σA A] (𝒜 : ι → σA) [GradedRing 𝒜] (S : Submonoid A) (c : HomogeneousLocalization.NumDenSameDeg 𝒜 S) :
                                  (selfLinearEquiv 𝒜 S) (HomogeneousLocalization.mk c) = mk { deg := c.deg, num := c.num, den := c.den, den_mem := ⋯ }
                                  @[simp]
                                  theorem GradedModule.DegreeZeroLocalization.selfLinearEquiv_symm_apply_mk {ι : Type u_1} {A : Type u_2} {σA : Type u_4} [AddCommMonoid ι] [DecidableEq ι] [CommRing A] [SetLike σA A] [AddSubgroupClass σA A] (𝒜 : ι → σA) [GradedRing 𝒜] (S : Submonoid A) (c : NumDenSameDeg 𝒜 𝒜 S) :
                                  (selfLinearEquiv 𝒜 S).symm (mk c) = HomogeneousLocalization.mk { deg := c.deg, num := c.num, den := c.den, den_mem := ⋯ }