OAI/AlgebraicGeometry/SurfaceCones/CartierGluing.lean
50 declarations, 0 contain sorry, 0 declared as axioms
Global denominator clearing for coherent lattices
This development accompanies A Complete Local Domain without a Small Cohen–Macaulay Module (OpenAI, 2026).
- def
OAI.ActualCartier.restrictOverHomline 29Source documentation
Restrict a slice-site module morphism to a smaller open.
def restrictOverHom {M N : Y.Modules} {U V : Y.Opens} (h : V ≤ U) (a : M.over U ⟶ N.over U) : M.over V ⟶ N.over V := … - lemma
OAI.ActualCartier.exists_gluing_of_punctureline 38Source documentation
Denominator-cleared local extensions of a fixed Cartier-puncture morphism agree on overlaps and glue.
lemma exists_gluing_of_puncture {ι : Type*} (U : ι → Y.Opens) (hU : (⨆ i, U i) = ⊤) (M N : Y.Modules) [M.IsFinitePresentation] [N.IsFinitePresentation] (hN : ∀ V, Module.IsTorsionFree (Y.sheaf.obj.obj V) (N.val.obj V)) (e : M.over (ActualOpenSupport.complement g) ⟶ N.over (ActualOpenSupport.complement g)) (a : ∀ i, M.over (U i) ⟶ N.over (U i)) (ha : ∀ i (V : Y.Opens) (hi : V ≤ U i) (hV : V ≤ ActualOpenSupport.complement g) (x : M.val.obj (op V)), (a i).val.app (op (Over.mk (homOfLE hi))) x = e.val.app (op (Over.mk (homOfLE hV))) x) : ∃ f : M ⟶ N, ∀ i, f.over (U i) = a i := by …Mentions: OAI.ActualOpenSupport.complement
- lemma
OAI.ActualCartier.exists_mono_gluing_of_punctureline 68Source documentation
Injective local extensions glue to an injective global extension.
lemma exists_mono_gluing_of_puncture {ι : Type*} (U : ι → Y.Opens) (hU : (⨆ i, U i) = ⊤) (M N : Y.Modules) [M.IsFinitePresentation] [N.IsFinitePresentation] (hN : ∀ V, Module.IsTorsionFree (Y.sheaf.obj.obj V) (N.val.obj V)) (e : M.over (ActualOpenSupport.complement g) ⟶ N.over (ActualOpenSupport.complement g)) (a : ∀ i, M.over (U i) ⟶ N.over (U i)) [∀ i, Mono (a i)] (ha : ∀ i (V : Y.Opens) (hi : V ≤ U i) (hV : V ≤ ActualOpenSupport.complement g) (x : M.val.obj (op V)), (a i).val.app (op (Over.mk (homOfLE hi))) x = e.val.app (op (Over.mk (homOfLE hV))) x) : ∃ f : M ⟶ N, Mono f ∧ ∀ i, f.over (U i) = a i := by …Mentions: OAI.ActualOpenSupport.complement
- lemma
OAI.ActualCartier.exists_mono_extension_of_localline 104Source documentation
Compatible injective local extensions of a puncture morphism glue to an injective global extension of that morphism.
lemma exists_mono_extension_of_local {ι : Type*} (U : ι → Y.Opens) (hU : (⨆ i, U i) = ⊤) (M N : Y.Modules) [M.IsFinitePresentation] [N.IsFinitePresentation] (hN : ∀ V, Module.IsTorsionFree (Y.sheaf.obj.obj V) (N.val.obj V)) (e : M.over (ActualOpenSupport.complement g) ⟶ N.over (ActualOpenSupport.complement g)) (a : ∀ i, M.over (U i) ⟶ N.over (U i)) [∀ i, Mono (a i)] (ha : ∀ i (V : Y.Opens) (hi : V ≤ U i) (hV : V ≤ ActualOpenSupport.complement g) (x : M.val.obj (op V)), (a i).val.app (op (Over.mk (homOfLE hi))) x = e.val.app (op (Over.mk (homOfLE hV))) x) : ∃ f : M ⟶ N, Mono f ∧ f.over (ActualOpenSupport.complement g) = e := by …Mentions: OAI.ActualOpenSupport.complement
- lemma
OAI.ActualCartier.exists_uniform_mono_extensionline 127Source documentation
A finite cover admits a single bound for all local extension exponents. Every exponent beyond that bound gives a global injective extension preserving its specified puncture map.
lemma exists_uniform_mono_extension {ι : Type*} [Fintype ι] (U : ι → Y.Opens) (hU : (⨆ i, U i) = ⊤) (M : ℕ → Y.Modules) (N : Y.Modules) [∀ n, (M n).IsFinitePresentation] [N.IsFinitePresentation] (hN : ∀ V, Module.IsTorsionFree (Y.sheaf.obj.obj V) (N.val.obj V)) (e : ∀ n, (M n).over (ActualOpenSupport.complement g) ⟶ N.over (ActualOpenSupport.complement g)) (hloc : ∀ i, ∃ k : ℕ, ∀ n : ℕ, k ≤ n → ∃ a : (M n).over (U i) ⟶ N.over (U i), Mono a ∧ ∀ (V : Y.Opens) (hi : V ≤ U i) (hV : V ≤ ActualOpenSupport.complement g) (x : (M n).val.obj (op V)), a.val.app (op (Over.mk (homOfLE hi))) x = (e n).val.app (op (Over.mk (homOfLE hV))) x) : …Mentions: OAI.ActualOpenSupport.complement
- lemma
OAI.ActualSheafTensor.idealAction_isIso_of_isIsoline 161 - lemma
OAI.CartierImageFiltration.powerAction_isIsoline 170 - lemma
OAI.kernel_ι_isIso_of_zeroline 180 - lemma
OAI.ActualCartier.ideal_puncture_isIsoline 190Source documentation
The kernel ideal of a closed part becomes the unit ideal on its open complement. This uses the pushforward sections.
lemma ideal_puncture_isIso (U : Y.Opens) (hU : f ⁻¹ᵁ U = ⊥) : IsIso ((restrictFunctor U.ι).map (idealι f)) := by …Mentions: OAI.ActualCartier.idealι
- lemma
OAI.ActualCartier.ideal_power_puncture_isIsoline 207Source documentation
Every Cartier tensor power is invertible on the geometric puncture. In particular, a cleared lattice map retaining the original puncture identification really is an isomorphism there.
lemma ideal_power_puncture_isIso (U : Y.Opens) (hU : f ⁻¹ᵁ U = ⊥) (n : ℕ) (M : Y.Modules) : IsIso ((restrictFunctor U.ι).map ((powerAction (tensorLeft Y.sheaf (idealSheaf f)) (idealAction Y.sheaf (idealι f)) n).app M)) := by …Mentions: OAI.ActualCartier.idealSheaf, OAI.ActualCartier.idealι
- lemma
OAI.ActualCartier.over_isIso_iff_restrictline 240Source documentation
Isomorphy on a open subscheme and on its slice site are equivalent, using the restriction comparison equivalence.
lemma over_isIso_iff_restrict (U : Y.Opens) {M N : Y.Modules} (a : M ⟶ N) : IsIso (a.over U) ↔ IsIso ((restrictFunctor U.ι).map a) := … - lemma
OAI.ActualCartier.preimage_complementline 246Source documentation
The geometric complement has empty inverse image.
lemma preimage_complement (g : X ⟶ Y) [IsClosedImmersion g] : g ⁻¹ᵁ ActualOpenSupport.complement g = ⊥ := by …Mentions: OAI.ActualOpenSupport.complement
- lemma
OAI.ActualCartier.coherent_power_tensor_lineline 253Source documentation
All powers of the Cartier ideal preserve coherence.
lemma coherent_power_tensor_line (L : Y.Modules) (d : LineTrivialization Y.sheaf L) (n : ℕ) (M : Y.Modules) [M.IsFinitePresentation] : ((power (tensorLeft Y.sheaf L) n).obj M).IsFinitePresentation := by … - lemma
OAI.ActualCartier.cleared_extension_puncture_isIsoline 264Source documentation
A global extension retaining a puncture identification is an isomorphism on the puncture.
lemma cleared_extension_puncture_isIso (g : X ⟶ Y) [IsClosedImmersion g] (M N : Y.Modules) (n : ℕ) (e : M.over (ActualOpenSupport.complement g) ≅ N.over (ActualOpenSupport.complement g)) (a : (power (tensorLeft Y.sheaf (idealSheaf g)) n).obj M ⟶ N) (ha : a.over (ActualOpenSupport.complement g) = ((powerAction (tensorLeft Y.sheaf (idealSheaf g)) (idealAction Y.sheaf (idealι g)) n).app M).over (ActualOpenSupport.complement g) ≫ e.hom) : IsIso ((restrictFunctor (ActualOpenSupport.complement g).ι).map a) := by …Mentions: OAI.ActualOpenSupport.complement, OAI.ActualCartier.idealSheaf, OAI.ActualCartier.idealι
- lemma
OAI.ActualCartier.exists_global_cleared_extension_of_local_boundsline 300Source documentation
The local-to-global part of coherent denominator clearing, with the ideal twist and the geometric puncture. Local bounds are uniformized, overlap compatibility is proved by torsion freeness, maps are glued, and the resulting cokernel is supported on the divisor. The local extension property itself must still be supplied, for instance by transporting the proved affine denominator-clearing theorem.
lemma exists_global_cleared_extension_of_local_bounds {ι : Type*} [Fintype ι] (U : ι → Y.Opens) (hU : (⨆ i, U i) = ⊤) (M N : Y.Modules) [M.IsFinitePresentation] [N.IsFinitePresentation] (hN : ∀ V, Module.IsTorsionFree (Y.sheaf.obj.obj V) (N.val.obj V)) (e : M.over (ActualOpenSupport.complement g) ≅ N.over (ActualOpenSupport.complement g)) (hloc : ∀ i, ∃ k : ℕ, ∀ n : ℕ, k ≤ n → ∃ a : ((power (tensorLeft Y.sheaf (idealSheaf g)) n).obj M).over (U i) ⟶ N.over (U i), Mono a ∧ ∀ (V : Y.Opens) (hi : V ≤ U i) (hV : V ≤ ActualOpenSupport.complement g) (x : ((power (tensorLeft Y.sheaf (idealSheaf g)) n).obj M).val.obj (op V)), a.val.app (op (Over.mk (homOfLE hi))) x = …Mentions: OAI.ActualOpenSupport.complement, OAI.ActualCartier.idealSheaf
- def
OAI.ActualOpenModules.isoRestrictEquivline 346Source documentation
Restriction along a scheme isomorphism is an equivalence of its module sheaf categories.
def isoRestrictEquiv (e : X ≅ Y) : Y.Modules ≌ X.Modules := …
- def
OAI.ActualOpenModules.chartEquivline 355Source documentation
The modules on any open-immersion chart are exactly the modules on the target's slice site at its image open.
def chartEquiv (f : X ⟶ Y) [IsOpenImmersion f] : SheafOfModules (Y.ringCatSheaf.over f.opensRange) ≌ X.Modules := … - def
OAI.ActualOpenModules.chartRestrictionIsoline 360Source documentation
The chart equivalence intertwines global restriction with slice-site restriction.
def chartRestrictionIso (f : X ⟶ Y) [IsOpenImmersion f] : SheafOfModules.overFunctor Y.ringCatSheaf f.opensRange ⋙ (chartEquiv f).functor ≅ restrictFunctor f := …Mentions: OAI.ActualOpenModules.chartEquiv
- def
OAI.ActualOpenModules.chartMapline 368Source documentation
Transfer a chart morphism to the target slice site by the fully faithful inverse.
def chartMap (f : X ⟶ Y) [IsOpenImmersion f] {M N : Y.Modules} (a : (restrictFunctor f).obj M ⟶ (restrictFunctor f).obj N) : M.over f.opensRange ⟶ N.over f.opensRange := … - lemma
OAI.ActualOpenModules.chartMap_facline 374 - lemma
OAI.ActualOpenModules.chartMap_monoline 380 - lemma
OAI.ActualOpenModules.chartMap_restrictline 387Source documentation
Transferring a restricted global morphism recovers its slice-site restriction.
lemma chartMap_restrict (f : X ⟶ Y) [IsOpenImmersion f] {M N : Y.Modules} (a : M ⟶ N) : chartMap f ((restrictFunctor f).map a) = a.over f.opensRange := by …Mentions: OAI.ActualOpenModules.chartMap
- lemma
OAI.ActualOpenModules.image_eqline 403 - lemma
OAI.ActualOpenModules.over_hom_componentline 407 - lemma
OAI.ActualOpenModules.over_inv_componentline 410 - lemma
OAI.ActualOpenModules.restrict_map_componentline 413 - lemma
OAI.ActualOpenModules.over_hom_eqline 417 - lemma
OAI.ActualOpenModules.restrict_map_eqline 419 - lemma
OAI.ActualOpenModules.module_associator_componentline 423 - lemma
OAI.ActualOpenModules.chart_objectline 427 - lemma
OAI.ActualOpenModules.chartRestriction_hom_applyline 433 - lemma
OAI.ActualOpenModules.chartMap_fac_homline 453 - lemma
OAI.ActualOpenModules.chartFunctor_applyline 464 - lemma
OAI.ActualOpenModules.raw_comp_applyline 470 - lemma
OAI.ActualOpenModules.raw_chartRestriction_hom_applyline 474 - lemma
OAI.ActualOpenModules.chartMap_relationline 480 - lemma
OAI.ActualOpenModules.over_eq_naturalityline 498 - lemma
OAI.ActualOpenModules.eq_map_cancelline 508 - lemma
OAI.ActualOpenModules.chartMap_applyline 516 - lemma
OAI.ActualOpenModules.component_eq_transportline 538 - lemma
OAI.ActualOpenModules.chartMap_puncture_compatline 552Source documentation
Chart transport preserves the fixed morphism on every open in the geometric puncture.
lemma chartMap_puncture_compat {M N : Y.Modules} (W : Y.Opens) (a : (restrictFunctor f).obj M ⟶ (restrictFunctor f).obj N) (b : M.over W ⟶ N.over W) (hab : a.over (f ⁻¹ᵁ W) = ActualOpenComparison.pullOverHom f (f ⁻¹ᵁ W) W (f.image_preimage_le W) b) (V : Y.Opens) (hi : V ≤ f.opensRange) (hV : V ≤ W) (x : M.val.obj (op V)) : (chartMap f a).val.app (op (Over.mk (homOfLE hi))) x = b.val.app (op (Over.mk (homOfLE hV))) x := by …Mentions: OAI.ActualOpenComparison.pullOverHom, OAI.ActualOpenModules.chartMap
- lemma
OAI.ActualCartier.exists_global_cleared_extensionline 582Source documentation
Global coherent denominator clearing along the Cartier ideal uses finite affine bounds and agreement on overlaps.
lemma exists_global_cleared_extension (M N : Y.Modules) [M.IsFinitePresentation] [N.IsFinitePresentation] (hM : ∀ V, Module.IsTorsionFree (Y.sheaf.obj.obj V) (M.val.obj V)) (hN : ∀ V, Module.IsTorsionFree (Y.sheaf.obj.obj V) (N.val.obj V)) (e : M.over (ActualOpenSupport.complement g) ≅ N.over (ActualOpenSupport.complement g)) : ∃ k : ℕ, ∀ n : ℕ, k ≤ n → ∃ a : (power (tensorLeft Y.sheaf (idealSheaf g)) n).obj M ⟶ N, Mono a ∧ a.over (ActualOpenSupport.complement g) = ((powerAction (tensorLeft Y.sheaf (idealSheaf g)) (idealAction Y.sheaf (idealι g)) n).app M).over (ActualOpenSupport.complement g) ≫ e.hom ∧ …Mentions: OAI.ActualOpenSupport.complement, OAI.ActualCartier.idealSheaf, OAI.ActualCartier.idealι
- lemma
OAI.ActualCartier.exists_global_power_sandwichline 613Source documentation
The two-sided global Cartier lattice sandwich uses one bound for every larger power and retains the fixed puncture identification.
lemma exists_global_power_sandwich (M N : Y.Modules) [M.IsFinitePresentation] [N.IsFinitePresentation] (hM : ∀ V, Module.IsTorsionFree (Y.sheaf.obj.obj V) (M.val.obj V)) (hN : ∀ V, Module.IsTorsionFree (Y.sheaf.obj.obj V) (N.val.obj V)) (e : M.over (ActualOpenSupport.complement g) ≅ N.over (ActualOpenSupport.complement g)) : let T := tensorLeft Y.sheaf (idealSheaf g) …Mentions: OAI.ActualOpenSupport.complement, OAI.ActualCartier.idealSheaf
- lemma
OAI.ActualCartier.embedding_puncture_identityline 651Source documentation
A lattice embedding gives the divisor Grothendieck identity. Torsion freeness descends from the target, and the cokernel supplies the finite filtration by supported layers.
lemma embedding_puncture_identity {M N : Coh Y} (a : M ⟶ N) [Mono a] (hN : ∀ U, Module.IsTorsionFree (Y.sheaf.obj.obj U) (N.obj.val.obj U)) [IsIso ((restrictFunctor (ActualOpenSupport.complement g).ι).map ((cohInclusion Y).map a))] : ∃ n : ℕ, cls ((restriction g d).obj M) = cls ((restriction g d).obj N) + ((idealLayers g d n (cokernel a)).map fun Q => cls (conormalTensor g d Q) - cls Q).sum := by …Mentions: OAI.ActualOpenSupport.complement, OAI.ActualCartier.restriction, OAI.ActualCartier.idealLayers, OAI.ActualCartier.conormalTensor
- lemma
OAI.ActualCartier.module_embedding_puncture_identityline 664Source documentation
The divisor identity for a denominator-cleared morphism of coherent module sheaves.
lemma module_embedding_puncture_identity (M N : Y.Modules) [M.IsFinitePresentation] [N.IsFinitePresentation] (a : M ⟶ N) [Mono a] (hN : ∀ U, Module.IsTorsionFree (Y.sheaf.obj.obj U) (N.val.obj U)) [IsIso ((restrictFunctor (ActualOpenSupport.complement g).ι).map a)] : let M' : Coh Y := ⟨M, inferInstance⟩ …Mentions: OAI.ActualOpenSupport.complement
- def
OAI.ActualCartier.clearedLatticeline 701Source documentation
The coherent sheaf obtained by twisting a coherent lattice by a nonnegative Cartier ideal power.
def clearedLattice (n : ℕ) (M : Y.Modules) [M.IsFinitePresentation] : Coh Y := …
- lemma
OAI.ActualCartier.exists_cleared_lattice_identityline 707Source documentation
Lattices identified off the divisor give a finite quotient filtration, epimorphisms from conormal twists, and the divisor Grothendieck identity.
lemma exists_cleared_lattice_identity (M N : Y.Modules) [M.IsFinitePresentation] [N.IsFinitePresentation] (hM : ∀ U, Module.IsTorsionFree (Y.sheaf.obj.obj U) (M.val.obj U)) (hN : ∀ U, Module.IsTorsionFree (Y.sheaf.obj.obj U) (N.val.obj U)) (e : M.over (ActualOpenSupport.complement g) ≅ N.over (ActualOpenSupport.complement g)) : let L : Coh Y := ⟨N, inferInstance⟩ …Mentions: OAI.ActualOpenSupport.complement
- def
OAI.CartierImageFiltration.powerAddIsoline 763Source documentation
Reassociate ideal powers without changing their order.
def powerAddIso (n : ℕ) : (m : ℕ) → (M : C) → (power T (n + m)).obj M ≅ (power T n).obj ((power T m).obj M) | 0, _ => Iso.refl _ | m + 1, M => powerAddIso n m (T.obj M) /-- The action of an added power is the composite of the two power actions, with the canonical reassociation included. -/Mentions: OAI.CartierImageFiltration.power
- lemma
OAI.CartierImageFiltration.powerAction_addline 769Source documentation
The action of an added power is the composite of the two power actions, with the canonical reassociation included.
lemma powerAction_add (m n : ℕ) (M : C) : (powerAddIso T n m M).hom ≫ (powerAction T a n).app ((power T m).obj M) ≫ (powerAction T a m).app M = (powerAction T a (n + m)).app M := by …Mentions: OAI.CartierImageFiltration.powerAddIso, OAI.CartierImageFiltration.powerAction, OAI.CartierImageFiltration.power
- lemma
OAI.CartierImageFiltration.power_sandwich_mapline 786Source documentation
A pair of maps that is inverse after restricting the puncture gives a power-action factorization there, including the canonical power reassociation. This is the functorial calculation for the Cartier sandwich.
lemma power_sandwich_map {D : Type*} [Category D] (F : C ⥤ D) (n : ℕ) {M N : C} (e : F.obj M ≅ F.obj N) (f : (power T n).obj M ⟶ N) (g : (power T n).obj N ⟶ M) (hf : F.map f = F.map ((powerAction T a n).app M) ≫ e.hom) (hg : F.map g = F.map ((powerAction T a n).app N) ≫ e.inv) : F.map ((powerAddIso T n n N).hom ≫ (power T n).map g ≫ f) = F.map ((powerAction T a (n + n)).app N) := by …Mentions: OAI.CartierImageFiltration.power, OAI.CartierImageFiltration.powerAction, OAI.CartierImageFiltration.powerAddIso