ModuleScheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.lean
Nyll.AlgebraicCurves.Geometry.Schemes.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
12 declarations indexed from sourceView source ↗ Module documentation
Overlap section equivalences for invertible scheme modules after scalar extension on two affine charts.
Declarations
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.P2mWs11Span.op_hom_eq
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
namespace P2mWs11Span
variable {Y : Scheme.{u}}
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.P2mWs11Span.map_map
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
namespace P2mWs11Span
variable {Y : Scheme.{u}}
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.P2mWs11Span.map_irrel
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
namespace P2mWs11Span
variable {Y : Scheme.{u}}
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.P2mWs11Span.ring_map_map
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
namespace P2mWs11Span
variable {Y : Scheme.{u}}
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.P2mWs11Span.ring_map_irrel
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
namespace P2mWs11Span
variable {Y : Scheme.{u}}
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.P2mWs11Span.span_res_eq_top
Source context 6 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
open P2mWs11Span in
Lean source · full declarationtheorem P2mWs11Span.span_res_eq_top
{X : Scheme.{u}} (M : X.Modules)
(htriv : ∀ x : X, ∃ (W : X.Opens), x ∈ W ∧
Nonempty ((Scheme.Modules.pullback W.ι).obj M ≅ SheafOfModules.unit W.toScheme.ringCatSheaf))
{U V : X.Opens} (hU : IsAffineOpen U) (hV : IsAffineOpen V) (hVU : V ≤ U) :
Submodule.span Γ(X, V) (Set.range (fun y : Γ(M, U) => M.presheaf.map (homOfLE hVU).op y)) =
⊤ := by
classical
set S : Submodule Γ(X, V) Γ(M, V) :=
Submodule.span Γ(X, V) (Set.range (fun y : Γ(M, U) => M.presheaf.map (homOfLE hVU).op y))
with hS
rw [Submodule.eq_top_iff']
intro s
have key : ∀ f : Γ(X, U), X.basicOpen f ≤ V →
∃ N : ℕ, (X.presheaf.map (homOfLE hVU).op f) ^ N • s ∈ S := by
intro f hfV
set g : Γ(X, V) := X.presheaf.map (homOfLE hVU).op f with hg
obtain ⟨n, y, hy⟩ :=
(Scheme.Modules.isLocalization_basicOpen_of_locallyTrivial M htriv ⟨U, hU⟩ f).1
(M.presheaf.map (homOfLE hfV).op s)
have hgf : X.basicOpen g ≤ X.basicOpen f := by
rw [hg, Scheme.basicOpen_res]; exact inf_le_right
set t : Γ(M, V) := g ^ n • s - M.presheaf.map (homOfLE hVU).op y with ht
have htf : M.presheaf.map (homOfLE hfV).op t = 0 := by
rw [ht, map_sub, Scheme.Modules.map_smul, map_pow, map_map, hg, ring_map_map, sub_eq_zero,
ring_map_irrel ((homOfLE hVU).op ≫ (homOfLE hfV).op) (homOfLE (X.basicOpen_le f)).op,
map_irrel M ((homOfLE hVU).op ≫ (homOfLE hfV).op) (homOfLE (X.basicOpen_le f)).op, hy,
map_pow]
have htg : M.presheaf.map (homOfLE (X.basicOpen_le g)).op t = 0 := by
rw [map_irrel M (homOfLE (X.basicOpen_le g)).op ((homOfLE hfV).op ≫ (homOfLE hgf).op),
← map_map, htf, map_zero]
obtain ⟨m, hm⟩ :=
(Scheme.Modules.isLocalization_basicOpen_of_locallyTrivial M htriv ⟨V, hV⟩ g).2 t htg
refine ⟨m + n, ?_⟩
have : g ^ (m + n) • s = g ^ m • M.presheaf.map (homOfLE hVU).op y := by
rw [pow_add, mul_smul, ← sub_eq_zero, ← smul_sub, ← ht]; exact hm
rw [this]
exact S.smul_mem _ (Submodule.subset_span ⟨y, rfl⟩)
suffices h1 : (1 : Γ(X, V)) ∈ S.colon {s} by
simpa using Submodule.mem_colon_singleton.mp h1
by_contra h1
have hI : S.colon {s} ≠ ⊤ := fun h => h1 (h ▸ Submodule.mem_top)
obtain ⟨𝔪, h𝔪, hI𝔪⟩ := Ideal.exists_le_maximal _ hI
let p : PrimeSpectrum Γ(X, V) := ⟨𝔪, h𝔪.isPrime⟩
have hxV : hV.fromSpec p ∈ V := by
have h : hV.fromSpec p ∈ Set.range (hV.fromSpec : _ → X) := ⟨p, rfl⟩
rw [hV.range_fromSpec] at h
exact h
obtain ⟨f, hfV, hxf⟩ := hU.exists_basicOpen_le ⟨_, hxV⟩ (hVU hxV)
obtain ⟨N, hN⟩ := key f hfV
set g : Γ(X, V) := X.presheaf.map (homOfLE hVU).op f with hg
have hgI : g ^ N ∈ S.colon {s} := Submodule.mem_colon_singleton.mpr hN
have hg𝔪 : g ∈ 𝔪 := h𝔪.isPrime.mem_of_pow_mem N (hI𝔪 hgI)
have hxg : hV.fromSpec p ∈ X.basicOpen g := by
rw [hg, Scheme.basicOpen_res]; exact ⟨hxV, hxf⟩
have : p ∈ hV.fromSpec ⁻¹ᵁ X.basicOpen g := hxg
rw [hV.fromSpec_preimage_basicOpen] at this
exact (PrimeSpectrum.mem_basicOpen g p).mp this hg𝔪
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.P2mWs11Span.algebraMap_basicOpen_apply
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
namespace P2mWs11Span
open TensorProduct
variable {X : Scheme.{u}}
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.P2mWs11Span.exists_pow_mul_eq_algebraMap
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
namespace P2mWs11Span
open TensorProduct
variable {X : Scheme.{u}}
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.P2mWs11Span.algebraMap_tmul_eq_one_tmul_smul
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
namespace P2mWs11Span
open TensorProduct
variable {X : Scheme.{u}}
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.P2mWs11Span.algebraMap_pow_smul_one_tmul
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
namespace P2mWs11Span
open TensorProduct
variable {X : Scheme.{u}}
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible.P2mWs11Span.exists_baseChange_equiv
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
namespace P2mWs11Span
open TensorProduct
variable {X : Scheme.{u}}
AlgebraicGeometry.Scheme.TwoAffineOpenCover.exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible
universe u
open CategoryTheory AlgebraicGeometry Opposite
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry TensorProduct in
open _root_.AlgebraicCurves.Geometry.Schemes.Proofs in
open Scheme_TwoAffineOpenCover_exists_sectionsOf_overlap_linearEquiv_baseChange_of_isInvertible in
with_weak_namespace _root_.AlgebraicGeometry.Scheme.TwoAffineOpenCover