# Adjunction between Γ and Spec#

We define the adjunction ΓSpec.adjunction : Γ ⊣ Spec by defining the unit (toΓSpec, in multiple steps in this file) and counit (done in Spec.lean) and checking that they satisfy the left and right triangle identities. The constructions and proofs make use of maps and lemmas defined and proved in structure_sheaf.lean extensively.

Notice that since the adjunction is between contravariant functors, you get to choose one of the two categories to have arrows reversed, and it is equally valid to present the adjunction as Spec ⊣ Γ (Spec.to_LocallyRingedSpace.right_op ⊣ Γ), in which case the unit and the counit would switch to each other.

## Main definition #

• AlgebraicGeometry.identityToΓSpec : The natural transformation 𝟭 _ ⟶ Γ ⋙ Spec.
• AlgebraicGeometry.ΓSpec.locallyRingedSpaceAdjunction : The adjunction Γ ⊣ Spec from CommRingᵒᵖ to LocallyRingedSpace.
• AlgebraicGeometry.ΓSpec.adjunction : The adjunction Γ ⊣ Spec from CommRingᵒᵖ to Scheme.
def AlgebraicGeometry.LocallyRingedSpace.ΓToStalk (x : X.toTopCat) :
{ unop := X } X.presheaf.stalk x

The map from the global sections to a stalk.

Equations
• X.ΓToStalk x = X.presheaf.germ x, trivial
Instances For
def AlgebraicGeometry.LocallyRingedSpace.toΓSpecFun :
X.toTopCatPrimeSpectrum ( { unop := X })

The canonical map from the underlying set to the prime spectrum of Γ(X).

Equations
Instances For
theorem AlgebraicGeometry.LocallyRingedSpace.not_mem_prime_iff_unit_in_stalk (r : ( { unop := X })) (x : X.toTopCat) :
r(X.toΓSpecFun x).asIdeal IsUnit ((X.ΓToStalk x) r)
theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpec_preim_basicOpen_eq (r : ( { unop := X })) :
X.toΓSpecFun ⁻¹' .carrier = (X.toRingedSpace.basicOpen r).carrier

The preimage of a basic open in Spec Γ(X) under the unit is the basic open in X defined by the same element (they are equal as sets).

toΓSpecFun is continuous.

@[simp]
theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpecBase_apply :
∀ (a : X.toTopCat), X.toΓSpecBase a = X.toΓSpecFun a

The canonical (bundled) continuous map from the underlying topological space of X to the prime spectrum of its global sections.

Equations
• X.toΓSpecBase = { toFun := X.toΓSpecFun, continuous_toFun := }
Instances For
@[reducible, inline]

The preimage in X of a basic open in Spec Γ(X) (as an open set).

Equations
Instances For
theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpecMapBasicOpen_eq (r : ( { unop := X })) :
X.toΓSpecMapBasicOpen r = X.toRingedSpace.basicOpen r

The preimage is the basic open in X defined by the same element r.

@[reducible, inline]
abbrev AlgebraicGeometry.LocallyRingedSpace.toToΓSpecMapBasicOpen (r : ( { unop := X })) :
X.presheaf.obj { unop := } X.presheaf.obj { unop := X.toΓSpecMapBasicOpen r }

The map from the global sections Γ(X) to the sections on the (preimage of) a basic open.

Equations
• X.toToΓSpecMapBasicOpen r = X.presheaf.map (X.toΓSpecMapBasicOpen r).leTop.op
Instances For
theorem AlgebraicGeometry.LocallyRingedSpace.isUnit_res_toΓSpecMapBasicOpen (r : ( { unop := X })) :
IsUnit ((X.toToΓSpecMapBasicOpen r) r)

r is a unit as a section on the basic open defined by r.

def AlgebraicGeometry.LocallyRingedSpace.toΓSpecCApp (r : ( { unop := X })) :
(AlgebraicGeometry.Spec.structureSheaf ( { unop := X })).val.obj { unop := } X.presheaf.obj { unop := X.toΓSpecMapBasicOpen r }

Define the sheaf hom on individual basic opens for the unit.

Equations
• X.toΓSpecCApp r =
Instances For
theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpecCApp_iff (r : ( { unop := X })) (f : (AlgebraicGeometry.Spec.structureSheaf ( { unop := X })).val.obj { unop := } X.presheaf.obj { unop := X.toΓSpecMapBasicOpen r }) :
CategoryTheory.CategoryStruct.comp (AlgebraicGeometry.StructureSheaf.toOpen (( { unop := X })) ) f = X.toToΓSpecMapBasicOpen r f = X.toΓSpecCApp r

Characterization of the sheaf hom on basic opens, direction ← (next lemma) is used at various places, but → is not used in this file.

theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpecCApp_spec (r : ( { unop := X })) :
CategoryTheory.CategoryStruct.comp (AlgebraicGeometry.StructureSheaf.toOpen (( { unop := X })) ) (X.toΓSpecCApp r) = X.toToΓSpecMapBasicOpen r
@[simp]
theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpecCBasicOpens_app (r : (CategoryTheory.InducedCategory (TopologicalSpace.Opens (PrimeSpectrum ( { unop := X }))) PrimeSpectrum.basicOpen)ᵒᵖ) :
X.toΓSpecCBasicOpens.app r = X.toΓSpecCApp r.unop
def AlgebraicGeometry.LocallyRingedSpace.toΓSpecCBasicOpens :
(CategoryTheory.inducedFunctor PrimeSpectrum.basicOpen).op.comp (AlgebraicGeometry.Spec.structureSheaf ( { unop := X })).val (CategoryTheory.inducedFunctor PrimeSpectrum.basicOpen).op.comp ((TopCat.Sheaf.pushforward CommRingCat X.toΓSpecBase).obj X.𝒪).val

