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' := _}