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.
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
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
- AlgebraicGeometry.Proj.twistMul 𝒜 𝓜 S d w z = ⟨↑w • ↑z, ⋯⟩
Instances For
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.
The twisted multiplication on sections.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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
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.