File: Mathlib/AlgebraicGeometry/Limits.lean

full_name: AlgebraicGeometry.specZIsTerminal
code: /-- `Spec ℤ` is the terminal object in the category of schemes. -/
noncomputable def specZIsTerminal : IsTerminal (Spec (CommRingCat.of ℤ)) 
goal: CategoryTheory.Limits.IsTerminal (AlgebraicGeometry.Spec (CommRingCat.of ℤ))

full_name: AlgebraicGeometry.instHasTerminalScheme
code: instance : HasTerminal Scheme 
goal: CategoryTheory.Limits.HasTerminal AlgebraicGeometry.Scheme

full_name: AlgebraicGeometry.instIsAffineTerminalScheme
code: instance : IsAffine (⊤_ Scheme.{u}) 
goal: AlgebraicGeometry.IsAffine (⊤_ AlgebraicGeometry.Scheme)

full_name: AlgebraicGeometry.instHasFiniteLimitsScheme
code: instance : HasFiniteLimits Scheme 
goal: CategoryTheory.Limits.HasFiniteLimits AlgebraicGeometry.Scheme

full_name: AlgebraicGeometry.Scheme.emptyTo
code: /-- The map from the empty scheme. -/
@[simps]
def Scheme.emptyTo (X : Scheme.{u}) : ∅ ⟶ X 
goal: ∅ ⟶ X

full_name: AlgebraicGeometry.Scheme.emptyTo_val_base_apply
code: /-- The map from the empty scheme. -/
@[simps]
def Scheme.emptyTo (X : Scheme.{u}) : ∅ ⟶ X 
goal: X.emptyTo.val.base x = PEmpty.elim x

full_name: AlgebraicGeometry.Scheme.emptyTo_val_c_app
code: /-- The map from the empty scheme. -/
@[simps]
def Scheme.emptyTo (X : Scheme.{u}) : ∅ ⟶ X 
goal: X.emptyTo.val.c.app U = CommRingCat.punitIsTerminal.from (X.presheaf.obj U)

full_name: AlgebraicGeometry.Scheme.empty_ext
code: @[ext]
theorem Scheme.empty_ext {X : Scheme.{u}} (f g : ∅ ⟶ X) : f = g 
goal: f = g

full_name: AlgebraicGeometry.Scheme.eq_emptyTo
code: theorem Scheme.eq_emptyTo {X : Scheme.{u}} (f : ∅ ⟶ X) : f = Scheme.emptyTo X 
goal: f = X.emptyTo

full_name: AlgebraicGeometry.Scheme.hom_unique_of_empty_source
code: instance Scheme.hom_unique_of_empty_source (X : Scheme.{u}) : Unique (∅ ⟶ X) 
goal: Unique (∅ ⟶ X)

full_name: AlgebraicGeometry.emptyIsInitial
code: /-- The empty scheme is the initial object in the category of schemes. -/
def emptyIsInitial : IsInitial (∅ : Scheme.{u}) 
goal: CategoryTheory.Limits.IsInitial ∅

full_name: AlgebraicGeometry.emptyIsInitial_to
code: @[simp]
theorem emptyIsInitial_to : emptyIsInitial.to = Scheme.emptyTo 
goal: AlgebraicGeometry.emptyIsInitial.to = AlgebraicGeometry.Scheme.emptyTo

full_name: AlgebraicGeometry.instIsEmptyαTopologicalSpaceCarrierCommRingCatEmptyCollectionScheme
code: instance : IsEmpty (∅ : Scheme.{u}) 
goal: IsEmpty ↑↑∅.toPresheafedSpace

full_name: AlgebraicGeometry.spec_punit_isEmpty
code: instance spec_punit_isEmpty : IsEmpty (Spec (CommRingCat.of PUnit.{u+1})) 
goal: IsEmpty ↑↑(AlgebraicGeometry.Spec (CommRingCat.of PUnit.{u + 1})).toPresheafedSpace

