Documentation

Mathlib.RingTheory.GradedAlgebra.HomogeneousLocalization

Homogeneous Localization #

Notation #

Main definitions and results #

This file constructs the subring of Aₓ where the numerator and denominator have the same grading, i.e. {a/b ∈ Aₓ | ∃ (i : ι), a ∈ 𝒜ᵢ ∧ b ∈ 𝒜ᵢ}.

However NumDenSameDeg 𝒜 x cannot have a ring structure for many reasons, for example if c is a NumDenSameDeg, then generally, c + (-c) is not necessarily 0 for degree reasons --- 0 is considered to have grade zero (see deg_zero) but c + (-c) has the same degree as c. To circumvent this, we quotient NumDenSameDeg 𝒜 x by the kernel of c ↦ c.num / c.den.

References #

structure HomogeneousLocalization.NumDenSameDeg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] (𝒜 : ι → σ) (x : Submonoid A) :
Type (max u_1 u_2)

Let x be a submonoid of A, then NumDenSameDeg 𝒜 x is a structure with a numerator and a denominator with same grading such that the denominator is contained in x.

  • deg : ι
  • num : ↥(𝒜 self.deg)
  • den : ↥(𝒜 self.deg)
  • den_mem : ↑self.den ∈ x
Instances For
    theorem HomogeneousLocalization.NumDenSameDeg.ext {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} (x : Submonoid A) {c1 c2 : NumDenSameDeg 𝒜 x} (hdeg : c1.deg = c2.deg) (hnum : ↑c1.num = ↑c2.num) (hden : ↑c1.den = ↑c2.den) :
    c1 = c2
    theorem HomogeneousLocalization.NumDenSameDeg.ext_iff {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} {c1 c2 : NumDenSameDeg 𝒜 x} :
    c1 = c2 ↔ c1.deg = c2.deg ∧ ↑c1.num = ↑c2.num ∧ ↑c1.den = ↑c2.den
    @[implicit_reducible]
    instance HomogeneousLocalization.NumDenSameDeg.instNeg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [NegMemClass σ A] {𝒜 : ι → σ} (x : Submonoid A) :
    Equations
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.deg_neg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [NegMemClass σ A] {𝒜 : ι → σ} (x : Submonoid A) (c : NumDenSameDeg 𝒜 x) :
    (-c).deg = c.deg
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.num_neg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [NegMemClass σ A] {𝒜 : ι → σ} (x : Submonoid A) (c : NumDenSameDeg 𝒜 x) :
    ↑(-c).num = -↑c.num
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.den_neg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [NegMemClass σ A] {𝒜 : ι → σ} (x : Submonoid A) (c : NumDenSameDeg 𝒜 x) :
    ↑(-c).den = ↑c.den
    @[implicit_reducible]
    instance HomogeneousLocalization.NumDenSameDeg.instSMul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} (x : Submonoid A) {α : Type u_4} [SMul α A] [SMulMemClass σ α A] :
    SMul α (NumDenSameDeg 𝒜 x)
    Equations
    • One or more equations did not get rendered due to their size.
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.deg_smul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} (x : Submonoid A) {α : Type u_4} [SMul α A] [SMulMemClass σ α A] (c : NumDenSameDeg 𝒜 x) (m : α) :
    (m • c).deg = c.deg
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.num_smul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} (x : Submonoid A) {α : Type u_4} [SMul α A] [SMulMemClass σ α A] (c : NumDenSameDeg 𝒜 x) (m : α) :
    ↑(m • c).num = m • ↑c.num
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.den_smul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} (x : Submonoid A) {α : Type u_4} [SMul α A] [SMulMemClass σ α A] (c : NumDenSameDeg 𝒜 x) (m : α) :
    ↑(m • c).den = ↑c.den
    @[implicit_reducible]
    instance HomogeneousLocalization.NumDenSameDeg.instOne {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    Equations
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.deg_one {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    deg 1 = 0
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.num_one {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    ↑(num 1) = 1
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.den_one {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    ↑(den 1) = 1
    @[implicit_reducible]
    instance HomogeneousLocalization.NumDenSameDeg.instZero {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    Equations
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.deg_zero {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    deg 0 = 0
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.num_zero {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    num 0 = 0
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.den_zero {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    ↑(den 0) = 1
    @[implicit_reducible]
    instance HomogeneousLocalization.NumDenSameDeg.instMul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    Equations
    • One or more equations did not get rendered due to their size.
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.deg_mul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (c1 c2 : NumDenSameDeg 𝒜 x) :
    (c1 * c2).deg = c1.deg + c2.deg
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.num_mul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (c1 c2 : NumDenSameDeg 𝒜 x) :
    ↑(c1 * c2).num = ↑c1.num * ↑c2.num
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.den_mul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (c1 c2 : NumDenSameDeg 𝒜 x) :
    ↑(c1 * c2).den = ↑c1.den * ↑c2.den
    @[implicit_reducible]
    instance HomogeneousLocalization.NumDenSameDeg.instAdd {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    Equations
    • One or more equations did not get rendered due to their size.
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.deg_add {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (c1 c2 : NumDenSameDeg 𝒜 x) :
    (c1 + c2).deg = c1.deg + c2.deg
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.num_add {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (c1 c2 : NumDenSameDeg 𝒜 x) :
    ↑(c1 + c2).num = ↑c1.den * ↑c2.num + ↑c2.den * ↑c1.num
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.den_add {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (c1 c2 : NumDenSameDeg 𝒜 x) :
    ↑(c1 + c2).den = ↑c1.den * ↑c2.den
    @[implicit_reducible]
    instance HomogeneousLocalization.NumDenSameDeg.instCommMonoid {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    Equations
    • One or more equations did not get rendered due to their size.
    @[implicit_reducible]
    instance HomogeneousLocalization.NumDenSameDeg.instPowNat {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] :
    Equations
    • One or more equations did not get rendered due to their size.
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.deg_pow {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (c : NumDenSameDeg 𝒜 x) (n : ℕ) :
    (c ^ n).deg = n • c.deg
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.num_pow {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (c : NumDenSameDeg 𝒜 x) (n : ℕ) :
    ↑(c ^ n).num = ↑c.num ^ n
    @[simp]
    theorem HomogeneousLocalization.NumDenSameDeg.den_pow {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (c : NumDenSameDeg 𝒜 x) (n : ℕ) :
    ↑(c ^ n).den = ↑c.den ^ n
    def HomogeneousLocalization.NumDenSameDeg.embedding {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] (𝒜 : ι → σ) (x : Submonoid A) (p : NumDenSameDeg 𝒜 x) :

    For x : prime ideal of A and any p : NumDenSameDeg 𝒜 x, or equivalent a numerator and a denominator of the same degree, we get an element p.num / p.den of Aₓ.

    Equations
    Instances For
      def HomogeneousLocalization {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] (𝒜 : ι → σ) (x : Submonoid A) :
      Type (max u_1 u_2)

      For x : prime ideal of A, HomogeneousLocalization 𝒜 x is NumDenSameDeg 𝒜 x modulo the kernel of embedding 𝒜 x. This is essentially the subring of Aₓ where the numerator and denominator share the same grading.

      Equations
      Instances For
        @[reducible, inline]
        abbrev HomogeneousLocalization.mk {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (y : NumDenSameDeg 𝒜 x) :

        Construct an element of HomogeneousLocalization 𝒜 x from a homogeneous fraction.

        Equations
        Instances For
          theorem HomogeneousLocalization.mk_surjective {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} :
          def HomogeneousLocalization.val {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (y : HomogeneousLocalization 𝒜 x) :

          View an element of HomogeneousLocalization 𝒜 x as an element of Aₓ by forgetting that the numerator and denominator are of the same grading.

          Equations
          Instances For
            @[simp]
            theorem HomogeneousLocalization.val_mk {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (i : NumDenSameDeg 𝒜 x) :
            (mk i).val = Localization.mk ↑i.num ⟨↑i.den, ⋯⟩
            theorem HomogeneousLocalization.val_injective {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} (x : Submonoid A) :
            theorem HomogeneousLocalization.val_injective_iff {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} {a₁ a₂ : HomogeneousLocalization 𝒜 x} :
            a₁ = a₂ ↔ a₁.val = a₂.val
            theorem HomogeneousLocalization.subsingleton {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] (𝒜 : ι → σ) {x : Submonoid A} (hx : 0 ∈ x) :
            @[implicit_reducible]
            instance HomogeneousLocalization.instSMul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} (x : Submonoid A) {α : Type u_4} [SMul α A] [IsScalarTower α A A] [SMulMemClass σ α A] :
            Equations
            @[simp]
            theorem HomogeneousLocalization.mk_smul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} (x : Submonoid A) {α : Type u_4} [SMul α A] [IsScalarTower α A A] [SMulMemClass σ α A] (i : NumDenSameDeg 𝒜 x) (m : α) :
            mk (m • i) = m • mk i
            @[simp]
            theorem HomogeneousLocalization.val_smul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} (x : Submonoid A) {α : Type u_4} [SMul α A] [IsScalarTower α A A] [SMulMemClass σ α A] (n : α) (y : HomogeneousLocalization 𝒜 x) :
            (n • y).val = n • y.val
            @[implicit_reducible]
            instance HomogeneousLocalization.instSMulNat {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) :
            Equations
            theorem HomogeneousLocalization.val_nsmul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} (x : Submonoid A) (n : ℕ) (y : HomogeneousLocalization 𝒜 x) :
            (n • y).val = n • y.val
            @[implicit_reducible]
            instance HomogeneousLocalization.instSMulInt {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] {𝒜 : ι → σ} (x : Submonoid A) :
            Equations
            theorem HomogeneousLocalization.val_zsmul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] {𝒜 : ι → σ} (x : Submonoid A) (n : ℤ) (y : HomogeneousLocalization 𝒜 x) :
            (n • y).val = n • y.val
            @[implicit_reducible]
            instance HomogeneousLocalization.instNeg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [NegMemClass σ A] {𝒜 : ι → σ} (x : Submonoid A) :
            Equations
            @[simp]
            theorem HomogeneousLocalization.mk_neg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [NegMemClass σ A] {𝒜 : ι → σ} (x : Submonoid A) (i : NumDenSameDeg 𝒜 x) :
            mk (-i) = -mk i
            @[simp]
            theorem HomogeneousLocalization.val_neg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [NegMemClass σ A] {𝒜 : ι → σ} {x : Submonoid A} (y : HomogeneousLocalization 𝒜 x) :
            (-y).val = -y.val
            @[implicit_reducible]
            instance HomogeneousLocalization.hasPow {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) :
            Equations
            @[simp]
            theorem HomogeneousLocalization.mk_pow {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) (i : NumDenSameDeg 𝒜 x) (n : ℕ) :
            mk (i ^ n) = mk i ^ n
            @[implicit_reducible]
            instance HomogeneousLocalization.instAdd {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) :
            Equations
            @[simp]
            theorem HomogeneousLocalization.mk_add {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) (i j : NumDenSameDeg 𝒜 x) :
            mk (i + j) = mk i + mk j
            @[implicit_reducible]
            instance HomogeneousLocalization.instSub {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) :
            Equations
            @[implicit_reducible]
            instance HomogeneousLocalization.instMul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) :
            Equations
            @[simp]
            theorem HomogeneousLocalization.mk_mul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) (i j : NumDenSameDeg 𝒜 x) :
            mk (i * j) = mk i * mk j
            @[implicit_reducible]
            instance HomogeneousLocalization.instOne {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) :
            Equations
            @[simp]
            theorem HomogeneousLocalization.mk_one {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) :
            mk 1 = 1
            @[implicit_reducible]
            instance HomogeneousLocalization.instZero {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) :
            Equations
            @[simp]
            theorem HomogeneousLocalization.mk_zero {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) :
            mk 0 = 0
            theorem HomogeneousLocalization.zero_eq {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) :
            theorem HomogeneousLocalization.one_eq {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] (x : Submonoid A) :
            @[simp]
            theorem HomogeneousLocalization.val_zero {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} :
            val 0 = 0
            @[simp]
            theorem HomogeneousLocalization.val_one {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} :
            val 1 = 1
            @[simp]
            theorem HomogeneousLocalization.val_add {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} (y1 y2 : HomogeneousLocalization 𝒜 x) :
            (y1 + y2).val = y1.val + y2.val
            @[simp]
            theorem HomogeneousLocalization.val_mul {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} (y1 y2 : HomogeneousLocalization 𝒜 x) :
            (y1 * y2).val = y1.val * y2.val
            @[simp]
            theorem HomogeneousLocalization.val_sub {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} (y1 y2 : HomogeneousLocalization 𝒜 x) :
            (y1 - y2).val = y1.val - y2.val
            @[simp]
            theorem HomogeneousLocalization.val_pow {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} (y : HomogeneousLocalization 𝒜 x) (n : ℕ) :
            (y ^ n).val = y.val ^ n
            @[implicit_reducible]
            instance HomogeneousLocalization.instNatCast {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} :
            Equations
            @[implicit_reducible]
            instance HomogeneousLocalization.instIntCast {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} :
            Equations
            @[simp]
            theorem HomogeneousLocalization.val_natCast {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} (n : ℕ) :
            (↑n).val = ↑n
            @[simp]
            theorem HomogeneousLocalization.val_intCast {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} (n : ℤ) :
            (↑n).val = ↑n
            @[implicit_reducible]
            instance HomogeneousLocalization.homogeneousLocalizationCommRing {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} :
            Equations
            @[implicit_reducible]
            instance HomogeneousLocalization.homogeneousLocalizationAlgebra {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} :
            Equations
            • One or more equations did not get rendered due to their size.
            @[simp]
            theorem HomogeneousLocalization.algebraMap_apply {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} (y : HomogeneousLocalization 𝒜 x) :
            theorem HomogeneousLocalization.mk_eq_zero_of_num {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} (f : NumDenSameDeg 𝒜 x) (h : f.num = 0) :
            mk f = 0
            theorem HomogeneousLocalization.mk_eq_zero_of_den {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} (f : NumDenSameDeg 𝒜 x) (h : f.den = 0) :
            mk f = 0
            def HomogeneousLocalization.fromZeroRingHom {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] (x : Submonoid A) :
            ↥(𝒜 0) →+* HomogeneousLocalization 𝒜 x

            The map from 𝒜 0 to the degree 0 part of 𝒜ₓ sending f ↦ f/1.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[implicit_reducible]
              instance HomogeneousLocalization.instAlgebraSubtypeMemOfNat {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} :
              Algebra (↥(𝒜 0)) (HomogeneousLocalization 𝒜 x)
              Equations
              theorem HomogeneousLocalization.algebraMap_eq {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} :
              algebraMap (↥(𝒜 0)) (HomogeneousLocalization 𝒜 x) = fromZeroRingHom 𝒜 x
              instance HomogeneousLocalization.instIsScalarTowerSubtypeMemOfNatLocalization {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {x : Submonoid A} :
              noncomputable def HomogeneousLocalization.num {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (f : HomogeneousLocalization 𝒜 x) :
              A

              Numerator of an element in HomogeneousLocalization x.

              Equations
              Instances For
                noncomputable def HomogeneousLocalization.den {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (f : HomogeneousLocalization 𝒜 x) :
                A

                Denominator of an element in HomogeneousLocalization x.

                Equations
                Instances For
                  noncomputable def HomogeneousLocalization.deg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (f : HomogeneousLocalization 𝒜 x) :
                  ι

                  For an element in HomogeneousLocalization x, degree is the natural number i such that 𝒜 i contains both numerator and denominator.

                  Equations
                  Instances For
                    theorem HomogeneousLocalization.den_mem {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (f : HomogeneousLocalization 𝒜 x) :
                    f.den ∈ x
                    theorem HomogeneousLocalization.num_mem_deg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (f : HomogeneousLocalization 𝒜 x) :
                    f.num ∈ 𝒜 f.deg
                    theorem HomogeneousLocalization.den_mem_deg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (f : HomogeneousLocalization 𝒜 x) :
                    f.den ∈ 𝒜 f.deg
                    theorem HomogeneousLocalization.eq_num_div_den {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (f : HomogeneousLocalization 𝒜 x) :
                    theorem HomogeneousLocalization.den_smul_val {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (f : HomogeneousLocalization 𝒜 x) :
                    theorem HomogeneousLocalization.ext_iff_val {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] {𝒜 : ι → σ} {x : Submonoid A} (f g : HomogeneousLocalization 𝒜 x) :
                    f = g ↔ f.val = g.val
                    @[reducible, inline]
                    abbrev HomogeneousLocalization.AtPrime {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] (𝒜 : ι → σ) (𝔭 : Ideal A) [𝔭.IsPrime] :
                    Type (max u_1 u_2)

                    Localizing a ring homogeneously at a prime ideal.

                    Equations
                    Instances For
                      theorem HomogeneousLocalization.isUnit_iff_isUnit_val {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] (𝒜 : ι → σ) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (𝔭 : Ideal A) [𝔭.IsPrime] (f : AtPrime 𝒜 𝔭) :
                      instance HomogeneousLocalization.instNontrivialAtPrime {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] (𝒜 : ι → σ) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (𝔭 : Ideal A) [𝔭.IsPrime] :
                      Nontrivial (AtPrime 𝒜 𝔭)
                      instance HomogeneousLocalization.isLocalRing {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] (𝒜 : ι → σ) [AddCommMonoid ι] [DecidableEq ι] [GradedRing 𝒜] (𝔭 : Ideal A) [𝔭.IsPrime] :
                      IsLocalRing (AtPrime 𝒜 𝔭)
                      @[reducible, inline]
                      abbrev HomogeneousLocalization.Away {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] (𝒜 : ι → σ) (f : A) :
                      Type (max u_1 u_2)

                      Localizing away from powers of f homogeneously.

                      Equations
                      Instances For
                        def HomogeneousLocalization.Away.mk {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {f : A} {d : ι} (hf : f ∈ 𝒜 d) (n : ℕ) (x : A) (hx : x ∈ 𝒜 (n • d)) :
                        Away 𝒜 f

                        This is a convenient constructor for Away 𝒜 f when f is homogeneous. Away.mk 𝒜 hf n x hx is the fraction x / f ^ n.

                        Equations
                        Instances For
                          @[simp]
                          theorem HomogeneousLocalization.Away.val_mk {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {f : A} {d : ι} (n : ℕ) (hf : f ∈ 𝒜 d) (x : A) (hx : x ∈ 𝒜 (n • d)) :
                          val (Away.mk 𝒜 hf n x hx) = Localization.mk x ⟨f ^ n, ⋯⟩
                          theorem HomogeneousLocalization.Away.mk_surjective {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {f : A} {d : ι} (hf : f ∈ 𝒜 d) (x : Away 𝒜 f) :
                          ∃ (n : ℕ) (a : A) (ha : a ∈ 𝒜 (n • d)), Away.mk 𝒜 hf n a ha = x
                          theorem HomogeneousLocalization.Away.eventually_smul_mem {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {f : A} {m : ι} (hf : f ∈ 𝒜 m) (z : Away 𝒜 f) :
                          ∀ᶠ (n : ℕ) in Filter.atTop, f ^ n • val z ∈ ⇑(algebraMap A (Localization (Submonoid.powers f))) '' ↑(𝒜 (n • m))
                          def HomogeneousLocalization.NumDenSameDeg.map {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] {𝒜 : ι → σ} {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} (f : 𝒜 →+*ᵍ ℬ) {W₁ : Submonoid A} {W₂ : Submonoid B} (hw : W₁ ≤ Submonoid.comap f W₂) (c : NumDenSameDeg 𝒜 W₁) :
                          NumDenSameDeg ℬ W₂

                          Map NumDenSameDeg along a graded ring hom.

                          Equations
                          Instances For
                            @[simp]
                            theorem HomogeneousLocalization.NumDenSameDeg.map_den {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] {𝒜 : ι → σ} {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} (f : 𝒜 →+*ᵍ ℬ) {W₁ : Submonoid A} {W₂ : Submonoid B} (hw : W₁ ≤ Submonoid.comap f W₂) (c : NumDenSameDeg 𝒜 W₁) :
                            (map f hw c).den = (f.gradedAddHom c.deg) c.den
                            @[simp]
                            theorem HomogeneousLocalization.NumDenSameDeg.map_num {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] {𝒜 : ι → σ} {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} (f : 𝒜 →+*ᵍ ℬ) {W₁ : Submonoid A} {W₂ : Submonoid B} (hw : W₁ ≤ Submonoid.comap f W₂) (c : NumDenSameDeg 𝒜 W₁) :
                            (map f hw c).num = (f.gradedAddHom c.deg) c.num
                            @[simp]
                            theorem HomogeneousLocalization.NumDenSameDeg.map_deg {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] {𝒜 : ι → σ} {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} (f : 𝒜 →+*ᵍ ℬ) {W₁ : Submonoid A} {W₂ : Submonoid B} (hw : W₁ ≤ Submonoid.comap f W₂) (c : NumDenSameDeg 𝒜 W₁) :
                            (map f hw c).deg = c.deg
                            def HomogeneousLocalization.map {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} [GradedRing ℬ] {P : Submonoid A} {Q : Submonoid B} (g : 𝒜 →+*ᵍ ℬ) (comap_le : P ≤ Submonoid.comap g Q) :

                            Let A, B be two graded rings with the same indexing set and g : 𝒜 →+*ᵍ ℬ be a graded ring homomorphism. Let P ≤ A be a submonoid and Q ≤ B be a submonoid such that P ≤ g⁻¹ Q, then g induces a map from the homogeneous localization A⁰_P to the homogeneous localization B⁰_Q.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[reducible, inline]
                              abbrev HomogeneousLocalization.mapId {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {P Q : Submonoid A} (h : P ≤ Q) :

                              Let A be a graded ring and P ≤ Q be two submonoids, then the homogeneous localization of A at P embeds into the homogeneous localization of A at Q.

                              Equations
                              Instances For
                                theorem HomogeneousLocalization.map_mk {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} [GradedRing ℬ] {P : Submonoid A} {Q : Submonoid B} (g : 𝒜 →+*ᵍ ℬ) (comap_le : P ≤ Submonoid.comap g Q) (x : NumDenSameDeg 𝒜 P) :
                                (map g comap_le) (mk x) = mk { deg := x.deg, num := ⟨g ↑x.num, ⋯⟩, den := ⟨g ↑x.den, ⋯⟩, den_mem := ⋯ }
                                @[simp]
                                theorem HomogeneousLocalization.map_id {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] (P : Submonoid A) :
                                theorem HomogeneousLocalization.map_comp {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} [GradedRing ℬ] {C : Type u_6} {ψ : Type u_7} [CommRing C] [SetLike ψ C] [AddSubgroupClass ψ C] {𝒞 : ι → ψ} [GradedRing 𝒞] {f : 𝒜 →+*ᵍ ℬ} {g : ℬ →+*ᵍ 𝒞} {P : Submonoid A} {Q : Submonoid B} {R : Submonoid C} (hpq : P ≤ Submonoid.comap f Q) (hqr : Q ≤ Submonoid.comap g R) :
                                map (g.comp f) ⋯ = (map g hqr).comp (map f hpq)
                                theorem HomogeneousLocalization.map_map {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} [GradedRing ℬ] {C : Type u_6} {ψ : Type u_7} [CommRing C] [SetLike ψ C] [AddSubgroupClass ψ C] {𝒞 : ι → ψ} [GradedRing 𝒞] {f : 𝒜 →+*ᵍ ℬ} {g : ℬ →+*ᵍ 𝒞} {P : Submonoid A} {Q : Submonoid B} {R : Submonoid C} (hpq : P ≤ Submonoid.comap f Q) (hqr : Q ≤ Submonoid.comap g R) (x : HomogeneousLocalization 𝒜 P) :
                                (map g hqr) ((map f hpq) x) = (map (g.comp f) ⋯) x
                                def HomogeneousLocalization.Away.map {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} [GradedRing ℬ] (g : 𝒜 →+*ᵍ ℬ) (f : A) :
                                Away 𝒜 f →+* Away ℬ (g f)

                                If g : 𝒜 →+*ᵍ ℬ is a graded ring homomorphism and f : A then we have a map Away 𝒜 f →+* Away ℬ (g f).

                                Equations
                                Instances For
                                  @[simp]
                                  theorem HomogeneousLocalization.Away.map_mk {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} [GradedRing ℬ] {d : ι} (g : 𝒜 →+*ᵍ ℬ) (f : A) (hf : f ∈ 𝒜 d) (n : ℕ) (x : A) (hx : x ∈ 𝒜 (n • d)) :
                                  (Away.map g f) (Away.mk 𝒜 hf n x hx) = Away.mk ℬ ⋯ n (g x) ⋯
                                  @[simp]
                                  theorem HomogeneousLocalization.Away.map_id {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] (f : A) :
                                  @[simp]
                                  theorem HomogeneousLocalization.Away.map_comp {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} [GradedRing ℬ] {C : Type u_6} {ψ : Type u_7} [CommRing C] [SetLike ψ C] [AddSubgroupClass ψ C] {𝒞 : ι → ψ} [GradedRing 𝒞] (f : 𝒜 →+*ᵍ ℬ) (g : ℬ →+*ᵍ 𝒞) (s : A) :
                                  Away.map (g.comp f) s = (Away.map g (f s)).comp (Away.map f s)
                                  theorem HomogeneousLocalization.Away.map_map {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} [GradedRing ℬ] {C : Type u_6} {ψ : Type u_7} [CommRing C] [SetLike ψ C] [AddSubgroupClass ψ C] {𝒞 : ι → ψ} [GradedRing 𝒞] (f : 𝒜 →+*ᵍ ℬ) (g : ℬ →+*ᵍ 𝒞) (s : A) (x : Away 𝒜 s) :
                                  (Away.map g (f s)) ((Away.map f s) x) = (Away.map (g.comp f) s) x
                                  noncomputable def HomogeneousLocalization.localRingHom {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} [GradedRing ℬ] (f : 𝒜 →+*ᵍ ℬ) (I : Ideal A) [I.IsPrime] (J : Ideal B) [J.IsPrime] (hIJ : I = Ideal.comap f J) :
                                  AtPrime 𝒜 I →+* AtPrime ℬ J

                                  If f : 𝒜 →+*ᵍ ℬ is a graded ring homomorphism and I is a prime ideal of A and J is a prime ideal of B and f⁻¹ J = I then we have a map AtPrime 𝒜 I →+* AtPrime ℬ J.

                                  Equations
                                  Instances For
                                    @[simp]
                                    theorem HomogeneousLocalization.val_localRingHom {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} [GradedRing ℬ] {f : 𝒜 →+*ᵍ ℬ} {I : Ideal A} [I.IsPrime] {J : Ideal B} [J.IsPrime] {hIJ : I = Ideal.comap f J} (x : AtPrime 𝒜 I) :
                                    val ((localRingHom f I J hIJ) x) = (Localization.localRingHom I J (↑f) hIJ) (val x)
                                    instance HomogeneousLocalization.instIsLocalHomAtPrimeRingHomLocalRingHom {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {B : Type u_4} {τ : Type u_5} [CommRing B] [SetLike τ B] [AddSubgroupClass τ B] {ℬ : ι → τ} [GradedRing ℬ] {f : 𝒜 →+*ᵍ ℬ} {I : Ideal A} [I.IsPrime] {J : Ideal B} [J.IsPrime] {hIJ : I = Ideal.comap f J} :
                                    theorem HomogeneousLocalization.awayMapAux_mk {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {f g x : A} (hx : x = f * g) (n : ι) (a : ↥(𝒜 n)) (i : ℕ) (hi : f ^ i ∈ 𝒜 n) :
                                    (HomogeneousLocalization.awayMapAux✝ 𝒜 ⋯) (mk { deg := n, num := a, den := ⟨f ^ i, hi⟩, den_mem := ⋯ }) = Localization.mk (↑a * g ^ i) ⟨x ^ i, ⋯⟩
                                    theorem HomogeneousLocalization.range_awayMapAux_subset {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {e : ι} {f g : A} (hg : g ∈ 𝒜 e) {x : A} (hx : x = f * g) :
                                    noncomputable def HomogeneousLocalization.awayMap {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {e : ι} {f g : A} (hg : g ∈ 𝒜 e) {x : A} (hx : x = f * g) :
                                    Away 𝒜 f →+* Away 𝒜 x

                                    Given x = f * g with g homogeneous of positive degree, this is the map A_{(f)} → A_{(x)} taking a/f^i to ag^i/(fg)^i.

                                    Equations
                                    Instances For
                                      theorem HomogeneousLocalization.val_awayMap_eq_aux {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {e : ι} {f g : A} (hg : g ∈ 𝒜 e) {x : A} (hx : x = f * g) (a : Away 𝒜 f) :
                                      val ((awayMap 𝒜 hg hx) a) = (HomogeneousLocalization.awayMapAux✝ 𝒜 ⋯) a
                                      theorem HomogeneousLocalization.val_awayMap {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {e : ι} {f g : A} (hg : g ∈ 𝒜 e) {x : A} (hx : x = f * g) (a : Away 𝒜 f) :
                                      theorem HomogeneousLocalization.awayMap_fromZeroRingHom {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {e : ι} {f g : A} (hg : g ∈ 𝒜 e) {x : A} (hx : x = f * g) (a : ↥(𝒜 0)) :
                                      theorem HomogeneousLocalization.val_awayMap_mk {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {e : ι} {f g : A} (hg : g ∈ 𝒜 e) {x : A} (hx : x = f * g) (n : ι) (a : ↥(𝒜 n)) (i : ℕ) (hi : f ^ i ∈ 𝒜 n) :
                                      val ((awayMap 𝒜 hg hx) (mk { deg := n, num := a, den := ⟨f ^ i, hi⟩, den_mem := ⋯ })) = Localization.mk (↑a * g ^ i) ⟨x ^ i, ⋯⟩
                                      noncomputable def HomogeneousLocalization.awayMapₐ {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {e : ι} {f g : A} (hg : g ∈ 𝒜 e) {x : A} (hx : x = f * g) :
                                      Away 𝒜 f →ₐ[↥(𝒜 0)] Away 𝒜 x

                                      Given x = f * g with g homogeneous of positive degree, this is the map A_{(f)} → A_{(x)} taking a/f^i to ag^i/(fg)^i.

                                      Equations
                                      Instances For
                                        @[simp]
                                        theorem HomogeneousLocalization.awayMapₐ_apply {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {e : ι} {f g : A} (hg : g ∈ 𝒜 e) {x : A} (hx : x = f * g) (a : Away 𝒜 f) :
                                        (awayMapₐ 𝒜 hg hx) a = (awayMap 𝒜 hg hx) a
                                        @[simp]
                                        theorem HomogeneousLocalization.awayMap_mk {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] (𝒜 : ι → σ) [GradedRing 𝒜] {e : ι} {f g : A} (hg : g ∈ 𝒜 e) {x : A} (hx : x = f * g) {d : ι} (n : ℕ) (hf : f ∈ 𝒜 d) (a : A) (ha : a ∈ 𝒜 (n • d)) :
                                        (awayMap 𝒜 hg hx) (Away.mk 𝒜 hf n a ha) = Away.mk 𝒜 ⋯ n (a * g ^ n) ⋯
                                        @[reducible, inline]
                                        abbrev HomogeneousLocalization.Away.isLocalizationElem {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] {𝒜 : ℕ → σ} [GradedRing 𝒜] {e d : ℕ} {f : A} (hf : f ∈ 𝒜 d) {g : A} (hg : g ∈ 𝒜 e) :
                                        Away 𝒜 f

                                        The element t := g ^ d / f ^ e such that A_{(fg)} = A_{(f)}[1/t].

                                        Equations
                                        Instances For
                                          theorem HomogeneousLocalization.Away.isLocalization_mul {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] {𝒜 : ℕ → σ} [GradedRing 𝒜] {e d : ℕ} {f : A} (hf : f ∈ 𝒜 d) {g : A} (hg : g ∈ 𝒜 e) {x : A} (hx : x = f * g) (hd : d ≠ 0) :

                                          Let t := g ^ d / f ^ e, then A_{(fg)} = A_{(f)}[1/t].

                                          theorem HomogeneousLocalization.Away.span_mk_prod_pow_eq_top {ι : Type u_1} {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] [AddCommMonoid ι] [DecidableEq ι] {𝒜 : ι → σ} [GradedRing 𝒜] {f : A} {d : ι} (hf : f ∈ 𝒜 d) {ι' : Type u_4} [Fintype ι'] (v : ι' → A) (hx : Algebra.adjoin (↥(𝒜 0)) (Set.range v) = ⊤) (dv : ι' → ι) (hxd : ∀ (i : ι'), v i ∈ 𝒜 (dv i)) :
                                          Submodule.span ↥(𝒜 0) {x : Away 𝒜 f | ∃ (a : ℕ) (ai : ι' → ℕ) (hai : ∑ i : ι', ai i • dv i = a • d), Away.mk 𝒜 hf a (∏ i : ι', v i ^ ai i) ⋯ = x} = ⊤

                                          Let 𝒜 be a graded ring, finitely generated (as an algebra) over 𝒜₀ by { vᵢ }, where vᵢ has degree dvᵢ. If f : A has degree d, then 𝒜_(f) is generated (as a module) over 𝒜₀ by elements of the form (∏ i, vᵢ ^ aᵢ) / fᵃ such that ∑ aᵢ • dvᵢ = a • d.

                                          theorem HomogeneousLocalization.Away.adjoin_mk_prod_pow_eq_top {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] {𝒜 : ℕ → σ} [GradedRing 𝒜] {f : A} {d : ℕ} (hf : f ∈ 𝒜 d) (ι' : Type u_4) [Fintype ι'] (v : ι' → A) (hx : Algebra.adjoin (↥(𝒜 0)) (Set.range v) = ⊤) (dv : ι' → ℕ) (hxd : ∀ (i : ι'), v i ∈ 𝒜 (dv i)) :
                                          Algebra.adjoin ↥(𝒜 0) {x : Away 𝒜 f | ∃ (a : ℕ) (ai : ι' → ℕ) (hai : ∑ i : ι', ai i • dv i = a • d) (_ : ∀ (i : ι'), ai i ≤ d), Away.mk 𝒜 hf a (∏ i : ι', v i ^ ai i) ⋯ = x} = ⊤

                                          Let 𝒜 be a graded ring, finitely generated (as an algebra) over 𝒜₀ by { vᵢ }, where vᵢ has degree dvᵢ. If f : A has degree d, then 𝒜_(f) is generated (as an algebra) over 𝒜₀ by elements of the form (∏ i, vᵢ ^ aᵢ) / fᵃ such that ∑ aᵢ • dvᵢ = a • d and ∀ i, aᵢ ≤ d.

                                          theorem HomogeneousLocalization.Away.finiteType {A : Type u_2} {σ : Type u_3} [CommRing A] [SetLike σ A] [AddSubgroupClass σ A] {𝒜 : ℕ → σ} [GradedRing 𝒜] [Algebra.FiniteType (↥(𝒜 0)) A] (f : A) (d : ℕ) (hf : f ∈ 𝒜 d) :
                                          Algebra.FiniteType (↥(𝒜 0)) (Away 𝒜 f)