The sheaf hom on all basic opens, commuting with restrictions.

Equations
• One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpecSheafedSpace_c :
X.toΓSpecSheafedSpace.c = (TopCat.Sheaf.restrictHomEquivHom (AlgebraicGeometry.Spec.structureSheaf ( { unop := X })).val ((TopCat.Sheaf.pushforward CommRingCat X.toΓSpecBase).obj X.𝒪) ) X.toΓSpecCBasicOpens
@[simp]
theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpecSheafedSpace_base :
X.toΓSpecSheafedSpace.base = X.toΓSpecBase
def AlgebraicGeometry.LocallyRingedSpace.toΓSpecSheafedSpace :
X.toSheafedSpace { unop := { unop := X } }

The canonical morphism of sheafed spaces from X to the spectrum of its global sections.

Equations
• One or more equations did not get rendered due to their size.
Instances For
theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpecSheafedSpace_app_eq (r : ( { unop := X })) :
X.toΓSpecSheafedSpace.c.app { unop := } = X.toΓSpecCApp r
theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpecSheafedSpace_app_spec_assoc (r : ( { unop := X })) {Z : CommRingCat} (h : (X.toΓSpecSheafedSpace.base _* X.presheaf).obj { unop := } Z) :
CategoryTheory.CategoryStruct.comp (AlgebraicGeometry.StructureSheaf.toOpen (( { unop := X })) ) (CategoryTheory.CategoryStruct.comp (X.toΓSpecSheafedSpace.c.app { unop := }) h) = CategoryTheory.CategoryStruct.comp (X.toToΓSpecMapBasicOpen r) h
theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpecSheafedSpace_app_spec (r : ( { unop := X })) :
CategoryTheory.CategoryStruct.comp (AlgebraicGeometry.StructureSheaf.toOpen (( { unop := X })) ) (X.toΓSpecSheafedSpace.c.app { unop := }) = X.toToΓSpecMapBasicOpen r
theorem AlgebraicGeometry.LocallyRingedSpace.toStalk_stalkMap_toΓSpec (x : X.toTopCat) :
CategoryTheory.CategoryStruct.comp (AlgebraicGeometry.StructureSheaf.toStalk ({ unop := { unop := X } }.unop) (X.toΓSpecSheafedSpace.base x)) (AlgebraicGeometry.PresheafedSpace.stalkMap X.toΓSpecSheafedSpace x) = X.ΓToStalk x

The map on stalks induced by the unit commutes with maps from Γ(X) to stalks (in Spec Γ(X) and in X).

@[simp]
theorem AlgebraicGeometry.LocallyRingedSpace.toΓSpec_val_base :
X.toΓSpec.val.base = X.toΓSpecBase

The canonical morphism from X to the spectrum of its global sections.

Equations
• X.toΓSpec = { val := X.toΓSpecSheafedSpace, prop := }
Instances For
theorem AlgebraicGeometry.LocallyRingedSpace.comp_ring_hom_ext {R : CommRingCat} {f : R { unop := X }} (w : CategoryTheory.CategoryStruct.comp X.toΓSpec.val.base .base = β.val.base) (h : ∀ (r : R), CategoryTheory.CategoryStruct.comp f (X.presheaf.map .op) = CategoryTheory.CategoryStruct.comp (β.val.c.app { unop := })) :

toSpecΓ _ is an isomorphism so these are mutually two-sided inverses.

The unit as a natural transformation.

Equations
Instances For
theorem AlgebraicGeometry.ΓSpec.left_triangle :
CategoryTheory.CategoryStruct.comp (.app ( { unop := X })) (.val.c.app { unop := }) = CategoryTheory.CategoryStruct.id ( ( { unop := X }))

SpecΓIdentity is iso so these are mutually two-sided inverses.

The adjunction Γ ⊣ Spec from CommRingᵒᵖ to LocallyRingedSpace.

Equations
• One or more equations did not get rendered due to their size.
Instances For

The adjunction Γ ⊣ Spec from CommRingᵒᵖ to Scheme.

Equations
• One or more equations did not get rendered due to their size.
Instances For
theorem AlgebraicGeometry.ΓSpec.adjunction_homEquiv_apply {R : } (f : { unop := { unop := X } } R) :
(AlgebraicGeometry.ΓSpec.adjunction.homEquiv X R) f = ( X.toLocallyRingedSpace R) f
theorem AlgebraicGeometry.ΓSpec.adjunction_homEquiv_symm_apply {R : } (f : ) :
(AlgebraicGeometry.ΓSpec.adjunction.homEquiv X R).symm f = ( X.toLocallyRingedSpace R).symm f
@[simp]
.app X = X.toLocallyRingedSpace
(.app X).val.c.app { unop := } = .app (X.presheaf.obj { unop := })
theorem AlgebraicGeometry.SpecΓIdentity_naturality_assoc {R : CommRingCat} {S : CommRingCat} (f : R S) {Z : CommRingCat} (h : S Z) :
CategoryTheory.CategoryStruct.comp (( f.op).val.c.app { unop := }) () =
theorem AlgebraicGeometry.SpecΓIdentity_naturality {R : CommRingCat} {S : CommRingCat} (f : R S) :
CategoryTheory.CategoryStruct.comp (( f.op).val.c.app { unop := }) (.app S) =
theorem AlgebraicGeometry.SpecΓIdentity_hom_app_presheaf_obj (U : TopologicalSpace.Opens X.toPresheafedSpace) :
.app (X.presheaf.obj { unop := U }) = CategoryTheory.CategoryStruct.comp ( ( (X.presheaf.map .op).op).op) (CategoryTheory.CategoryStruct.comp ((.app (X ∣_ᵤ U)).val.c.app { unop := }) (X.presheaf.map .op))