Documentation

DerivedAlgGeo.AlgebraicGeometry.ProjectiveSpectrum.Modules.TwistMultiplication

The twisted multiplication A(d) ⊗ M → M(d), at a localization #

#584's remaining piece is the comparison F ⊗ O(d) ≅ F(d) — tensoring with O(d) is shifting the grading by d. Both routes to it need the same thing first: a map, and the map is multiplication of homogeneous fractions. This file supplies it at one localization, with the bilinearity a tensor lift consumes.

Why it is short #

Because of a fact about the model rather than a construction. DegreeZeroLocalization 𝒜 𝓝 S is a submodule of LocalizedModule S M, and for 𝓝 over the ring itself the ambient is LocalizedModule S A, which is Localization S. So an element of DegreeZeroLocalization 𝒜 (intShift 𝒜 d) S is already a scalar acting on LocalizedModule S M: no multiplication has to be defined on representatives, and no well-definedness argument is needed. All that is left is to check the product lands in the right submodule, which is smul_mem_intShift on the numerator and SetLike.mul_mem_graded on the denominator.

This is the same observation that made #689 and #692 tractable — the grading is a property of subobjects of one ambient, not extra structure the ambient knows about.

The one thing that does not come free #

twistMul_smul_right needs SMulCommClass (HomogeneousLocalization 𝒜 S) (LocalizedModule S A) (LocalizedModule S M), which is not an instance. The HomogeneousLocalization 𝒜 S-action is Module.compHom along algebraMap into Localization S, so naming that map moves the goal into Localization S where commutativity is free. The same gap appeared in #695's map_smul'.

Up to the presheaf #

sectionTwistMul is the same product on sections. Its local-fraction certificate is the product of the two factors' certificates on the intersection of their opens, rebuilt by twistMul_mk — which is what that rule exists for. Three details carry the proof: the neighbourhood must be V₁ ⊓ V₂, because each factor's fraction is valid only on its own open; the denominator misses the point by primality, since neither factor's does; and the degree is e₂ + e₁ in that order, because twistMul takes the A(d) factor first.

twistMultiplicationHom is then ModuleCat.MonoidalCategory.tensorLift fed the four laws LinearMap.mk₂ asks for. Note the scalar changes ring between the two levels: a section-level scalar lives in Γ(U, 𝒪) and a fibre-level one in HomogeneousLocalization 𝒜 (primeCompl x), so the two smul laws push it through openToLocalization. The argument order flips with it — section-level left linearity is fibre-level twistMul_*_right.

What the chart sees #

intShiftZeroModuleLinearEquiv_twistMul is the identity the isomorphism proof turns on. On a localization containing a degree-one f, the module trivialization and the ring trivialization are multiplication by the same scalar, so they commute with the product by associativity of that action and nothing else. Read the other way: over a degree-one chart the twisted multiplication is the untwisted one, conjugated by two isomorphisms — which is why the local half of Presheaf.W_of_coversTop should not need the generator machinery Divisors/AssociatedSheaf/Construction.lean builds for the corresponding Cartier statement.

Scope #

The map, and what it looks like on a chart. That it is an isomorphism is not here: TwistComparison.lean lifts the chart identity to sections, reads the untwisted multiplication as the right unitor, and feeds the result to Presheaf.W_of_coversTop over degreeOneCharts_coversTop.

@[implicit_reducible]

The monoidal structure on presheaves of modules over the structure presheaf.

Needed to write ⊗ in twistMultiplicationHom, and local for the same reason Divisors/AssociatedSheaf/Construction.lean keeps its copy local: it is a choice of structure on a category this file does not own. Named rather than anonymous because the generated name for this type carries an underscore, which the naming linter rejects.

