Documentation

DerivedAlgGeo.AlgebraicGeometry.ProjectiveSpectrum.Modules.TwistComparison

The comparison F ⊗ O(d) ≅ F(d), and what follows from it #

#584's remaining structural piece. TwistMultiplication.lean built the map M̃ ⊗ A(d)~ ⟶ M(d)~ and showed what it looks like on a degree-one chart; this file shows the map is inverted by sheafification, and reads off the two deliverables that were waiting on it — F(d)(e) ≅ F(d + e) and preservation of coherence.

The route, and why it is not Divisors/AssociatedSheaf/Construction.lean's #

That file proves the corresponding Cartier statement by exhibiting a generator of the tensor on a chart and finishing by 2-out-of-3. The generator route is unavailable here: it works because both Cartier factors are invertible, so the unit generates the tensor. Only O(d) is invertible here and F is arbitrary.

What replaces it is stronger and shorter. Over an open inside a degree-one chart the twisted multiplication is not merely a local weak equivalence — it is already bijective on sections, because A(d) is there the structure sheaf and the map is the scalar action. So the local input to Presheaf.W_of_coversTop is an isomorphism of presheaves, and no local injectivity or surjectivity has to be proved by hand at all.

Concretely twistMultiplicationHom_app_eq factors the map on sections as

M̃(U) ⊗ A(d)~(U) --(1 ⊗ ψ)--> M̃(U) ⊗ 𝒪(U) --rid--> M̃(U) --φ⁻¹--> M(d)~(U)

with ψ and φ the two chart trivializations. The content of that factorization is one identity, chartModuleTwistSectionEquiv_sectionTwistMul, and it is four lines on top of intShiftZeroModuleLinearEquiv_twistMul: both trivializations are multiplication by the same scalar, so what is left is associativity of that action.

Deliverables #

Scope #

F is an associated sheaf. That is the honest statement: identifying an arbitrary coherent sheaf on Proj with an associated one is Serre's theorem, which is downstream — TwistInvertible.lean records the same boundary, and it is why O(d) was proved invertible rather than the tensor avoided.

Two things the section level needs that the fibre level did not #

sectionLinearEquivOfMemIff is the section-level counterpart of DegreeZeroLocalization.linearEquivOfMemIff: intShift 𝓜 0 and 𝓜 have the same members, so the underlying element never moves and only the local-fraction certificate is rebuilt. Both chart trivializations land at the (0)-twist rather than at the module, so this is what closes the gap; Finiteness.lean needs the same step at the sheaf level and gets it from associatedIsoOfPiecewiseIff.

The monoidal structure is TwistMultiplication.lean's local instance, re-enabled here with attribute [local instance] rather than redeclared — a second instance over the same spelling is the mistake references/instance-transparency.md names.

noncomputable def AlgebraicGeometry.Proj.sectionLinearEquivOfMemIff {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 𝒜 𝓜] {σN : Type u} [SetLike σN M] [AddSubgroupClass σN M] (𝓝 : ℕ → σN) [SetLike.GradedSMul 𝒜 𝓝] (hmem : ∀ (i : ℕ) (m : M), m ∈ 𝓜 i ↔ m ∈ 𝓝 i) (U : TopologicalSpace.Opens ↑(ProjectiveSpectrum.top 𝒜)) :

