Definitions/Def_AlgebraicGeometry_ModulesSectionsTensor.lean
Sections of tensor products, tensor powers, and frames
Fix a scheme X and work in X-modules, i.e. sheaves of \mathcal O_X-modules with the monoidal structure obtained by sheafifying the presheaf-level tensor product. For L, M : X.\mathrm{Modules}, tensorSectionsHom L M is the morphism of presheaves of \mathcal O_X-modules from L^{\mathrm{val}} \otimes M^{\mathrm{val}} (objectwise tensor product U \mapsto L(U) \otimes_{\Gamma(X,U)} M(U)) to the presheaf underlying L \otimes M, namely the unit of the sheafification adjunction followed by the image of the comparison isomorphism tensorIsoSheafify L M. Applying its component at an open U to a pure tensor gives tensorSections s t : Γ(L ⊗ M, U) for s \in \Gamma(L,U), t \in \Gamma(M,U). Accompanying lemmas record additivity in each argument, \Gamma(X,U)-homogeneity in each argument, vanishing when one argument is 0, behaviour under negation and finite sums, the bundled bilinear map tensorSectionsBilin L M U, and compatibility with restriction along V \to U. Next, unitSection U is the section 1 \in \Gamma(X,U) viewed in the tensor unit, with g \cdot 1 = g and hence g \mapsto g \cdot 1 bijective; tensorPowSection s n : Γ(L.tensorPow n, U) is defined by recursion, equal to unitSection U for n = 0 and to tensorSections (tensorPowSection s n) s for n+1, again compatible with restriction. Finally, IsFrameOn s V, for s \in \Gamma(M,U) and V open, asserts that for every open W with W \le U and W \le V the map \Gamma(X,W) \to \Gamma(M,W), g \mapsto g \cdot s|_W, is bijective. Its lemmas give the bijectivity, monotonicity in V, equivalence of IsFrameOn s V with IsFrameOn s (V ⊓ U), stability under restricting s along U' \to U and under transport by an isomorphism M \cong N, the unique-solution and g \cdot s|_W = 0 \iff g = 0 reformulations, and the fact that unitSection U is a frame on every open.
Relation to Mathlib
Mathlib provides the monoidal structure on presheaves of modules and the \Gamma(M, U) notation; the monoidal structure on sheaves of modules and the comparison isomorphism with the sheafified presheaf tensor product come from the project's own modules. The section-level operations tensorSections, tensorPowSection and the predicate IsFrameOn are the project's own.
Where it is used
These definitions supply the section-level vocabulary for tensor products and tensor powers of module sheaves on a scheme, together with the notion of a local generator (frame) trivialising a module sheaf over an open set, as used in the scheme-theoretic parts of the development.
References
- R. Hartshorne, Algebraic Geometry, Graduate Texts in Mathematics 52, Springer, 1977, Ch. II, §5
- A. Grothendieck and J. Dieudonné, Éléments de géométrie algébrique I, Publ. Math. IHÉS 4 (1960)
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 254 lines
- 37 declarations
- used in the statements of 99 theorems and imported by 170 proofs
- imports 3 definition modules
Source file: Definitions/Def_AlgebraicGeometry_ModulesSectionsTensor.lean
Imports
Declarations
- def
AlgebraicGeometry.Scheme.Modules.tensorSectionsHom - def
AlgebraicGeometry.Scheme.Modules.tensorSections - lemma
AlgebraicGeometry.Scheme.Modules.tensorSections_def - lemma
AlgebraicGeometry.Scheme.Modules.tensorSections_add_left - lemma
AlgebraicGeometry.Scheme.Modules.tensorSections_add_right - lemma
AlgebraicGeometry.Scheme.Modules.tensorSections_smul_left - lemma
AlgebraicGeometry.Scheme.Modules.tensorSections_smul_right - lemma
AlgebraicGeometry.Scheme.Modules.tensorSections_zero_left - lemma
AlgebraicGeometry.Scheme.Modules.tensorSections_zero_right - lemma
AlgebraicGeometry.Scheme.Modules.tensorSections_neg_left - lemma
AlgebraicGeometry.Scheme.Modules.tensorSections_neg_right - lemma
AlgebraicGeometry.Scheme.Modules.tensorSections_sum_left - lemma
AlgebraicGeometry.Scheme.Modules.tensorSections_sum_right - def
AlgebraicGeometry.Scheme.Modules.tensorSectionsBilin - lemma
AlgebraicGeometry.Scheme.Modules.tensorSectionsBilin_apply - lemma
AlgebraicGeometry.Scheme.Modules.map_tensorSections - lemma
AlgebraicGeometry.Scheme.Modules.map_homOfLE_tensorSections - def
AlgebraicGeometry.Scheme.Modules.unitSection - lemma
AlgebraicGeometry.Scheme.Modules.unitSection_def - lemma
AlgebraicGeometry.Scheme.Modules.map_unitSection - lemma
AlgebraicGeometry.Scheme.Modules.smul_unitSection - lemma
AlgebraicGeometry.Scheme.Modules.smul_unitSection_bijective - def
AlgebraicGeometry.Scheme.Modules.tensorPowSection - lemma
AlgebraicGeometry.Scheme.Modules.tensorPowSection_zero - lemma
AlgebraicGeometry.Scheme.Modules.tensorPowSection_succ - lemma
AlgebraicGeometry.Scheme.Modules.tensorPowSection_one - lemma
AlgebraicGeometry.Scheme.Modules.map_tensorPowSection - def
AlgebraicGeometry.Scheme.Modules.IsFrameOn - lemma
AlgebraicGeometry.Scheme.Modules.IsFrameOn.bijective - lemma
AlgebraicGeometry.Scheme.Modules.IsFrameOn.mono - lemma
AlgebraicGeometry.Scheme.Modules.IsFrameOn.of_inf - lemma
AlgebraicGeometry.Scheme.Modules.IsFrameOn.inf_iff - lemma
AlgebraicGeometry.Scheme.Modules.IsFrameOn.map - lemma
AlgebraicGeometry.Scheme.Modules.IsFrameOn.existsUnique - lemma
AlgebraicGeometry.Scheme.Modules.IsFrameOn.smul_eq_zero_iff - lemma
AlgebraicGeometry.Scheme.Modules.isFrameOn_unitSection - lemma
AlgebraicGeometry.Scheme.Modules.IsFrameOn.map_iso
Source
import Mathlib import Definitions.Def_PresheafOfModules_InternalHom import Definitions.Def_SheafOfModules_Monoidal import Definitions.Def_AlgebraicGeometry_ModulesTensorPow set_option autoImplicit false set_option backward.isDefEq.respectTransparency false universe u open CategoryTheory MonoidalCategory Opposite TensorProduct noncomputable section namespace AlgebraicGeometry.Scheme.Modules variable {X : Scheme.{u}} section Hom variable (L M : X.Modules) def tensorSectionsHom : L.val ⊗ M.val ⟶ (SheafOfModules.toPMod X.sheaf.obj X.ringCatSheaf.property).obj (L ⊗ M) := (SheafOfModules.sheafifyAdj X.sheaf.obj X.ringCatSheaf.property).unit.app (L.val ⊗ M.val) ≫ (SheafOfModules.toPMod X.sheaf.obj X.ringCatSheaf.property).map (tensorIsoSheafify L M).hom end Hom section Sections variable {L M : X.Modules} {U : X.Opens} def tensorSections (s : Γ(L, U)) (t : Γ(M, U)) : Γ(L ⊗ M, U) := DFunLike.coe (α := ((L.val ⊗ M.val).obj (op U) :)) (β := fun _ => Γ(L ⊗ M, U)) ((tensorSectionsHom L M).app (op U)).hom ((s : L.val.obj (op U)) ⊗ₜ[Γ(X, U)] (t : M.val.obj (op U))) lemma tensorSections_def (s : Γ(L, U)) (t : Γ(M, U)) : tensorSections s t = DFunLike.coe (α := ((L.val ⊗ M.val).obj (op U) :)) (β := fun _ => Γ(L ⊗ M, U)) ((tensorSectionsHom L M).app (op U)).hom ((s : L.val.obj (op U)) ⊗ₜ[Γ(X, U)] (t : M.val.obj (op U))) := rfl lemma tensorSections_add_left (s s' : Γ(L, U)) (t : Γ(M, U)) : tensorSections (s + s') t = tensorSections s t + tensorSections s' t := by rw [tensorSections_def, tensorSections_def, tensorSections_def] erw [TensorProduct.add_tmul, map_add] rfl lemma tensorSections_add_right (s : Γ(L, U)) (t t' : Γ(M, U)) : tensorSections s (t + t') = tensorSections s t + tensorSections s t' := by rw [tensorSections_def, tensorSections_def, tensorSections_def] erw [TensorProduct.tmul_add, map_add] rfl lemma tensorSections_smul_left (g : Γ(X, U)) (s : Γ(L, U)) (t : Γ(M, U)) : tensorSections (g • s) t = g • tensorSections s t := by rw [tensorSections_def, tensorSections_def] letI : CommRing ((X.ringCatSheaf.obj).obj (op U)) := inferInstanceAs (CommRing Γ(X, U)) erw [← TensorProduct.smul_tmul', LinearMap.map_smul] rfl lemma tensorSections_smul_right (g : Γ(X, U)) (s : Γ(L, U)) (t : Γ(M, U)) : tensorSections s (g • t) = g • tensorSections s t := by rw [tensorSections_def, tensorSections_def] letI : CommRing ((X.ringCatSheaf.obj).obj (op U)) := inferInstanceAs (CommRing Γ(X, U)) erw [TensorProduct.tmul_smul, LinearMap.map_smul] rfl @[simp] lemma tensorSections_zero_left (t : Γ(M, U)) : tensorSections (0 : Γ(L, U)) t = 0 := by rw [tensorSections_def] erw [TensorProduct.zero_tmul, map_zero] @[simp] lemma tensorSections_zero_right (s : Γ(L, U)) : tensorSections s (0 : Γ(M, U)) = 0 := by rw [tensorSections_def] erw [TensorProduct.tmul_zero, map_zero] lemma tensorSections_neg_left (s : Γ(L, U)) (t : Γ(M, U)) : tensorSections (-s) t = -tensorSections s t := by rw [eq_neg_iff_add_eq_zero, ← tensorSections_add_left, neg_add_cancel, tensorSections_zero_left] lemma tensorSections_neg_right (s : Γ(L, U)) (t : Γ(M, U)) : tensorSections s (-t) = -tensorSections s t := by rw [eq_neg_iff_add_eq_zero, ← tensorSections_add_right, neg_add_cancel, tensorSections_zero_right] lemma tensorSections_sum_left {ι : Type*} (S : Finset ι) (s : ι → Γ(L, U)) (t : Γ(M, U)) : tensorSections (∑ i ∈ S, s i) t = ∑ i ∈ S, tensorSections (s i) t := by classical induction S using Finset.induction_on with | empty => simp | insert i S hi ih => rw [Finset.sum_insert hi, Finset.sum_insert hi, tensorSections_add_left, ih] lemma tensorSections_sum_right {ι : Type*} (S : Finset ι) (s : Γ(L, U)) (t : ι → Γ(M, U)) : tensorSections s (∑ i ∈ S, t i) = ∑ i ∈ S, tensorSections s (t i) := by classical induction S using Finset.induction_on with | empty => simp | insert i S hi ih => rw [Finset.sum_insert hi, Finset.sum_insert hi, tensorSections_add_right, ih] variable (L M U) in def tensorSectionsBilin : Γ(L, U) →ₗ[Γ(X, U)] Γ(M, U) →ₗ[Γ(X, U)] Γ(L ⊗ M, U) := LinearMap.mk₂ Γ(X, U) tensorSections tensorSections_add_left tensorSections_smul_left tensorSections_add_right tensorSections_smul_right @[simp] lemma tensorSectionsBilin_apply (s : Γ(L, U)) (t : Γ(M, U)) : tensorSectionsBilin L M U s t = tensorSections s t := rfl lemma map_tensorSections {V : X.Opens} (i : V ⟶ U) (s : Γ(L, U)) (t : Γ(M, U)) : (L ⊗ M).presheaf.map i.op (tensorSections s t) = tensorSections (L.presheaf.map i.op s) (M.presheaf.map i.op t) := by rw [tensorSections_def, tensorSections_def] have h := PresheafOfModules.naturality_apply (tensorSectionsHom L M) i.op ((s : L.val.obj (op U)) ⊗ₜ[Γ(X, U)] (t : M.val.obj (op U))) erw [PresheafOfModules.Monoidal.tensorObj_map_tmul] at h exact h.symm lemma map_homOfLE_tensorSections {V : X.Opens} (h : V ≤ U) (s : Γ(L, U)) (t : Γ(M, U)) : (L ⊗ M).presheaf.map (homOfLE h).op (tensorSections s t) = tensorSections (L.presheaf.map (homOfLE h).op s) (M.presheaf.map (homOfLE h).op t) := map_tensorSections (homOfLE h) s t end Sections section Pow variable {L : X.Modules} {U : X.Opens} variable (U) in def unitSection : Γ(𝟙_ X.Modules, U) := (1 : Γ(X, U)) lemma unitSection_def : (unitSection U : Γ(𝟙_ X.Modules, U)) = (1 : Γ(X, U)) := rfl @[simp] lemma map_unitSection {V : X.Opens} (i : V ⟶ U) : (𝟙_ X.Modules).presheaf.map i.op (unitSection U) = unitSection V := (X.presheaf.map i.op).hom.map_one lemma smul_unitSection (g : Γ(X, U)) : g • unitSection U = (g : Γ(X, U)) := mul_one g lemma smul_unitSection_bijective : Function.Bijective fun g : Γ(X, U) => g • unitSection U := by refine Function.bijective_iff_has_inverse.2 ⟨fun x => (x : Γ(X, U)), fun g => ?_, fun x => ?_⟩ · exact mul_one g · exact mul_one (show Γ(X, U) from x) def tensorPowSection (s : Γ(L, U)) : (n : ℕ) → Γ(L.tensorPow n, U) | 0 => unitSection U | n + 1 => tensorSections (L := L.tensorPow n) (M := L) (tensorPowSection s n) s @[simp] lemma tensorPowSection_zero (s : Γ(L, U)) : tensorPowSection s 0 = unitSection U := rfl lemma tensorPowSection_succ (s : Γ(L, U)) (n : ℕ) : tensorPowSection s (n + 1) = tensorSections (L := L.tensorPow n) (M := L) (tensorPowSection s n) s := rfl lemma tensorPowSection_one (s : Γ(L, U)) : tensorPowSection s 1 = tensorSections (L := 𝟙_ X.Modules) (M := L) (unitSection U) s := rfl lemma map_tensorPowSection {V : X.Opens} (i : V ⟶ U) (s : Γ(L, U)) (n : ℕ) : (L.tensorPow n).presheaf.map i.op (tensorPowSection s n) = tensorPowSection (L.presheaf.map i.op s) n := by induction n with | zero => exact map_unitSection i | succ n ih => rw [tensorPowSection_succ, tensorPowSection_succ, ← ih] exact map_tensorSections (L := L.tensorPow n) (M := L) i _ s end Pow section Frame variable {M : X.Modules} {U : X.Opens} def IsFrameOn (s : Γ(M, U)) (V : X.Opens) : Prop := ∀ ⦃W : X.Opens⦄ (hWU : W ≤ U), W ≤ V → Function.Bijective fun g : Γ(X, W) => g • (M.presheaf.map (homOfLE hWU).op s : Γ(M, W)) namespace IsFrameOn variable {s : Γ(M, U)} {V : X.Opens} lemma bijective (h : IsFrameOn s V) {W : X.Opens} (hWU : W ≤ U) (hWV : W ≤ V) : Function.Bijective fun g : Γ(X, W) => g • (M.presheaf.map (homOfLE hWU).op s : Γ(M, W)) := h hWU hWV lemma mono (h : IsFrameOn s V) {V' : X.Opens} (hV' : V' ≤ V) : IsFrameOn s V' := fun _ hWU hWV' => h hWU (hWV'.trans hV') lemma of_inf (h : IsFrameOn s (V ⊓ U)) : IsFrameOn s V := fun _ hWU hWV => h hWU (le_inf hWV hWU) lemma inf_iff : IsFrameOn s (V ⊓ U) ↔ IsFrameOn s V := ⟨of_inf, fun h => h.mono inf_le_left⟩ lemma map (h : IsFrameOn s V) {U' : X.Opens} (i : U' ⟶ U) : IsFrameOn (M.presheaf.map i.op s) V := by intro W hWU' hWV have e : M.presheaf.map (homOfLE hWU').op (M.presheaf.map i.op s) = M.presheaf.map (homOfLE (hWU'.trans i.le)).op s := by rw [← CategoryTheory.comp_apply, ← M.presheaf.map_comp] rfl simp only [e] exact h (hWU'.trans i.le) hWV lemma existsUnique (h : IsFrameOn s V) {W : X.Opens} (hWU : W ≤ U) (hWV : W ≤ V) (x : Γ(M, W)) : ∃! g : Γ(X, W), g • M.presheaf.map (homOfLE hWU).op s = x := (Function.bijective_iff_existsUnique _).1 (h hWU hWV) x lemma smul_eq_zero_iff (h : IsFrameOn s V) {W : X.Opens} (hWU : W ≤ U) (hWV : W ≤ V) (g : Γ(X, W)) : g • M.presheaf.map (homOfLE hWU).op s = 0 ↔ g = 0 := by constructor · intro hg apply (h hWU hWV).1 change g • M.presheaf.map (homOfLE hWU).op s = (0 : Γ(X, W)) • M.presheaf.map (homOfLE hWU).op s rw [hg, zero_smul] · rintro rfl exact zero_smul _ _ end IsFrameOn lemma isFrameOn_unitSection (V : X.Opens) : IsFrameOn (unitSection U) V := by intro W hWU _ have e : (𝟙_ X.Modules).presheaf.map (homOfLE hWU).op (unitSection U) = unitSection W := map_unitSection _ simp only [e] exact smul_unitSection_bijective lemma IsFrameOn.map_iso {N : X.Modules} {s : Γ(M, U)} {V : X.Opens} (h : IsFrameOn s V) (e : M ≅ N) : IsFrameOn (e.hom.app U s) V := by intro W hWU hWV have nat : N.presheaf.map (homOfLE hWU).op (e.hom.app U s) = e.hom.app W (M.presheaf.map (homOfLE hWU).op s) := by have := (e.hom.mapPresheaf).naturality (homOfLE hWU).op exact (congrFun (congrArg (fun f => (ConcreteCategory.hom f : Γ(M, U) → Γ(N, W))) this) s).symm simp only [nat] have hb : Function.Bijective (e.hom.app W : Γ(M, W) → Γ(N, W)) := by refine Function.bijective_iff_has_inverse.2 ⟨e.inv.app W, fun x => ?_, fun y => ?_⟩ · change (e.hom.app W ≫ e.inv.app W) x = x rw [← Scheme.Modules.Hom.comp_app, e.hom_inv_id, Scheme.Modules.Hom.id_app]; rfl · change (e.inv.app W ≫ e.hom.app W) y = y rw [← Scheme.Modules.Hom.comp_app, e.inv_hom_id, Scheme.Modules.Hom.id_app]; rfl have : (fun g : Γ(X, W) => g • e.hom.app W (M.presheaf.map (homOfLE hWU).op s)) = (e.hom.app W) ∘ fun g : Γ(X, W) => g • M.presheaf.map (homOfLE hWU).op s := by funext g simp only [Function.comp_apply, Scheme.Modules.Hom.app_smul] rw [this] exact hb.comp (h hWU hWV) end Frame end AlgebraicGeometry.Scheme.Modules end
Statements phrased using this module (99)
- Invertible modules on the spectrum of a local ring are trivial
AlgebraicGeometry.Scheme.Modules.IsInvertible.nonempty_iso_tensorUnit_of_isLocalRing5 below · depth 13 - Sections of Hom(P,Q) are determined by their value on a frame
AlgebraicGeometry.Scheme.Modules.IsFrameOn.existsUnique_ihomEval_eq0 below · depth 14 - Existence of a dual frame on V pairing to 1
AlgebraicGeometry.Scheme.Modules.IsFrameOn.exists_isFrameOn_dual0 below · depth 14 - Local frames of N_π(L) from bases of π_*mathcal O_X
AlgebraicGeometry.Scheme.Modules.IsFrameOn.exists_isFrameOn_normModule4 below · depth 14 - Two frames differ by a unit on a common open
AlgebraicGeometry.Scheme.Modules.IsFrameOn.exists_isUnit_smul_eq0 below · depth 14 - Frames pull back to frames along a morphism of schemes
AlgebraicGeometry.Scheme.Modules.IsFrameOn.pullbackLocalSection6 below · depth 14 - The tensor product of two frames is a frame
AlgebraicGeometry.Scheme.Modules.IsFrameOn.tensorSections0 below · depth 14 - Invertible 𝒪_X-modules admit local frames
AlgebraicGeometry.Scheme.Modules.IsInvertible.exists_isFrameOn2 below · depth 14 - Zero-scheme ideal of c Ω on affine opens inside a frame
AlgebraicGeometry.Scheme.Modules.IsInvertible.ideal_zeroSchemeIdeal_eq_span_of_app_eq_smul6 below · depth 14 - Product of unit cocycles glues to the tensor product
AlgebraicGeometry.Scheme.Modules.exists_glueOfCocycle_mul_iso_tensor5 below · depth 14 - The trivial cocycle glues to mathcal O_X
AlgebraicGeometry.Scheme.Modules.exists_glueOfCocycle_trivial_iso_tensorUnit4 below · depth 14 - Twisting a unit cocycle yields an isomorphic glued module
AlgebraicGeometry.Scheme.Modules.exists_glueOfCocycle_twist_iso4 below · depth 14 - Norm module frame: N_π(ι')(1) is Nm(g) times a frame
AlgebraicGeometry.Scheme.Modules.exists_isFrameOn_normModule_and_app_eq_norm_smul10 below · depth 14 - Frames on the norm module with norm transition functions
AlgebraicGeometry.Scheme.Modules.exists_isFrameOn_normModule_forall_map_eq_norm_smul_of_isFrameOn_preimage8 below · depth 14 - Trivialisation over an open yields a frame on it
AlgebraicGeometry.Scheme.Modules.exists_isFrameOn_of_pullback_iso_unit0 below · depth 14 - A framed module with cocycle u is the glue of u
AlgebraicGeometry.Scheme.Modules.exists_iso_glueOfCocycle_app_eq_glueFrame3 below · depth 14 - Pullback of a glued module is the glue of the pulled-back cocycle
AlgebraicGeometry.Scheme.Modules.exists_pullback_glueOfCocycle_iso10 below · depth 14 - Frames for the norm module after refining the cover
AlgebraicGeometry.Scheme.Modules.exists_refinement_isFrameOn_normModule_map_eq_normFun_smul21 below · depth 14 - Ratio cocycle of a family of frames
AlgebraicGeometry.Scheme.Modules.exists_unitCocycle_map_eq_smul_of_isFrameOn0 below · depth 14 - Top wedge of a local basis frames detₙ M
AlgebraicGeometry.Scheme.Modules.isFrameOn_sheafificationAdjunction_unit_iotaMulti0 below · depth 14 - Modules glued from a unit cocycle are invertible
AlgebraicGeometry.Scheme.Modules.isInvertible_glueOfCocycle4 below · depth 14 - Morphisms matching frames on a cover are isomorphisms
AlgebraicGeometry.Scheme.Modules.isIso_of_isFrameOn_of_iSup_eq_top0 below · depth 14 - Wedge of a linearly transformed family scales by the determinant
AlgebraicGeometry.Scheme.Modules.sheafificationAdjunction_unit_iotaMulti_eq_det_smul_of_eq_sum_smul1 below · depth 14 - Sections of the dual agree if they agree on a frame
AlgebraicGeometry.Scheme.Modules.IsFrameOn.dual_eq_of_ihomEval_eq0 below · depth 15 - Basis of π_*𝒪_X times a frame gives basis of π_*L
AlgebraicGeometry.Scheme.Modules.IsFrameOn.exists_basis_smul_pushforward0 below · depth 15 - Gluing two frames: modules with equal transition function are isomorphic
AlgebraicGeometry.Scheme.Modules.IsFrameOn.nonempty_iso_of_map_eq_smul_of_map_eq_smul5 below · depth 15 - Coboundary transition data trivialises a two-chart framed module
AlgebraicGeometry.Scheme.Modules.IsFrameOn.nonempty_iso_tensorUnit_of_map_eq_mul5 below · depth 15 - A frame trivialises a module on an open subset
AlgebraicGeometry.Scheme.Modules.IsFrameOn.nonempty_pullback_iso_unit2 below · depth 15 - Frames glue: IsFrameOn is stable under suprema of opens
AlgebraicGeometry.Scheme.Modules.IsFrameOn.of_iSup0 below · depth 15 - Gluing along a unit: realising a transition function on two opens
AlgebraicGeometry.Scheme.Modules.exists_isFrameOn_of_isUnit0 below · depth 15 - Gluing frame pairs to an isomorphism of modules
AlgebraicGeometry.Scheme.Modules.exists_iso_app_eq_of_isFrameOn_of_eq_smul2 below · depth 15 - Locally framed modules on a scheme are invertible
AlgebraicGeometry.Scheme.Modules.isInvertible_of_forall_exists_isFrameOn3 below · depth 15 - Modules framed on two opens covering X are invertible
AlgebraicGeometry.Scheme.Modules.isInvertible_of_isFrameOn_of_isFrameOn_of_sup_eq_top4 below · depth 15 - Left unitor on sections: λ_N(g⊗ n)=g· n
AlgebraicGeometry.Scheme.Modules.leftUnitor_hom_app_tensorSections2 below · depth 15 - Pullback of a tensor of sections is the tensor of pullbacks
AlgebraicGeometry.Scheme.Modules.pullbackTensorObjIso_hom_app_pullbackLocalSection4 below · depth 15 - Pull-back of the unit section is the unit section
AlgebraicGeometry.Scheme.Modules.pullbackTensorUnitObjIso_hom_app_pullbackLocalSection_unitSection4 below · depth 15 - Tensor of morphisms acts on tensor of sections componentwise
AlgebraicGeometry.Scheme.Modules.tensorHom_app_tensorSections2 below · depth 15 - Right whiskering on sections: (φrhdM)(s⊗ t)=φ(s)⊗ t
AlgebraicGeometry.Scheme.Modules.whiskerRight_app_tensorSections3 below · depth 15 - Frame criterion for the node-unit description of sections
AlgebraicGeometry.TwoGluedCurves.injective_and_range_eq_nodeCondition_of_forall_exists_isFrameOn1 below · depth 15 - Crossing-chart glued module restricts to 𝒪(̄ y₁)⊗𝒪(̄ y₂)⁻¹ generically
ModularCurve.XHDRModelAtP.nonempty_pullback_baseChangeSnd_iso_ofPoint_tensor_idealModule_of_isFrameOn_of_map_eq_smul22 below · depth 15 - Triviality of the glued module on both special-fibre components
ModularCurve.XHDRModelAtP.nonempty_pullback_comp_iso_unit_of_isFrameOn_of_map_eq_smul12 below · depth 15 - Frames for mathcal I₁^∨⊗mathcal I₂ with prescribed transition function
AlgebraicGeometry.Scheme.IdealSheafData.exists_isFrameOn_invModule_tensor_module_of_ideal_eq_span9 below · depth 16 - Sheafification tensorator on sections: μ(x^#⊗ y^#)=(x⊗ y)^#
AlgebraicGeometry.Scheme.Modules.sheafify_mu_app_tensorSections2 below · depth 16 - Framing of a locally principal ideal sheaf by a nonzerodivisor generator
AlgebraicGeometry.Scheme.IdealSheafData.exists_isFrameOn_module_of_forall_ideal_eq_span1 below · depth 17 - Global section of an invertible module frames off its zero scheme
AlgebraicGeometry.Scheme.Modules.IsInvertible.isFrameOn_app_of_disjoint_support_zeroSchemeIdeal4 below · depth 17 - Finiteness of a L^{⊗ 3} Proj presentation
AlgebraicGeometry.Scheme.Modules.ProjPresentation.isFinite_toProj_of_forall_pullbackSection_eq_zero_iff25 below · depth 17 - Frames for L^{⊗ 3} on a cover, from the theorem of the square
AlgebraicGeometry.Scheme.Modules.exists_isFrameOn_tensorPow_three_of_forall_nonempty_pullback_tensor_iso21 below · depth 17 - Frame kit comparing norm modules along a two-piece closed cover
AlgebraicGeometry.Scheme.Modules.exists_normModule_frameKit_of_isClosedImmersion40 below · depth 17 - Transition sections multiply under tensor product
AlgebraicGeometry.Scheme.Modules.map_tensorSections_eq_mul_smul_of_map_eq_smul5 below · depth 17 - Norm of a 1+ε g cocycle is 1+varepsilonTr(g)
AlgebraicGeometry.RelPicard.exists_isFrameOn_normModule_and_map_eq_oneAddEpsMul_trace_smul13 below · depth 18 - Non-isolated point in the fibre at a non-quasi-finite point
AlgebraicGeometry.Scheme.Hom.exists_isClosed_irreducible_subset_fiber_of_not_quasiFiniteAt0 below · depth 18 - Sections of L^{⊗ m} as the twist datum of a Proj presentation
AlgebraicGeometry.Scheme.Modules.ProjPresentation.exists_linearMap_sections_tensorPow_twistObj5 below · depth 18 - Vanishing dichotomy on a fibre of a projective presentation
AlgebraicGeometry.Scheme.Modules.ProjPresentation.subset_support_zeroSchemeIdeal_or_disjoint6 below · depth 18 - Triviality of a pullback twist missing the ideal supports
AlgebraicGeometry.Scheme.Modules.nonempty_pullback_tensor_invModule_pow_tensor_module_iso_of_forall_notMem_support28 below · depth 18 - Right unitor on sections: ρ_N(n⊗ g)=g· n
AlgebraicGeometry.Scheme.Modules.rightUnitor_hom_app_tensorSections2 below · depth 18 - Left whiskering on sections: (L ⊗ ψ)(s ⊗ t) = s ⊗ ψ(t)
AlgebraicGeometry.Scheme.Modules.whiskerLeft_app_tensorSections3 below · depth 18 - Translation invariance of D under z⁻¹z' for z,z'∈ Z
AlgebraicGeometry.Scheme.forall_mem_iff_of_subset_union_preimage_or_disjoint1 below · depth 18 - Transition function of a globally trivial framed line bundle is a coboundary
AlgebraicGeometry.Scheme.Modules.IsFrameOn.exists_isUnit_map_eq_mul_of_iso_tensorUnit5 below · depth 19 - Tensor powers of a frame are frames
AlgebraicGeometry.Scheme.Modules.IsFrameOn.tensorPowSection3 below · depth 19 - Frames of N_π(L) with transition function Nm(u)
AlgebraicGeometry.Scheme.Modules.exists_isFrameOn_normModule_map_eq_norm_smul_of_isFrameOn_preimage8 below · depth 19 - Homogeneity of degree n of s ↦ s^{⊗ n}
AlgebraicGeometry.Scheme.Modules.tensorPowSection_smul2 below · depth 19 - Frames and transition data pull back along stage maps
AlgebraicGeometry.Scheme.TwoAffineOpenCover.exists_isFrameOn_pullback_stage_of_map_eq_smul6 below · depth 19 - Basic opens meet irreducible closed sets in proper schemes all or nothing
AlgebraicGeometry.Scheme.subset_basicOpen_or_disjoint_of_isProper_of_isIrreducible0 below · depth 19 - Invertible module framing nodes, fixed places and a base point
ModularCurve.XHDRModelAtP.exists_isInvertible_presentation_frames_slopeLaw_fixed_base_strict_of_dvd_width296 below · depth 26 - Vertical-slope function from a framed invertible module
ModularCurve.XHDRModelAtP.exists_smul_mem_integers_isGoodDiv_ord_eq_zero_verticalSlope_of_isInvertible_frames943 below · depth 26 - Triviality on both special-fibre components of a crossing-glued module
ModularCurve.XOneP.nonempty_pullback_comp_iso_unit_of_isFrameOn_of_map_eq_smul_twoChartModel_x1_mul12 below · depth 26 - Generic fibre of a crossing-glued module on X₁(Mp)
ModularCurve.XOneP.nonempty_pullback_iso_ofPoint_tensor_idealModule_of_isFrameOn_of_map_eq_smul_twoChartModel_x1_mul34 below · depth 26 - Module of an invertible ideal sheaf: invertibility and function-field presentation
AlgebraicGeometry.Scheme.IdealSheafData.IsInvertible.isInvertible_module_and_exists_presentation_isFrameOn3 below · depth 27 - Sections of a tensor product of invertible sheaves on an affine open
AlgebraicGeometry.Scheme.Modules.IsInvertible.bijective_lift_tensorSectionsBilin8 below · depth 27 - Invertible modules are framed near finitely many closed points
AlgebraicGeometry.Scheme.Modules.IsInvertible.exists_isFrameOn_of_finite_subset_affineOpen9 below · depth 27 - Finiteness of the morphism defined by L^{⊗ 3}
AlgebraicGeometry.Scheme.Modules.ProjPresentation.isFinite_toProj_of_finite_setOf_forall_pullbackSection_eq_zero_iff24 below · depth 27 - Sections over an affine open of a tensor product of quasi-coherent modules
AlgebraicGeometry.Scheme.Modules.bijective_lift_tensorSectionsBilin_of_isQuasicoherent0 below · depth 27 - Invertible sheaf with non-zero section of finite stabiliser
AlgebraicGeometry.Scheme.Modules.exists_isInvertible_hom_ne_zero_finite_setOf_stabilizer43 below · depth 27 - Frames and transition function pull back along a `HomOver`
AlgebraicGeometry.Scheme.TwoAffineOpenCover.HomOver.exists_isFrameOn_pullback_of_map_eq_smul6 below · depth 27 - Invariant frame of the top differentials on a smooth group scheme
GoodReductionJacobian.RelativeGroupLaw.exists_isFrameOn_topDifferentials_forall_topFormMap_mul_eq43 below · depth 30 - Existence of ω-minimal component data over a discrete valuation ring
NeronModelInfra.exists_minimalComponentData_isOmegaMinimal_of_catchesIndexOnePoints59 below · depth 30 - Translation extension at maximal special points of Z×_R X
NeronModelInfra.forall_nhds_translation_extension_isOpenImmersion_of_isOmegaMinimal_of_openCover_of_isCommutative70 below · depth 30 - Left-invariant global frame on the top differentials of G/K
GoodReductionJacobian.RelativeGroupLaw.exists_isFrameOn_topDifferentials_forall_topFormMap_appLE_mul_eq41 below · depth 31 - From chart-level translation identity to invariance at field-valued points
GoodReductionJacobian.RelativeGroupLaw.topFormMap_mul_eq_of_forall_topFormMap_appLE_mul_eq1 below · depth 31 - Order comparison along a chart-compatible morphism of ω-readings
NeronModelInfra.ComponentReading.n_le_n_and_isOpenImmersion_of_n_eq_of_specializes45 below · depth 31 - Existence of an ω-reading at a maximal special-fibre point
NeronModelInfra.exists_componentReading_data_of_smooth_of_forall_specializes23 below · depth 31 - Minimal order and formal smoothness at a maximal special point
NeronModelInfra.exists_n_eq_and_formallySmooth_stalk_of_isOmegaMinimal_of_genericFibreRestrict_comp_eq_mul52 below · depth 31 - Formally smooth birational translation extends to an open immersion
NeronModelInfra.exists_nhds_translation_extension_isOpenImmersion_of_formallySmooth_stalk_of_isOmegaMinimal18 below · depth 31 - Translation by a K-point is birational at η
NeronModelInfra.isFractionRing_stalk_of_genericFibreRestrict_comp_eq_mul_of_pullback_lift6 below · depth 31 - Pulled-back frame of top differentials freely generates on charts
AlgebraicGeometry.Scheme.Hom.bijective_smul_topFormMap_of_isFrameOn_of_isPullback21 below · depth 32 - Sections over U as global sections of ι^*M, with frames
AlgebraicGeometry.Scheme.Modules.bijective_pullbackLocalSection_opensInclusion_and_isFrameOn_iff8 below · depth 32 - Value of ω at an F-point specialising through y₁
NeronModelInfra.ComponentReading.exists_basis_units_topFormMap_eq_mul_zpow_smul_of_specializes38 below · depth 32 - Stalk birationality along a chart-compatible morphism of readings
NeronModelInfra.ComponentReading.isDomain_and_injective_stalkMap_and_isScalarTower_and_isFractionRing_of_chart_comp_eq4 below · depth 32 - A maximal special point of a glued model comes from one component
NeronModelInfra.MinimalComponentData.exists_ringHom_stalk_chart_comp_eq_pointGenericFibre_of_forall_specializes0 below · depth 32 - Landing a translate in X from a chart on an ω-minimal component
NeronModelInfra.exists_nhds_translation_extension_isOpenImmersion_of_isOpenImmersion_homOfLE_comp_of_isOmegaMinimalRep0 below · depth 32 - Translated point: the chart of τ₀ computes a· x
NeronModelInfra.mul_pointGenericFibre_eq_pointGenericFibre_comp_chart_of_genericFibreRestrict_comp_eq_mul0 below · depth 32 - Top wedge of a Kähler basis frames detᵈ
AlgebraicGeometry.Scheme.Hom.isFrameOn_topToSections_iotaMulti_of_forall_exists_basis4 below · depth 33 - Finite affine frame cover for an invertible module on a quasi-compact scheme
AlgebraicGeometry.Scheme.Modules.IsInvertible.exists_isAffineOpen_iSup_eq_top_isFrameOn1 below · depth 33 - Invertible module framed over affine opens from a finite stage
AlgebraicGeometry.Scheme.Modules.IsInvertible.exists_isAffineOpen_isFrameOn_preimage_of_isDirectLimit3 below · depth 33 - Modules with frames having matching transition functions are isomorphic
AlgebraicGeometry.Scheme.Modules.exists_iso_app_eq_of_iSup_eq_top_of_forall_smul_eq3 below · depth 33 - Local exponent of ω at a closed-fibre point equals T.n
NeronModelInfra.ComponentReading.eq_n_of_forall_topFormMap_eq_mul_zpow_smul16 below · depth 33 - Laurent form of ω at a special point of a reading
NeronModelInfra.ComponentReading.exists_basis_units_int_forall_topFormMap_eq_mul_zpow_smul_of_specializes26 below · depth 33 - Trivialised n-th tensor power: local n-th powers up to one rational function
AlgebraicGeometry.Scheme.Modules.IsInvertible.exists_forall_exists_isFrameOn_isUnit_germToFunctionField_eq_mul_pow_of_tensorPow_iso9 below · depth 35 - Generating section of an invertible sheaf on an affine open is a frame
AlgebraicGeometry.Scheme.Modules.IsInvertible.isFrameOn_of_isAffineOpen_of_span_singleton_eq_top7 below · depth 36