Documentation

TauCeti.CategoryTheory.Sites.TopologicalBasis

The coverage a topological basis induces on Opens X #

A basis B of open sets induces a coverage on Opens X: a presieve covers U when all of its members lie in B and they cover U pointwise. basisCoverage_toGrothendieck identifies the Grothendieck topology it generates as Opens.grothendieckTopology X, the one the topology of X already defines, and isSheaf_iff_isSheafFor_basisCoverage reads off the consequence: a presheaf is a sheaf exactly when it satisfies the sheaf condition for covers by basis elements alone.

Mathlib names this construction as an open project in the module docstring of Mathlib/CategoryTheory/Sites/Coverage.lean:

A more concrete example: If ℬ is a basis for a topology on a type X (in the sense of TopologicalSpace.IsTopologicalBasis) then it naturally induces a coverage on Opens X whose associated Grothendieck topology is the one induced by the topology on X generated by ℬ. (Project: Formalize this!)

Main definitions #

Main results #

Why a coverage and not a pretopology #

A pretopology asks its covering families to be stable under pullback on the nose, and basis covers are not: intersecting two basis elements need not give a basis element. A coverage asks only that some covering family of the smaller object factors through the given one, which a basis supplies by shrinking each intersection to a basis neighbourhood of each of its points. That is exactly the weakening CategoryTheory.Coverage exists for.

The presieves of a basis cover: every member lies in B, and together they cover U pointwise.

Equations
Instances For
    theorem TauCeti.TopologicalSpace.Opens.isBasisCover_iff {X : Type u} [TopologicalSpace X] {B : Set (TopologicalSpace.Opens X)} {U : TopologicalSpace.Opens X} {R : CategoryTheory.Presieve U} :
    IsBasisCover B R ↔ (∀ ⦃V : TopologicalSpace.Opens X⦄ ⦃f : V ⟶ U⦄, R f → V ∈ B) ∧ ∀ x ∈ U, ∃ (V : TopologicalSpace.Opens X) (f : V ⟶ U), R f ∧ x ∈ V

    The two clauses of a basis cover. IsBasisCover is a definition and its body is not exposed, so this is how a consumer outside this module builds one or takes it apart.

    Every member of a basis cover lies in the basis.

    A basis cover covers its object pointwise.

    The coverage a basis induces on Opens X. Its covering presieves are the basis covers.

    The pullback condition is where the basis property is used: the intersection of a basis element with a smaller open need not be a basis element, so the covering family of the smaller open is obtained by shrinking to a basis neighbourhood inside each intersection.

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

      Membership in the basis coverage is being a basis cover; this is the normal form.

      The basis coverage generates the topology of the space. Every basis cover is a cover in Opens.grothendieckTopology X, and conversely every covering sieve contains the basis cover made of the basis elements it already contains.

      The basis sheaf criterion. A presheaf on X is a sheaf exactly when it satisfies the sheaf condition for covers by basis elements. This is the criterion the structure presheaf of an adic space is checked against, where the basis is the rational subsets.

      The basis sheaf criterion in an arbitrary target category. Presheaf.IsSheaf is by definition the Type-valued condition on P ⋙ coyoneda.obj (op E) for every object E, so the criterion transfers objectwise.

      This is the form the structure presheaf of an adic space is checked in: TopCat.Presheaf.IsSheaf F unfolds to Presheaf.IsSheaf (Opens.grothendieckTopology X) F, and its target category is CompleteSeparatedTopCommRingCat.

      The inclusion of a basis B, given as a set of opens, into Opens X is cover-dense for the Grothendieck topology of X: every open is covered by the members of B it contains. This is Mathlib's TopCat.Opens.coverDense_inducedFunctor for a Set-indexed basis.