Documentation

Mathlib.Topology.Sheaves.SheafCondition.PairwiseIntersections

Equivalent formulations of the sheaf condition #

We give an equivalent formulation of the sheaf condition.

Given any indexed type ι, we define overlap ι, a category with objects corresponding to

Any open cover U : ι → opens X provides a functor diagram U : overlap ι ⥤ (opens X)ᵒᵖ.

There is a canonical cone over this functor, cone U, whose cone point is supr U, and in fact this is a limit cone.

A presheaf F : presheaf C X is a sheaf precisely if it preserves this limit. We express this in two equivalent ways, as

We show that this sheaf condition is equivalent to the opens_le_cover sheaf condition, and thereby also equivalent to the default sheaf condition.

An alternative formulation of the sheaf condition (which we prove equivalent to the usual one below as is_sheaf_iff_is_sheaf_pairwise_intersections).

A presheaf is a sheaf if F sends the cone (pairwise.cocone U).op to a limit cone. (Recall Pairwise.cocone U has cone point supr U, mapping down to the U i and the U i ⊓ U j.)

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

    An alternative formulation of the sheaf condition (which we prove equivalent to the usual one below as is_sheaf_iff_is_sheaf_preserves_limit_pairwise_intersections).

    A presheaf is a sheaf if F preserves the limit of Pairwise.diagram U. (Recall Pairwise.diagram U is the diagram consisting of the pairwise intersections U i ⊓ U j mapping into the open sets U i. This diagram has limit supr U.)

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

      Implementation detail: the object level of pairwise_to_opens_le_cover : pairwise ι ⥤ opens_le_cover U

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

        Implementation detail: the morphism level of pairwise_to_opens_le_cover : pairwise ι ⥤ opens_le_cover U

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

          The category of single and double intersections of the U i maps into the category of open sets below some U i.

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

            The diagram in opens X indexed by pairwise intersections from U is isomorphic (in fact, equal) to the diagram factored through opens_le_cover U.

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

              The sheaf condition in terms of a limit diagram over all { V : opens X // ∃ i, V ≤ U i } is equivalent to the reformulation in terms of a limit diagram over U i and U i ⊓ U j.

              The sheaf condition in terms of an equalizer diagram is equivalent to the reformulation in terms of a limit diagram over U i and U i ⊓ U j.

              The sheaf condition in terms of an equalizer diagram is equivalent to the reformulation in terms of the presheaf preserving the limit of the diagram consisting of the U i and U i ⊓ U j.

              def TopCat.Sheaf.interUnionPullbackCone {C : Type u} [CategoryTheory.Category.{v, u} C] {X : TopCat} (F : TopCat.Sheaf C X) (U : TopologicalSpace.Opens X) (V : TopologicalSpace.Opens X) :
              CategoryTheory.Limits.PullbackCone (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U V U)).op) (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U V V)).op)

              For a sheaf F, F(U ⊔ V) is the pullback of F(U) ⟶ F(U ⊓ V) and F(V) ⟶ F(U ⊓ V). This is the pullback cone.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def TopCat.Sheaf.interUnionPullbackConeLift {C : Type u} [CategoryTheory.Category.{v, u} C] {X : TopCat} (F : TopCat.Sheaf C X) (U : TopologicalSpace.Opens X) (V : TopologicalSpace.Opens X) (s : CategoryTheory.Limits.PullbackCone (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U V U)).op) (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U V V)).op)) :
                s.pt F.val.toPrefunctor.obj (Opposite.op (U V))

                (Implementation). Every cone over F(U) ⟶ F(U ⊓ V) and F(V) ⟶ F(U ⊓ V) factors through F(U ⊔ V).

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

                  For a sheaf F, F(U ⊔ V) is the pullback of F(U) ⟶ F(U ⊓ V) and F(V) ⟶ F(U ⊓ V).

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

                    If U, V are disjoint, then F(U ⊔ V) = F(U) × F(V).

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      def TopCat.Sheaf.objSupIsoProdEqLocus {X : TopCat} (F : TopCat.Sheaf CommRingCat X) (U : TopologicalSpace.Opens X) (V : TopologicalSpace.Opens X) :
                      F.val.toPrefunctor.obj (Opposite.op (U V)) CommRingCat.of (RingHom.eqLocus (RingHom.comp (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U V U)).op) (RingHom.fst (F.val.toPrefunctor.obj (Opposite.op U)) (F.val.toPrefunctor.obj (Opposite.op V)))) (RingHom.comp (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U V V)).op) (RingHom.snd (F.val.toPrefunctor.obj (Opposite.op U)) (F.val.toPrefunctor.obj (Opposite.op V)))))

                      F(U ⊔ V) is isomorphic to the eq_locus of the two maps F(U) × F(V) ⟶ F(U ⊓ V).

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        theorem TopCat.Sheaf.objSupIsoProdEqLocus_hom_fst {X : TopCat} (F : TopCat.Sheaf CommRingCat X) (U : TopologicalSpace.Opens X) (V : TopologicalSpace.Opens X) (x : (F.val.toPrefunctor.obj (Opposite.op (U V)))) :
                        (((TopCat.Sheaf.objSupIsoProdEqLocus F U V).hom x)).1 = (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U U V)).op) x
                        theorem TopCat.Sheaf.objSupIsoProdEqLocus_hom_snd {X : TopCat} (F : TopCat.Sheaf CommRingCat X) (U : TopologicalSpace.Opens X) (V : TopologicalSpace.Opens X) (x : (F.val.toPrefunctor.obj (Opposite.op (U V)))) :
                        (((TopCat.Sheaf.objSupIsoProdEqLocus F U V).hom x)).2 = (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : V U V)).op) x
                        theorem TopCat.Sheaf.objSupIsoProdEqLocus_inv_fst {X : TopCat} (F : TopCat.Sheaf CommRingCat X) (U : TopologicalSpace.Opens X) (V : TopologicalSpace.Opens X) (x : (RingHom.eqLocus (RingHom.comp (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U V U)).op) (RingHom.fst (F.val.toPrefunctor.obj (Opposite.op U)) (F.val.toPrefunctor.obj (Opposite.op V)))) (RingHom.comp (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U V V)).op) (RingHom.snd (F.val.toPrefunctor.obj (Opposite.op U)) (F.val.toPrefunctor.obj (Opposite.op V)))))) :
                        (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U U V)).op) ((TopCat.Sheaf.objSupIsoProdEqLocus F U V).inv x) = (x).1
                        theorem TopCat.Sheaf.objSupIsoProdEqLocus_inv_snd {X : TopCat} (F : TopCat.Sheaf CommRingCat X) (U : TopologicalSpace.Opens X) (V : TopologicalSpace.Opens X) (x : (RingHom.eqLocus (RingHom.comp (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U V U)).op) (RingHom.fst (F.val.toPrefunctor.obj (Opposite.op U)) (F.val.toPrefunctor.obj (Opposite.op V)))) (RingHom.comp (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : U V V)).op) (RingHom.snd (F.val.toPrefunctor.obj (Opposite.op U)) (F.val.toPrefunctor.obj (Opposite.op V)))))) :
                        (F.val.toPrefunctor.map (CategoryTheory.homOfLE (_ : V U V)).op) ((TopCat.Sheaf.objSupIsoProdEqLocus F U V).inv x) = (x).2