Sections of M̃ 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

    At the zero twist the twisted multiplication is the scalar action.

    Over a degree-one chart, A(d) is the structure sheaf, on sections.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      noncomputable def AlgebraicGeometry.Proj.chartModuleTwistSectionEquiv {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 𝒜 𝓜] {f : A} (hf : f ∈ 𝒜 1) (d : ℤ) {U : TopologicalSpace.Opens ↑(ProjectiveSpectrum.top 𝒜)} (hU : U ≤ ProjectiveSpectrum.basicOpen 𝒜 f) :

      Over a degree-one chart, M(d) is M̃, on sections.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem AlgebraicGeometry.Proj.chartModuleTwistSectionEquiv_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 𝒜 𝓜] {f : A} (hf : f ∈ 𝒜 1) (d : ℤ) {U : TopologicalSpace.Opens ↑(ProjectiveSpectrum.top 𝒜)} (hU : U ≤ ProjectiveSpectrum.basicOpen 𝒜 f) (s : (associatedSheafInType 𝒜 𝓜).obj.obj (Opposite.op U)) (t : (associatedSheafInType 𝒜 (GradedModule.intShift 𝒜 d)).obj.obj (Opposite.op U)) :
        (chartModuleTwistSectionEquiv 𝒜 𝓜 hf d hU) (sectionTwistMul 𝒜 𝓜 d s t) = (chartRingTwistSectionEquiv 𝒜 hf d hU) t • s

        Over a degree-one chart the twisted multiplication is the scalar action, conjugated by the two chart trivializations.

        Over a degree-one chart, the tensor of sections is the twisted sections.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem AlgebraicGeometry.Proj.twistMultiplicationHom_app_eq {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 𝒜 𝓜] {f : A} (hf : f ∈ 𝒜 1) (d : ℤ) {U : TopologicalSpace.Opens ↑(ProjectiveSpectrum.top 𝒜)} (hU : U ≤ ProjectiveSpectrum.basicOpen 𝒜 f) :
          theorem AlgebraicGeometry.Proj.isIso_twistMultiplicationHom_app {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 𝒜 𝓜] {f : A} (hf : f ∈ 𝒜 1) (d : ℤ) {U : TopologicalSpace.Opens ↑(ProjectiveSpectrum.top 𝒜)} (hU : U ≤ ProjectiveSpectrum.basicOpen 𝒜 f) :

          Over a degree-one chart the twisted multiplication is already an isomorphism on sections.

          theorem AlgebraicGeometry.Proj.twistMultiplicationHom_mem_W {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 𝒜 𝓜] {I : Type u} (g : I → ↥(𝒜 1)) (d : ℤ) (hg : Algebra.adjoin (↥(𝒜 0)) (Set.range fun (j : I) => ↑(g j)) = ⊤) :

          The twisted multiplication is a local weak equivalence as soon as degree-one elements generate A over 𝒜 0.

          theorem AlgebraicGeometry.Proj.isIso_sheafification_map_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 𝒜 𝓜] {I : Type u} (g : I → ↥(𝒜 1)) (d : ℤ) (hg : Algebra.adjoin (↥(𝒜 0)) (Set.range fun (j : I) => ↑(g j)) = ⊤) :
          noncomputable def AlgebraicGeometry.Proj.tensorTwistIso {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 𝒜 𝓜] {I : Type u} (g : I → ↥(𝒜 1)) (d : ℤ) (hg : Algebra.adjoin (↥(𝒜 0)) (Set.range fun (j : I) => ↑(g j)) = ⊤) :
          (associatedSheaf 𝒜 𝓜).tensorObj (twistingSheaf 𝒜 d) ≅ sheafTwist 𝒜 𝓜 d

          The comparison M̃ ⊗ O(d) ≅ M(d)~.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            noncomputable def AlgebraicGeometry.Proj.tensorTwistAddIso {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 𝒜 𝓜] {I : Type u} (g : I → ↥(𝒜 1)) (d e : ℤ) (hg : Algebra.adjoin (↥(𝒜 0)) (Set.range fun (j : I) => ↑(g j)) = ⊤) :

            F(d)(e) ≅ F(d + e) for F an associated sheaf, deliverable 2b of #584.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem AlgebraicGeometry.Proj.intShiftModule_isCoherent {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 𝒜 𝓜] {I : Type u} (g : I → ↥(𝒜 1)) (d : ℤ) (hg : Algebra.adjoin (↥(𝒜 0)) (Set.range fun (j : I) => ↑(g j)) = ⊤) (hM : Scheme.Modules.IsCoherent (Proj 𝒜) (associatedSheaf 𝒜 𝓜)) :

              An integer twist of a coherent associated sheaf is coherent.

              theorem AlgebraicGeometry.Proj.tensorObj_twistingSheaf_isCoherent {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 𝒜 𝓜] {I : Type u} (g : I → ↥(𝒜 1)) (d : ℤ) (hg : Algebra.adjoin (↥(𝒜 0)) (Set.range fun (j : I) => ↑(g j)) = ⊤) (hM : Scheme.Modules.IsCoherent (Proj 𝒜) (associatedSheaf 𝒜 𝓜)) :

              The twist of a coherent associated sheaf is coherent, deliverable 3 of #584.

              The tensorTwist spelling #

              The same three results in the names #584 uses. tensorTwist F d is by definition tensorObj F (twistingSheaf 𝒜 d), so each is its counterpart above under a different name and in the same graded setting — they are kept only because #584's deliverables are stated in the tensorTwist spelling.

              Both spellings live in the general graded setting. Modules/Tensor/Basic.lean's machinery needs a locally free rank-one factor, which TwistInvertible.lean supplies for O(d); it does not need A to be an algebra over a base ring, and nothing in the twist API uses such a structure.

              noncomputable def AlgebraicGeometry.Proj.associatedTensorTwistIso {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 𝒜 𝓜] {I : Type u} (g : I → ↥(𝒜 1)) (d : ℤ) (hg : Algebra.adjoin (↥(𝒜 0)) (Set.range fun (j : I) => ↑(g j)) = ⊤) :
              tensorTwist 𝒜 (associatedSheaf 𝒜 𝓜) d ≅ sheafTwist 𝒜 𝓜 d

              F ⊗ O(d) ≅ F(d) for F = M̃, deliverable 2a of #584.

              Equations
              Instances For
                noncomputable def AlgebraicGeometry.Proj.associatedTensorTwistAddIso {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 𝒜 𝓜] {I : Type u} (g : I → ↥(𝒜 1)) (d e : ℤ) (hg : Algebra.adjoin (↥(𝒜 0)) (Set.range fun (j : I) => ↑(g j)) = ⊤) :
                tensorTwist 𝒜 (tensorTwist 𝒜 (associatedSheaf 𝒜 𝓜) d) e ≅ tensorTwist 𝒜 (associatedSheaf 𝒜 𝓜) (d + e)

                F(d)(e) ≅ F(d + e) for F = M̃, deliverable 2b of #584.

                Equations
                Instances For
                  theorem AlgebraicGeometry.Proj.tensorTwist_isCoherent {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 𝒜 𝓜] {I : Type u} (g : I → ↥(𝒜 1)) (d : ℤ) (hg : Algebra.adjoin (↥(𝒜 0)) (Set.range fun (j : I) => ↑(g j)) = ⊤) (hM : Scheme.Modules.IsCoherent (Proj 𝒜) (associatedSheaf 𝒜 𝓜)) :

                  The twist preserves coherence, deliverable 3 of #584.

                  noncomputable def AlgebraicGeometry.Proj.twistingSheafTensorAddIso {A σA : Type u} [CommRing A] [SetLike σA A] [AddSubgroupClass σA A] (𝒜 : ℕ → σA) [GradedRing 𝒜] {I : Type u} (g : I → ↥(𝒜 1)) (d e : ℤ) (hg : Algebra.adjoin (↥(𝒜 0)) (Set.range fun (j : I) => ↑(g j)) = ⊤) :

                  O(d) ⊗ O(e) ≅ O(d + e), on the tensor side.

                  twistingSheafAddIso is the graded-shift form, sheafTwist 𝒜 (intShift 𝒜 d) e ≅ O(d + e). This is the same statement written through tensorObj, which is the form #806 needs in order to hand O(-N) to IsInvertible as a tensor inverse of O(N).

                  It is four lines because the graded ring as a module over itself is the unit: recognise each O(·) as (Ã)(·) with associatedSelfTensorTwistIso, apply the comparison at 𝓜 = 𝒜, and recognise the result back.

                  Both factors are O(·) rather than an arbitrary F, so this does not contradict what TensorTwist.lean records about F(d)(e) ≅ F(d + e): there the obstruction is a non-invertible outer factor, and here there is none.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For