ModuleScheme_exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation.lean
Nyll.AlgebraicCurves.Geometry.Schemes.Scheme_exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation
5 declarations indexed from sourceView source ↗ Module documentation
An affine quotient of a finite locally free equivalence relation
A finite locally free equivalence relation on an affine scheme admits an affine quotient with the expected coequalizer property and finite locally free quotient map.
Imports12
- Nyll.AlgebraicCurves.Foundations.Algebra.RingHom_isPushout_eqLocus_of_finiteLocallyFree_equivalenceRelation
- Mathlib.AlgebraicGeometry.AffineScheme
- Mathlib.AlgebraicGeometry.Pullbacks
- Mathlib.AlgebraicGeometry.Morphisms.Finite
- Mathlib.AlgebraicGeometry.Morphisms.Flat
- Mathlib.AlgebraicGeometry.Morphisms.FinitePresentation
- Mathlib.AlgebraicGeometry.Sites.Fpqc
- Mathlib.Algebra.Category.Ring.Epi
- Mathlib.RingTheory.Flat.EquationalCriterion
- Mathlib.RingTheory.FinitePresentation
- Mathlib.RingTheory.Finiteness.ModuleFinitePresentation
- Mathlib.CategoryTheory.Limits.Shapes.KernelPair
Imported by3
Declarations
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation.Q1AFF.finite_projective_appTop
Source context 6 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry Opposite
universe u
namespace Q1AFF
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation.Q1AFF.range_sup_range_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_exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry Opposite
universe u
namespace Q1AFF
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation.Q1AFF.equivalence_ringPoints
Source context 6 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry Opposite
universe u
namespace Q1AFF
Lean source · full declarationtheorem equivalence_ringPoints {X R : Scheme.{u}} [IsAffine X] [IsAffine R] (s t : R ⟶ X)
(hequiv : ∀ T : Scheme.{u},
_root_.Equivalence fun x y : T ⟶ X => ∃ φ : T ⟶ R, φ ≫ s = x ∧ φ ≫ t = y)
(T : Type u) [CommRing T] :
_root_.Equivalence fun x y : Γ(X, ⊤) →+* T =>
∃ φ : Γ(R, ⊤) →+* T, φ.comp s.appTop.hom = x ∧ φ.comp t.appTop.hom = y := by
let Φ : (Γ(X, ⊤) →+* T) → (Spec (.of T) ⟶ X) := fun x =>
Spec.map (CommRingCat.ofHom x) ≫ X.isoSpec.inv
let ΦR : (Γ(R, ⊤) →+* T) → (Spec (.of T) ⟶ R) := fun φ =>
Spec.map (CommRingCat.ofHom φ) ≫ R.isoSpec.inv
have hnat : ∀ f : R ⟶ X, R.isoSpec.inv ≫ f = Spec.map f.appTop ≫ X.isoSpec.inv := fun f => by
rw [Iso.inv_comp_eq, ← Category.assoc, Iso.eq_comp_inv]
exact (Scheme.isoSpec_hom_naturality f).symm
have hΦ : ∀ (f : R ⟶ X) (φ : Γ(R, ⊤) →+* T), ΦR φ ≫ f = Φ (φ.comp f.appTop.hom) := fun f φ => by
simp only [ΦR, Φ, Category.assoc, hnat, ← Spec.map_comp_assoc, CommRingCat.ofHom_comp,
CommRingCat.ofHom_hom]
have hsurjR : ∀ ψ : Spec (.of T) ⟶ R, ∃ φ, ΦR φ = ψ := fun ψ => by
obtain ⟨g, hg⟩ := Spec.map_surjective (ψ ≫ R.isoSpec.hom)
refine ⟨g.hom, ?_⟩
simp only [ΦR, CommRingCat.ofHom_hom, hg, Category.assoc, Iso.hom_inv_id, Category.comp_id]
have hΦinj : Function.Injective Φ := fun x y hxy => by
have h1 : Spec.map (CommRingCat.ofHom x) = Spec.map (CommRingCat.ofHom y) := by
simpa [Φ] using congrArg (· ≫ X.isoSpec.hom) hxy
exact congrArg CommRingCat.Hom.hom (Spec.map_injective h1)
have key : ∀ x y : Γ(X, ⊤) →+* T,
(∃ φ : Γ(R, ⊤) →+* T, φ.comp s.appTop.hom = x ∧ φ.comp t.appTop.hom = y) ↔
(∃ ψ : Spec (.of T) ⟶ R, ψ ≫ s = Φ x ∧ ψ ≫ t = Φ y) := fun x y => by
constructor
· rintro ⟨φ, rfl, rfl⟩
exact ⟨ΦR φ, hΦ s φ, hΦ t φ⟩
· rintro ⟨ψ, h1, h2⟩
obtain ⟨φ, rfl⟩ := hsurjR ψ
exact ⟨φ, hΦinj (by rw [← hΦ, h1]), hΦinj (by rw [← hΦ, h2])⟩
have E := hequiv (Spec (.of T))
exact
{ refl := fun x => (key x x).2 (E.refl _)
symm := fun h => (key _ _).2 (E.symm ((key _ _).1 h))
trans := fun h h' => (key _ _).2 (E.trans ((key _ _).1 h) ((key _ _).1 h')) }
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation.Q1AFF.main
Source context 6 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry Opposite
universe u
namespace Q1AFF
AlgebraicGeometry.Scheme.exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry Opposite
universe u