Equations
Instances For
    noncomputable def AlgebraicGeometry.Proj.twistMul {A M σA σM : Type u} [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) (d : ℤ) (w : ↥(GradedModule.DegreeZeroLocalization 𝒜 (GradedModule.intShift 𝒜 d) S)) (z : ↥(GradedModule.DegreeZeroLocalization 𝒜 𝓜 S)) :

    Multiplication by a section of A(d), landing in M(d).

    The underlying element is the scalar action of LocalizedModule S A = Localization S on LocalizedModule S M; only the certificate is new.

    Equations
    Instances For
      @[simp]
      theorem AlgebraicGeometry.Proj.coe_twistMul {A M σA σM : Type u} [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) (d : ℤ) (w : ↥(GradedModule.DegreeZeroLocalization 𝒜 (GradedModule.intShift 𝒜 d) S)) (z : ↥(GradedModule.DegreeZeroLocalization 𝒜 𝓜 S)) :
      ↑(twistMul 𝒜 𝓜 S d w z) = ↑w • ↑z
      @[simp]
      theorem AlgebraicGeometry.Proj.twistMul_mk {A M σA σM : Type u} [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) (d : ℤ) (cw : GradedModule.NumDenSameDeg 𝒜 (GradedModule.intShift 𝒜 d) S) (cz : GradedModule.NumDenSameDeg 𝒜 𝓜 S) :
      twistMul 𝒜 𝓜 S d (GradedModule.DegreeZeroLocalization.mk cw) (GradedModule.DegreeZeroLocalization.mk cz) = GradedModule.DegreeZeroLocalization.mk { deg := cw.deg + cz.deg, num := ⟨↑cw.num • ↑cz.num, ⋯⟩, den := ⟨↑cw.den * ↑cz.den, ⋯⟩, den_mem := ⋯ }

      The twisted multiplication in explicit fractions.

      The rule a caller needs to rebuild a local-fraction certificate downstream, in the same role intShiftZeroLinearEquiv_apply_mk plays for the chart trivialization.

      theorem AlgebraicGeometry.Proj.twistMul_add_left {A M σA σM : Type u} [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) (d : ℤ) (w w' : ↥(GradedModule.DegreeZeroLocalization 𝒜 (GradedModule.intShift 𝒜 d) S)) (z : ↥(GradedModule.DegreeZeroLocalization 𝒜 𝓜 S)) :
      twistMul 𝒜 𝓜 S d (w + w') z = twistMul 𝒜 𝓜 S d w z + twistMul 𝒜 𝓜 S d w' z
      theorem AlgebraicGeometry.Proj.twistMul_add_right {A M σA σM : Type u} [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) (d : ℤ) (w : ↥(GradedModule.DegreeZeroLocalization 𝒜 (GradedModule.intShift 𝒜 d) S)) (z z' : ↥(GradedModule.DegreeZeroLocalization 𝒜 𝓜 S)) :
      twistMul 𝒜 𝓜 S d w (z + z') = twistMul 𝒜 𝓜 S d w z + twistMul 𝒜 𝓜 S d w z'
      theorem AlgebraicGeometry.Proj.twistMul_smul_left {A M σA σM : Type u} [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) (d : ℤ) (a : HomogeneousLocalization 𝒜 S) (w : ↥(GradedModule.DegreeZeroLocalization 𝒜 (GradedModule.intShift 𝒜 d) S)) (z : ↥(GradedModule.DegreeZeroLocalization 𝒜 𝓜 S)) :
      twistMul 𝒜 𝓜 S d (a • w) z = a • twistMul 𝒜 𝓜 S d w z
      theorem AlgebraicGeometry.Proj.twistMul_smul_right {A M σA σM : Type u} [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) (d : ℤ) (a : HomogeneousLocalization 𝒜 S) (w : ↥(GradedModule.DegreeZeroLocalization 𝒜 (GradedModule.intShift 𝒜 d) S)) (z : ↥(GradedModule.DegreeZeroLocalization 𝒜 𝓜 S)) :
      twistMul 𝒜 𝓜 S d w (a • z) = a • twistMul 𝒜 𝓜 S d w z
      noncomputable def AlgebraicGeometry.Proj.sectionTwistMul {A M σA σM : Type u} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ℕ → σA) (𝓜 : ℕ → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (d : ℤ) {U : TopologicalSpace.Opens ↑(ProjectiveSpectrum.top 𝒜)} (s : (associatedSheafInType 𝒜 𝓜).obj.obj (Opposite.op U)) (t : (associatedSheafInType 𝒜 (GradedModule.intShift 𝒜 d)).obj.obj (Opposite.op U)) :

      The twisted multiplication on sections.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[simp]
        theorem AlgebraicGeometry.Proj.sectionTwistMul_apply {A M σA σM : Type u} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ℕ → σA) (𝓜 : ℕ → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (d : ℤ) {U : TopologicalSpace.Opens ↑(ProjectiveSpectrum.top 𝒜)} (s : (associatedSheafInType 𝒜 𝓜).obj.obj (Opposite.op U)) (t : (associatedSheafInType 𝒜 (GradedModule.intShift 𝒜 d)).obj.obj (Opposite.op U)) (x : ↥U) :
        ↑(sectionTwistMul 𝒜 𝓜 d s t) x = twistMul 𝒜 𝓜 (↑x).asHomogeneousIdeal.toIdeal.primeCompl d (↑t x) (↑s x)
        theorem AlgebraicGeometry.Proj.sectionTwistMul_add_left {A M σA σM : Type u} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ℕ → σA) (𝓜 : ℕ → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (d : ℤ) {U : TopologicalSpace.Opens ↑(ProjectiveSpectrum.top 𝒜)} (s₁ s₂ : (associatedSheafInType 𝒜 𝓜).obj.obj (Opposite.op U)) (t : (associatedSheafInType 𝒜 (GradedModule.intShift 𝒜 d)).obj.obj (Opposite.op U)) :
        sectionTwistMul 𝒜 𝓜 d (s₁ + s₂) t = sectionTwistMul 𝒜 𝓜 d s₁ t + sectionTwistMul 𝒜 𝓜 d s₂ t
        theorem AlgebraicGeometry.Proj.sectionTwistMul_add_right {A M σA σM : Type u} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ℕ → σA) (𝓜 : ℕ → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (d : ℤ) {U : TopologicalSpace.Opens ↑(ProjectiveSpectrum.top 𝒜)} (s : (associatedSheafInType 𝒜 𝓜).obj.obj (Opposite.op U)) (t₁ t₂ : (associatedSheafInType 𝒜 (GradedModule.intShift 𝒜 d)).obj.obj (Opposite.op U)) :
        sectionTwistMul 𝒜 𝓜 d s (t₁ + t₂) = sectionTwistMul 𝒜 𝓜 d s t₁ + sectionTwistMul 𝒜 𝓜 d s t₂
        theorem AlgebraicGeometry.Proj.sectionTwistMul_smul_left {A M σA σM : Type u} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ℕ → σA) (𝓜 : ℕ → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (d : ℤ) {U : TopologicalSpace.Opens ↑(ProjectiveSpectrum.top 𝒜)} (r : ↑((ProjectiveSpectrum.Proj.structureSheaf 𝒜).obj.obj (Opposite.op U))) (s : (associatedSheafInType 𝒜 𝓜).obj.obj (Opposite.op U)) (t : (associatedSheafInType 𝒜 (GradedModule.intShift 𝒜 d)).obj.obj (Opposite.op U)) :
        sectionTwistMul 𝒜 𝓜 d (r • s) t = r • sectionTwistMul 𝒜 𝓜 d s t
        theorem AlgebraicGeometry.Proj.sectionTwistMul_smul_right {A M σA σM : Type u} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ℕ → σA) (𝓜 : ℕ → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (d : ℤ) {U : TopologicalSpace.Opens ↑(ProjectiveSpectrum.top 𝒜)} (r : ↑((ProjectiveSpectrum.Proj.structureSheaf 𝒜).obj.obj (Opposite.op U))) (s : (associatedSheafInType 𝒜 𝓜).obj.obj (Opposite.op U)) (t : (associatedSheafInType 𝒜 (GradedModule.intShift 𝒜 d)).obj.obj (Opposite.op U)) :
        sectionTwistMul 𝒜 𝓜 d s (r • t) = r • sectionTwistMul 𝒜 𝓜 d s t
        noncomputable def AlgebraicGeometry.Proj.twistMultiplicationHom {A M σA σM : Type u} [CommRing A] [AddCommGroup M] [Module A M] [SetLike σA A] [AddSubgroupClass σA A] [SetLike σM M] [AddSubgroupClass σM M] (𝒜 : ℕ → σA) (𝓜 : ℕ → σM) [GradedRing 𝒜] [SetLike.GradedSMul 𝒜 𝓜] (d : ℤ) :

        The twisted multiplication as a map of presheaves of modules.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem AlgebraicGeometry.Proj.intShiftZeroModuleLinearEquiv_twistMul {A M σA σM : Type u} [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) (d : ℤ) {f : A} (hf : f ∈ 𝒜 1) (hfS : f ∈ S) (w : ↥(GradedModule.DegreeZeroLocalization 𝒜 (GradedModule.intShift 𝒜 d) S)) (z : ↥(GradedModule.DegreeZeroLocalization 𝒜 𝓜 S)) :

          The chart trivializations intertwine the twisted multiplication.

          Both are multiplication by the same scalar, so this is associativity of that action and nothing more. Over a degree-one chart it says the twisted multiplication is the untwisted one conjugated by the two trivializations, which is the local statement the comparison's isomorphism proof needs.