Module

Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.lean

Nyll.AlgebraicCurves.Geometry.Schemes.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
18 declarations indexed from sourceView source ↗

Scheme exists quotient of finite Locally Free equivalence Relation

Declarations

AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.exists_invariant_affine_cover
Source context 7 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
open _root_.AlgebraicGeometry.Scheme in
theorem exists_invariant_affine_cover
    {X R : Scheme.{u}} (s t : R ⟶ X)
    [IsFinite s] [Flat s] [LocallyOfFinitePresentation s]
    [IsFinite t] [Flat t] [LocallyOfFinitePresentation t]
    (hequiv : ∀ T : Scheme.{u},
      _root_.Equivalence fun x y : T ⟶ X => ∃ φ : T ⟶ R, φ ≫ s = x ∧ φ ≫ t = y)
    (haff : ∀ x : X, ∃ U : X.Opens, IsAffineOpen U ∧ ∀ r : R, s r = x → t r ∈ U) :
    ∃ W : X → X.Opens, (∀ x, IsAffineOpen (W x)) ∧ (∀ x, x ∈ W x) ∧ (∀ x, s ⁻¹ᵁ W x = t ⁻¹ᵁ W x) :=
      by
  choose U hU hxU using haff
  choose W hW hxW _ hinv using fun x =>
    exists_invariant_isAffineOpen_of_finiteLocallyFree_equivalenceRelation
      s t hequiv (hU x) (hxU x)
  exact ⟨W, hW, hxW, hinv⟩
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.sW

The first relation map restricted to the invariant open subset W.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
def sW : (s ⁻¹ᵁ W).toScheme ⟶ W.toScheme
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.tW