full_name: AlgebraicGeometry.isOpenImmersion_of_isEmpty
code: instance (priority := 100) isOpenImmersion_of_isEmpty {X Y : Scheme} (f : X ⟶ Y)
    [IsEmpty X] : IsOpenImmersion f 
goal: AlgebraicGeometry.IsOpenImmersion f

full_name: AlgebraicGeometry.isIso_of_isEmpty
code: instance (priority := 100) isIso_of_isEmpty {X Y : Scheme} (f : X ⟶ Y) [IsEmpty Y] :
    IsIso f 
goal: CategoryTheory.IsIso f

full_name: AlgebraicGeometry.isInitialOfIsEmpty
code: /-- A scheme is initial if its underlying space is empty . -/
noncomputable def isInitialOfIsEmpty {X : Scheme} [IsEmpty X] : IsInitial X 
goal: CategoryTheory.Limits.IsInitial X

full_name: AlgebraicGeometry.specPunitIsInitial
code: /-- `Spec 0` is the initial object in the category of schemes. -/
noncomputable def specPunitIsInitial : IsInitial (Spec (.of PUnit.{u+1})) 
goal: CategoryTheory.Limits.IsInitial (AlgebraicGeometry.Spec (CommRingCat.of PUnit.{u + 1}))

full_name: AlgebraicGeometry.isAffine_of_isEmpty
code: instance (priority := 100) isAffine_of_isEmpty {X : Scheme} [IsEmpty X] : IsAffine X 
goal: AlgebraicGeometry.IsAffine X

full_name: AlgebraicGeometry.instHasInitialScheme
code: instance : HasInitial Scheme.{u} 
goal: CategoryTheory.Limits.HasInitial AlgebraicGeometry.Scheme

full_name: AlgebraicGeometry.initial_isEmpty
code: instance initial_isEmpty : IsEmpty (⊥_ Scheme) 
goal: IsEmpty ↑↑(⊥_ AlgebraicGeometry.Scheme).toPresheafedSpace

full_name: AlgebraicGeometry.isAffineOpen_bot
code: theorem isAffineOpen_bot (X : Scheme) : IsAffineOpen (⊥ : X.Opens) 
goal: AlgebraicGeometry.IsAffineOpen ⊥

full_name: AlgebraicGeometry.instHasStrictInitialObjectsScheme
code: instance : HasStrictInitialObjects Scheme 
goal: CategoryTheory.Limits.HasStrictInitialObjects AlgebraicGeometry.Scheme

full_name: AlgebraicGeometry.disjointGlueData'_t
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps]
noncomputable
def disjointGlueData' : GlueData' Scheme 
goal: ∀ (x x_1 : ι) (x_2 : x ≠ x_1), (AlgebraicGeometry.disjointGlueData' f).t x x_1 x_2 = 𝟙 ((fun x x_3 x => ∅) x x_1 x_2)

full_name: AlgebraicGeometry.disjointGlueData'
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps]
noncomputable
def disjointGlueData' : GlueData' Scheme 
goal: CategoryTheory.GlueData' AlgebraicGeometry.Scheme

