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 #
tensorTwistIso— the comparison, andassociatedTensorTwistIsointensorTwistspelling (2a);tensorTwistAddIso/associatedTensorTwistAddIso—F(d)(e) ≅ F(d + e)(2b). With the comparison this issheafTwistAddIsoand needs no associator;TensorTwist.leanrecords why the monoidal structure cannot deliver it directly;tensorObj_twistingSheaf_isCoherent/tensorTwist_isCoherent— coherence preservation (3), through the graded side, whereintShiftModuleOverSelfIsotrivializes the twist on a chart. It is not visible through the tensor, which is why it waited on the comparison.
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.
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
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
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
Over a degree-one chart the twisted multiplication is already an isomorphism on sections.
The twisted multiplication is a local weak equivalence as soon as degree-one elements
generate A over 𝒜 0.
The comparison M̃ ⊗ O(d) ≅ M(d)~.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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
An integer twist of a coherent associated sheaf is coherent.
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.
F ⊗ O(d) ≅ F(d) for F = M̃, deliverable 2a of #584.
Equations
- AlgebraicGeometry.Proj.associatedTensorTwistIso 𝒜 𝓜 g d hg = AlgebraicGeometry.Proj.tensorTwistIso 𝒜 𝓜 g d hg
Instances For
F(d)(e) ≅ F(d + e) for F = M̃, deliverable 2b of #584.
Equations
- AlgebraicGeometry.Proj.associatedTensorTwistAddIso 𝒜 𝓜 g d e hg = AlgebraicGeometry.Proj.tensorTwistAddIso 𝒜 𝓜 g d e hg
Instances For
The twist preserves coherence, deliverable 3 of #584.
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.