The second relation map restricted to W, identified with the first preimage by hinv.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
def tW : (s ⁻¹ᵁ W).toScheme ⟶ W.toScheme
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.sW_ι
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
theorem sW_ι : sW s W ≫ W.ι = (s ⁻¹ᵁ W).ι ≫ s
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.tW_ι
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
theorem tW_ι : tW s t W hinv ≫ W.ι = (s ⁻¹ᵁ W).ι ≫ t
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.isPullback_sW
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
theorem isPullback_sW : IsPullback (s ⁻¹ᵁ W).ι (sW s W) s W.ι
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.isPullback_tW
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
theorem isPullback_tW : IsPullback (s ⁻¹ᵁ W).ι (tW s t W hinv) t W.ι
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
instance [IsFinite s] : IsFinite (sW s W)
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
instance [Flat s] : Flat (sW s W)
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
instance [LocallyOfFinitePresentation s] : LocallyOfFinitePresentation (sW s W)
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.tW_finite
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
theorem tW_finite [IsFinite t] : IsFinite (tW s t W hinv)
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.tW_flat
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
theorem tW_flat [Flat t] : Flat (tW s t W hinv)
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.tW_lfp
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
theorem tW_lfp [LocallyOfFinitePresentation t] : LocallyOfFinitePresentation (tW s t W hinv)
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.mono_restrict
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
theorem mono_restrict
    (hmono : ∀ {T : Scheme.{u}} (a b : T ⟶ R), a ≫ s = b ≫ s → a ≫ t = b ≫ t → a = b)
    {T : Scheme.{u}} (a b : T ⟶ (s ⁻¹ᵁ W).toScheme) (h₁ : a ≫ sW s W = b ≫ sW s W)
    (h₂ : a ≫ tW s t W hinv = b ≫ tW s t W hinv) : a = b
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.rel_restrict_iff
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
theorem rel_restrict_iff {T : Scheme.{u}} (x y : T ⟶ W.toScheme) :
    (∃ φ : T ⟶ (s ⁻¹ᵁ W).toScheme, φ ≫ sW s W = x ∧ φ ≫ tW s t W hinv = y) ↔
      ∃ ψ : T ⟶ R, ψ ≫ s = x ≫ W.ι ∧ ψ ≫ t = y ≫ W.ι
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.equivalence_restrict
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Geometry.Schemes.Proofs
namespace Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
section restrict
variable {X R : Scheme.{u}} (s t : R ⟶ X) (W : X.Opens) (hinv : s ⁻¹ᵁ W = t ⁻¹ᵁ W)
theorem equivalence_restrict
    (hequiv : ∀ T : Scheme.{u},
      _root_.Equivalence fun x y : T ⟶ X => ∃ φ : T ⟶ R, φ ≫ s = x ∧ φ ≫ t = y)
    (T : Scheme.{u}) :
    _root_.Equivalence fun x y : T ⟶ W.toScheme =>
      ∃ φ : T ⟶ (s ⁻¹ᵁ W).toScheme, φ ≫ sW s W = x ∧ φ ≫ tW s t W hinv = y := by
  have E := hequiv T
  exact
    { refl := fun x => (rel_restrict_iff s t W hinv x x).2 (E.refl _)
      symm := fun h => (rel_restrict_iff s t W hinv _ _).2 (E.symm ((rel_restrict_iff s t W hinv _
        _).1 h))
      trans := fun h h' => (rel_restrict_iff s t W hinv _ _).2
        (E.trans ((rel_restrict_iff s t W hinv _ _).1 h) ((rel_restrict_iff s t W hinv _ _).1 h')) }
AlgebraicCurves.Geometry.Schemes.Proofs.Scheme_exists_quotient_of_finiteLocallyFree_equivalenceRelation.Q1SCH.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_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
namespace Q1SCH
theorem main {X R : Scheme.{u}} (s t : R ⟶ X)
    [IsFinite s] [Flat s] [LocallyOfFinitePresentation s]
    [IsFinite t] [Flat t] [LocallyOfFinitePresentation t]
    (hmono : ∀ {T : Scheme.{u}} (a b : T ⟶ R), a ≫ s = b ≫ s → a ≫ t = b ≫ t → a = b)
    (hequiv : ∀ T : Scheme.{u},
      _root_.Equivalence fun x y : T ⟶ X => ∃ φ : T ⟶ R, φ ≫ s = x ∧ φ ≫ t = y)
    (haff : ∀ x : X, ∃ U : X.Opens, IsAffineOpen U ∧ ∀ r : R, s r = x → t r ∈ U) :
    ∃ (Y : Scheme.{u}) (p : X ⟶ Y) (w : s ≫ p = t ≫ p),
      IsFinite p ∧ Flat p ∧ LocallyOfFinitePresentation p ∧ Surjective p ∧
      IsPullback s t p p ∧ Nonempty (IsColimit (Cofork.ofπ p w)) := by
  obtain ⟨W, hW, hxW, hinv⟩ := exists_invariant_affine_cover s t hequiv haff
  have loc : ∀ x : X, ∃ (Y : Scheme.{u}) (_ : IsAffine Y) (p : (W x).toScheme ⟶ Y)
      (w : sW s (W x) ≫ p = tW s t (W x) (hinv x) ≫ p),
      IsFinite p ∧ Flat p ∧ LocallyOfFinitePresentation p ∧ Surjective p ∧
      IsPullback (sW s (W x)) (tW s t (W x) (hinv x)) p p ∧ Nonempty (IsColimit (Cofork.ofπ p w)) :=
    fun x => by
      have : IsAffine (W x).toScheme := hW x
      have := tW_finite s t (W x) (hinv x)
      have := tW_flat s t (W x) (hinv x)
      have := tW_lfp s t (W x) (hinv x)
      exact
        AlgebraicGeometry.Scheme.exists_affine_quotient_of_finiteLocallyFree_equivalenceRelation
        (sW s (W x)) (tW s t (W x) (hinv x))
        (fun a b h₁ h₂ => mono_restrict s t (W x) (hinv x) hmono a b h₁ h₂)
        (equivalence_restrict s t (W x) (hinv x) hequiv)
  refine AlgebraicGeometry.Scheme.exists_quotient_of_forall_exists_quotient_restrict s t W hxW hinv
    fun x => ?_
  obtain ⟨Y, _, p, w, h₁, h₂, h₃, h₄, h₅, -⟩ := loc x
  exact ⟨Y, p, w, h₁, h₂, h₃, h₄, h₅⟩
AlgebraicGeometry.Scheme.exists_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_quotient_of_finiteLocallyFree_equivalenceRelation
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry
universe u
theorem _root_.AlgebraicGeometry.Scheme.exists_quotient_of_finiteLocallyFree_equivalenceRelation
    {X R : Scheme.{u}} (s t : R ⟶ X)
    [IsFinite s] [Flat s] [LocallyOfFinitePresentation s]
    [IsFinite t] [Flat t] [LocallyOfFinitePresentation t]
    (hmono : ∀ {T : Scheme.{u}} (a b : T ⟶ R), a ≫ s = b ≫ s → a ≫ t = b ≫ t → a = b)
    (hequiv : ∀ T : Scheme.{u},
      _root_.Equivalence fun x y : T ⟶ X => ∃ φ : T ⟶ R, φ ≫ s = x ∧ φ ≫ t = y)
    (haff : ∀ x : X, ∃ U : X.Opens, IsAffineOpen U ∧ ∀ r : R, s r = x → t r ∈ U) :
    ∃ (Y : Scheme.{u}) (p : X ⟶ Y) (w : s ≫ p = t ≫ p),
      IsFinite p ∧ Flat p ∧ LocallyOfFinitePresentation p ∧ Surjective p ∧
      IsPullback s t p p ∧ Nonempty (IsColimit (Cofork.ofπ p w)) :=
  Q1SCH.main s t hmono hequiv haff