full_name: AlgebraicGeometry.disjointGlueData'_J
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps]
noncomputable
def disjointGlueData' : GlueData' Scheme 
goal: (AlgebraicGeometry.disjointGlueData' f).J = ι

full_name: AlgebraicGeometry.disjointGlueData'_U
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps]
noncomputable
def disjointGlueData' : GlueData' Scheme 
goal: ∀ (a : ι), (AlgebraicGeometry.disjointGlueData' f).U a = f a

full_name: AlgebraicGeometry.disjointGlueData'_f
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps]
noncomputable
def disjointGlueData' : GlueData' Scheme 
goal: ∀ (x x_1 : ι) (x_2 : x ≠ x_1), (AlgebraicGeometry.disjointGlueData' f).f x x_1 x_2 = (f x).emptyTo

full_name: AlgebraicGeometry.disjointGlueData'_t'
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps]
noncomputable
def disjointGlueData' : GlueData' Scheme 
goal: ∀ (x x_1 x_2 : ι) (x_3 : x ≠ x_1) (x_4 : x ≠ x_2) (x_5 : x_1 ≠ x_2),
  (AlgebraicGeometry.disjointGlueData' f).t' x x_1 x_2 x_3 x_4 x_5 =
    CategoryTheory.Limits.pullback.fst ((fun x x_6 x_7 => (f x).emptyTo) x x_1 x_3)
        ((fun x x_6 x_7 => (f x).emptyTo) x x_2 x_4) ≫
      (CategoryTheory.Limits.pullback ((fun x x_6 x_7 => (f x).emptyTo) x_1 x_2 x_5)
          ((fun x x_6 x_7 => (f x).emptyTo) x_1 x ⋯)).emptyTo

full_name: AlgebraicGeometry.disjointGlueData'_V
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps]
noncomputable
def disjointGlueData' : GlueData' Scheme 
goal: ∀ (x x_1 : ι) (x_2 : x ≠ x_1), (AlgebraicGeometry.disjointGlueData' f).V x x_1 x_2 = ∅

full_name: AlgebraicGeometry.disjointGlueData_f
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps! J V U f t]
noncomputable
def disjointGlueData : Scheme.GlueData 
goal: (AlgebraicGeometry.disjointGlueData f).f i j = (AlgebraicGeometry.disjointGlueData' f).f' i j

full_name: AlgebraicGeometry.disjointGlueData_V
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps! J V U f t]
noncomputable
def disjointGlueData : Scheme.GlueData 
goal: (AlgebraicGeometry.disjointGlueData f).V ij = if ij.1 = ij.2 then f ij.1 else ∅

full_name: AlgebraicGeometry.disjointGlueData_t
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps! J V U f t]
noncomputable
def disjointGlueData : Scheme.GlueData 
goal: (AlgebraicGeometry.disjointGlueData f).t i j = if h : i = j then CategoryTheory.eqToHom ⋯ else CategoryTheory.eqToHom ⋯

full_name: AlgebraicGeometry.disjointGlueData
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps! J V U f t]
noncomputable
def disjointGlueData : Scheme.GlueData 
goal: AlgebraicGeometry.Scheme.GlueData

full_name: AlgebraicGeometry.disjointGlueData_J
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps! J V U f t]
noncomputable
def disjointGlueData : Scheme.GlueData 
goal: (AlgebraicGeometry.disjointGlueData f).J = ι

