The structure sheaf on prime_spectrum R
.
We define the structure sheaf on Top.of (prime_spectrum R)
, for a commutative ring R
.
We define this as a subsheaf of the sheaf of dependent functions into the localizations,
cut out by the condition that the function must be locally equal to a ratio of elements of R
.
Because the condition "is equal to a fraction" passes to smaller open subsets, the subset of functions satisfying this condition is automatically a subpresheaf. Because the condition "is locally equal to a fraction" is local, it is also a subsheaf.
(It may be helpful to refer back to topology.sheaves.sheaf_of_functions
,
where we show that dependent functions into any type family form a sheaf,
and also topology.sheaves.local_predicate
, where we characterise the predicates
which pick out sub-presheaves and sub-sheaves of these sheaves.)
We also set up the ring structure, obtaining
structure_sheaf R : sheaf CommRing (Top.of (prime_spectrum R))
.
$Spec R$, just as a topological space.
Equations
The type family over prime_spectrum R
consisting of the localization over each point.
Equations
The predicate saying that a dependent function on an open U
is realised as a fixed fraction
r / s
in each of the stalks (which are localizations at various prime ideals).
Equations
- algebraic_geometry.structure_sheaf.is_fraction f = ∃ (r s : R), ∀ (x : ↥U), s ∉ prime_spectrum.as_ideal x.val ∧ (f x) * ⇑((localization.of (prime_spectrum.as_ideal ↑x).prime_compl).to_map) s = ⇑((localization.of (prime_spectrum.as_ideal ↑x).prime_compl).to_map) r
The predicate is_fraction
is "prelocal",
in the sense that if it holds on U
it holds on any open subset V
of U
.
Equations
- algebraic_geometry.structure_sheaf.is_fraction_prelocal R = {pred := λ (U : topological_space.opens ↥(algebraic_geometry.Spec.Top R)) (f : Π (x : ↥U), algebraic_geometry.structure_sheaf.localizations R ↑x), algebraic_geometry.structure_sheaf.is_fraction f, res := _}
We will define the structure sheaf as
the subsheaf of all dependent functions in Π x : U, localizations R x
consisting of those functions which can locally be expressed as a ratio of
(the images in the localization of) elements of R
.
Quoting Hartshorne:
For an open set $$U ⊆ Spec A$$, we define $$𝒪(U)$$ to be the set of functions $$s : U → ⨆_{𝔭 ∈ U} A_𝔭$$, such that $s(𝔭) ∈ A_𝔭$$ for each $$𝔭$$, and such that $$s$$ is locally a quotient of elements of $$A$$: to be precise, we require that for each $$𝔭 ∈ U$$, there is a neighborhood $$V$$ of $$𝔭$$, contained in $$U$$, and elements $$a, f ∈ A$$, such that for each $$𝔮 ∈ V, f ∉ 𝔮$$, and $$s(𝔮) = a/f$$ in $$A_𝔮$$.
Now Hartshorne had the disadvantage of not knowing about dependent functions,
so we replace his circumlocution about functions into a disjoint union with
Π x : U, localizations x
.
The functions satisfying is_locally_fraction
form a subring.
Equations
- algebraic_geometry.structure_sheaf.sections_subring R U = {carrier := {f : Π (x : ↥(opposite.unop U)), algebraic_geometry.structure_sheaf.localizations R ↑x | (algebraic_geometry.structure_sheaf.is_locally_fraction R).to_prelocal_predicate.pred f}, one_mem' := _, mul_mem' := _, zero_mem' := _, add_mem' := _, neg_mem' := _}
The structure sheaf (valued in Type
, not yet CommRing
) is the subsheaf consisting of
functions satisfying is_locally_fraction
.
The stalk_to_fiber
map for the structure sheaf is surjective.
(In fact, an isomorphism, as constructed below in stalk_iso_Type
.)
The stalk_to_fiber
map for the structure sheaf is injective.
(In fact, an isomorphism, as constructed below in stalk_iso_Type
.)
The proof here follows the argument in Hartshorne's Algebraic Geometry, Proposition II.2.2.
The structure presheaf, valued in CommRing
, constructed by dressing up the Type
valued
structure presheaf.
Equations
- algebraic_geometry.structure_presheaf_in_CommRing R = {obj := λ (U : (topological_space.opens ↥(algebraic_geometry.Spec.Top R))ᵒᵖ), CommRing.of ((algebraic_geometry.structure_sheaf_in_Type R).presheaf.obj U), map := λ (U V : (topological_space.opens ↥(algebraic_geometry.Spec.Top R))ᵒᵖ) (i : U ⟶ V), {to_fun := (algebraic_geometry.structure_sheaf_in_Type R).presheaf.map i, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}, map_id' := _, map_comp' := _}
Some glue, verifying that that structure presheaf valued in CommRing
agrees
with the Type
valued structure presheaf.
The structure sheaf on $Spec R$, valued in CommRing
.
This is provided as a bundled SheafedSpace
as Spec.SheafedSpace R
later.
Equations
- algebraic_geometry.structure_sheaf R = {presheaf := algebraic_geometry.structure_presheaf_in_CommRing R _inst_1, sheaf_condition := ⇑((Top.presheaf.sheaf_condition_equiv_sheaf_condition_comp (category_theory.forget CommRing) (algebraic_geometry.structure_presheaf_in_CommRing R)).symm) (⇑(Top.presheaf.sheaf_condition_equiv_of_iso (algebraic_geometry.structure_presheaf_comp_forget R).symm) (algebraic_geometry.structure_sheaf_in_Type R).sheaf_condition)}
The stalk at x
is equivalent (just as a type) to the localization at x
.
The section of structure_sheaf R
on an open U
sending each x ∈ U
to the element
f/g
in the localization of R
at x
.
Equations
- algebraic_geometry.const R f g U hu = ⟨λ (x : ↥(opposite.unop (opposite.op U))), (localization.of (prime_spectrum.as_ideal ↑x).prime_compl).mk' f ⟨g, _⟩, _⟩
The canonical ring homomorphism interpreting an element of R
as
a section of the structure sheaf.
Equations
- algebraic_geometry.to_open R U = {to_fun := λ (f : ↥(CommRing.of R)), ⟨λ (x : ↥(opposite.unop (opposite.op U))), ⇑((localization.of (prime_spectrum.as_ideal ↑x).prime_compl).to_map) f, _⟩, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}
The canonical ring homomorphism interpreting an element of R
as an element of
the stalk of structure_sheaf R
at x
.
Equations
The canonical ring homomorphism interpreting s ∈ R_f
as a section of the structure sheaf
on the basic open defined by f ∈ R
.
Equations
The canonical ring homomorphism from the localization of R
at p
to the stalk
of the structure sheaf at the point p
.
Equations
The ring homomorphism that takes a section of the structure sheaf of R
on the open set U
,
implemented as a subtype of dependent functions to localizations at prime ideals, and evaluates
the section on the point corresponding to a given prime ideal.
Equations
- algebraic_geometry.open_to_localization R U x hx = {to_fun := λ (s : ↥((algebraic_geometry.structure_sheaf R).presheaf.obj (opposite.op U))), s.val ⟨x, hx⟩, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}
The ring homomorphism from the stalk of the structure sheaf of R
at a point corresponding to
a prime ideal p
to the localization of R
at p
,
formed by gluing the open_to_localization
maps.
Equations
- algebraic_geometry.stalk_to_fiber_ring_hom R x = category_theory.limits.colimit.desc ((topological_space.open_nhds.inclusion x).op ⋙ (algebraic_geometry.structure_sheaf R).presheaf) {X := {α := localization.at_prime (prime_spectrum.as_ideal x) _, str := localization.comm_ring (prime_spectrum.as_ideal x).prime_compl}, ι := {app := λ (U : (topological_space.open_nhds x)ᵒᵖ), algebraic_geometry.open_to_localization R ((topological_space.open_nhds.inclusion x).obj (opposite.unop U)) x _, naturality' := _}}
The ring isomorphism between the stalk of the structure sheaf of R
at a point p
corresponding to a prime ideal in R
and the localization of R
at p
.
Equations
- algebraic_geometry.stalk_iso R x = {hom := algebraic_geometry.stalk_to_fiber_ring_hom R x, inv := algebraic_geometry.localization_to_stalk R x, hom_inv_id' := _, inv_hom_id' := _}