full_name: AlgebraicGeometry.disjointGlueData_U
code: /-- (Implementation Detail) The glue data associated to a disjoint union. -/
@[simps! J V U f t]
noncomputable
def disjointGlueData : Scheme.GlueData 
goal: ∀ (a : (AlgebraicGeometry.disjointGlueData' f).J), (AlgebraicGeometry.disjointGlueData f).U a = f a

full_name: AlgebraicGeometry.toLocallyRingedSpaceCoproductCofan
code: /-- (Implementation Detail) The cofan in `LocallyRingedSpace` associated to a disjoint union. -/
noncomputable
def toLocallyRingedSpaceCoproductCofan : Cofan (Scheme.toLocallyRingedSpace ∘ f) 
goal: CategoryTheory.Limits.Cofan (AlgebraicGeometry.Scheme.toLocallyRingedSpace ∘ f)

full_name: AlgebraicGeometry.toLocallyRingedSpaceCoproductCofanIsColimit
code: /-- (Implementation Detail)
The cofan in `LocallyRingedSpace` associated to a disjoint union is a colimit. -/
noncomputable
def toLocallyRingedSpaceCoproductCofanIsColimit :
    IsColimit (toLocallyRingedSpaceCoproductCofan f) 
goal: CategoryTheory.Limits.IsColimit (AlgebraicGeometry.toLocallyRingedSpaceCoproductCofan f)

full_name: AlgebraicGeometry.instCreatesColimitSchemeLocallyRingedSpaceDiscreteFunctorForgetToLocallyRingedSpace
code: noncomputable
instance : CreatesColimit (Discrete.functor f) Scheme.forgetToLocallyRingedSpace 
goal: CategoryTheory.CreatesColimit (CategoryTheory.Discrete.functor f) AlgebraicGeometry.Scheme.forgetToLocallyRingedSpace

full_name: AlgebraicGeometry.instCreatesColimitsOfShapeSchemeLocallyRingedSpaceDiscreteForgetToLocallyRingedSpace
code: noncomputable
instance : CreatesColimitsOfShape (Discrete ι) Scheme.forgetToLocallyRingedSpace 
goal: CategoryTheory.CreatesColimitsOfShape (CategoryTheory.Discrete ι) AlgebraicGeometry.Scheme.forgetToLocallyRingedSpace

full_name: AlgebraicGeometry.instPreservesColimitsOfShapeSchemeTopCatDiscreteForgetToTop
code: noncomputable
instance : PreservesColimitsOfShape (Discrete ι) Scheme.forgetToTop 
goal: CategoryTheory.Limits.PreservesColimitsOfShape (CategoryTheory.Discrete ι) AlgebraicGeometry.Scheme.forgetToTop

full_name: AlgebraicGeometry.instHasCoproductsScheme
code: instance : HasCoproducts.{u} Scheme.{u} 
goal: CategoryTheory.Limits.HasCoproducts AlgebraicGeometry.Scheme

full_name: AlgebraicGeometry.instHasCoproductsScheme_1
code: instance : HasCoproducts.{0} Scheme.{u} 
goal: CategoryTheory.Limits.HasCoproducts AlgebraicGeometry.Scheme

full_name: AlgebraicGeometry.instPreservesColimitsOfShapeSchemeTopCatDiscreteForgetToTop_1
code: noncomputable
instance {ι : Type} : PreservesColimitsOfShape (Discrete ι) Scheme.forgetToTop 
goal: CategoryTheory.Limits.PreservesColimitsOfShape (CategoryTheory.Discrete ι) AlgebraicGeometry.Scheme.forgetToTop

full_name: AlgebraicGeometry.instPreservesColimitsOfShapeSchemeLocallyRingedSpaceDiscreteForgetToLocallyRingedSpace
code: noncomputable
instance {ι : Type} : PreservesColimitsOfShape (Discrete ι) Scheme.forgetToLocallyRingedSpace 
goal: CategoryTheory.Limits.PreservesColimitsOfShape (CategoryTheory.Discrete ι)
  AlgebraicGeometry.Scheme.forgetToLocallyRingedSpace

full_name: AlgebraicGeometry.sigmaIsoGlued
code: /-- (Implementation Detail) Coproduct of schemes is isomorphic to the disjoint union. -/
noncomputable
def sigmaIsoGlued : ∐ f ≅ (disjointGlueData f).glued 
goal: ∐ f ≅ (AlgebraicGeometry.disjointGlueData f).glued

full_name: AlgebraicGeometry.ι_sigmaIsoGlued_inv
code: @[reassoc (attr := simp)]
lemma ι_sigmaIsoGlued_inv (i) : (disjointGlueData f).ι i ≫ (sigmaIsoGlued f).inv = Sigma.ι f i 
goal: (AlgebraicGeometry.disjointGlueData f).ι i ≫ (AlgebraicGeometry.sigmaIsoGlued f).inv = CategoryTheory.Limits.Sigma.ι f i

full_name: AlgebraicGeometry.ι_sigmaIsoGlued_hom
code: @[reassoc (attr := simp)]
lemma ι_sigmaIsoGlued_hom (i) :
    Sigma.ι f i ≫ (sigmaIsoGlued f).hom = (disjointGlueData f).ι i 
goal: CategoryTheory.Limits.Sigma.ι f i ≫ (AlgebraicGeometry.sigmaIsoGlued f).hom = (AlgebraicGeometry.disjointGlueData f).ι i

full_name: AlgebraicGeometry.instIsOpenImmersionιScheme
code: instance (i) : IsOpenImmersion (Sigma.ι f i) 
goal: AlgebraicGeometry.IsOpenImmersion (CategoryTheory.Limits.Sigma.ι f i)

full_name: AlgebraicGeometry.sigmaι_eq_iff
code: lemma sigmaι_eq_iff (i j : ι) (x y) :
    (Sigma.ι f i).1.base x = (Sigma.ι f j).1.base y ↔
      (Sigma.mk i x : Σ i, f i) = Sigma.mk j y 
goal: (CategoryTheory.Limits.Sigma.ι f i).val.base x = (CategoryTheory.Limits.Sigma.ι f j).val.base y ↔ ⟨i, x⟩ = ⟨j, y⟩

full_name: AlgebraicGeometry.disjoint_opensRange_sigmaι
code: /-- The images of each component in the coproduct is disjoint. -/
lemma disjoint_opensRange_sigmaι (i j : ι) (h : i ≠ j) :
    Disjoint (Sigma.ι f i).opensRange (Sigma.ι f j).opensRange 
goal: Disjoint (AlgebraicGeometry.Scheme.Hom.opensRange (CategoryTheory.Limits.Sigma.ι f i))
  (AlgebraicGeometry.Scheme.Hom.opensRange (CategoryTheory.Limits.Sigma.ι f j))

full_name: AlgebraicGeometry.exists_sigmaι_eq
code: lemma exists_sigmaι_eq (x : (∐ f : _)) : ∃ i y, (Sigma.ι f i).1.base y = x 
goal: ∃ i y, (CategoryTheory.Limits.Sigma.ι f i).val.base y = x

full_name: AlgebraicGeometry.iSup_opensRange_sigmaι
code: lemma iSup_opensRange_sigmaι : ⨆ i, (Sigma.ι f i).opensRange = ⊤ 
goal: ⨆ i, AlgebraicGeometry.Scheme.Hom.opensRange (CategoryTheory.Limits.Sigma.ι f i) = ⊤

full_name: AlgebraicGeometry.sigmaOpenCover
code: /-- The open cover of the coproduct. -/
@[simps obj map]
noncomputable
def sigmaOpenCover : (∐ f).OpenCover 
goal: (∐ f).OpenCover

full_name: AlgebraicGeometry.sigmaOpenCover_map
code: /-- The open cover of the coproduct. -/
@[simps obj map]
noncomputable
def sigmaOpenCover : (∐ f).OpenCover 
goal: (AlgebraicGeometry.sigmaOpenCover f).map b = CategoryTheory.Limits.Sigma.ι f b

full_name: AlgebraicGeometry.sigmaOpenCover_obj
code: /-- The open cover of the coproduct. -/
@[simps obj map]
noncomputable
def sigmaOpenCover : (∐ f).OpenCover 
goal: ∀ (a : ι), (AlgebraicGeometry.sigmaOpenCover f).obj a = f a

full_name: AlgebraicGeometry.sigmaMk
code: /-- The underlying topological space of the coproduct is homeomorphic to the disjoint union. -/
noncomputable
def sigmaMk : (Σ i, f i) ≃ₜ (∐ f : _) 
goal: (i : ι) × ↑↑(f i).toPresheafedSpace ≃ₜ ↑↑(∐ f).toPresheafedSpace

full_name: AlgebraicGeometry.sigmaMk_mk
code: @[simp]
lemma sigmaMk_mk (i) (x : f i) :
    sigmaMk f (.mk i x) = (Sigma.ι f i).1.base x 
goal: (AlgebraicGeometry.sigmaMk f) ⟨i, x⟩ = (CategoryTheory.Limits.Sigma.ι f i).val.base x