Documentation

Mathlib.CategoryTheory.Sites.EqualizerSheafCondition

The equalizer diagram sheaf condition for a presieve #

In Mathlib/CategoryTheory/Sites/IsSheafFor.lean it is defined what it means for a presheaf to be a sheaf for a particular presieve. In this file we provide equivalent conditions in terms of equalizer diagrams.

References #

def CategoryTheory.Equalizer.FirstObj {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (R : Presieve X) :
Type (max v u)

The middle object of the fork diagram given in Equation (3) of [MLM92], as well as the fork diagram of https://stacks.math.columbia.edu/tag/00VM.

Equations
Instances For
    theorem CategoryTheory.Equalizer.FirstObj.ext {C : Type u} [Category.{v, u} C] {P : Functor Cᵒᵖ (Type (max v u))} {X : C} {R : Presieve X} (z₁ z₂ : FirstObj P R) (h : ∀ (Y : C) (f : Y X) (hf : R f), Limits.Pi.π (fun (f : (Y : C) × { f : Y X // R f }) => P.obj (Opposite.op f.fst)) Y, f, hf z₁ = Limits.Pi.π (fun (f : (Y : C) × { f : Y X // R f }) => P.obj (Opposite.op f.fst)) Y, f, hf z₂) :
    z₁ = z₂

    Show that FirstObj is isomorphic to FamilyOfElements.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem CategoryTheory.Equalizer.firstObjEqFamily_hom {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (R : Presieve X) (t : FirstObj P R) (x✝ : C) (x✝¹ : x✝ X) (hf : R x✝¹) :
      (firstObjEqFamily P R).hom t x✝¹ hf = Limits.Pi.π (fun (f : (Y : C) × { f : Y X // R f }) => P.obj (Opposite.op f.fst)) x✝, x✝¹, hf t
      @[simp]
      theorem CategoryTheory.Equalizer.firstObjEqFamily_inv {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (R : Presieve X) (a✝ : Presieve.FamilyOfElements P R) :
      (firstObjEqFamily P R).inv a✝ = Limits.Pi.lift (fun (f : (Y : C) × { f : Y X // R f }) (x : Presieve.FamilyOfElements P R) => x f.snd ) a✝
      def CategoryTheory.Equalizer.forkMap {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (R : Presieve X) :
      P.obj (Opposite.op X) FirstObj P R

      The left morphism of the fork diagram given in Equation (3) of [MLM92], as well as the fork diagram of https://stacks.math.columbia.edu/tag/00VM.

      Equations
      Instances For

        This section establishes the equivalence between the sheaf condition of Equation (3) [MLM92] and the definition of IsSheafFor.

        def CategoryTheory.Equalizer.Sieve.SecondObj {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (S : Sieve X) :
        Type (max v u)

        The rightmost object of the fork diagram of Equation (3) [MLM92], which contains the data used to check a family is compatible.

        Equations
        Instances For
          theorem CategoryTheory.Equalizer.Sieve.SecondObj.ext {C : Type u} [Category.{v, u} C] {P : Functor Cᵒᵖ (Type (max v u))} {X : C} {S : Sieve X} (z₁ z₂ : SecondObj P S) (h : ∀ (Y Z : C) (g : Z Y) (f : Y X) (hf : S.arrows f), Limits.Pi.π (fun (f : (Y : C) × (Z : C) × (_ : Z Y) × { f' : Y X // S.arrows f' }) => P.obj (Opposite.op f.snd.fst)) Y, Z, g, f, hf z₁ = Limits.Pi.π (fun (f : (Y : C) × (Z : C) × (_ : Z Y) × { f' : Y X // S.arrows f' }) => P.obj (Opposite.op f.snd.fst)) Y, Z, g, f, hf z₂) :
          z₁ = z₂
          def CategoryTheory.Equalizer.Sieve.firstMap {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (S : Sieve X) :
          FirstObj P S.arrows SecondObj P S

          The map p of Equations (3,4) [MLM92].

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            def CategoryTheory.Equalizer.Sieve.secondMap {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (S : Sieve X) :
            FirstObj P S.arrows SecondObj P S

            The map a of Equations (3,4) [MLM92].

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem CategoryTheory.Equalizer.Sieve.w {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (S : Sieve X) :
              theorem CategoryTheory.Equalizer.Sieve.compatible_iff {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (S : Sieve X) (x : FirstObj P S.arrows) :
              ((firstObjEqFamily P S.arrows).hom x).Compatible firstMap P S x = secondMap P S x

              The family of elements given by x : FirstObj P S is compatible iff firstMap and secondMap map it to the same point.

              P is a sheaf for S, iff the fork given by w is an equalizer.

              This section establishes the equivalence between the sheaf condition of https://stacks.math.columbia.edu/tag/00VM and the definition of isSheafFor.

              def CategoryTheory.Equalizer.Presieve.SecondObj {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (R : Presieve X) [R.hasPullbacks] :
              Type (max v u)

              The rightmost object of the fork diagram of https://stacks.math.columbia.edu/tag/00VM, which contains the data used to check a family of elements for a presieve is compatible.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def CategoryTheory.Equalizer.Presieve.firstMap {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (R : Presieve X) [R.hasPullbacks] :

                The map pr₀* of https://stacks.math.columbia.edu/tag/00VL.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  def CategoryTheory.Equalizer.Presieve.secondMap {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (R : Presieve X) [R.hasPullbacks] :

                  The map pr₁* of https://stacks.math.columbia.edu/tag/00VL.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem CategoryTheory.Equalizer.Presieve.w {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (R : Presieve X) [R.hasPullbacks] :
                    theorem CategoryTheory.Equalizer.Presieve.compatible_iff {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type (max v u))) {X : C} (R : Presieve X) [R.hasPullbacks] (x : FirstObj P R) :
                    ((firstObjEqFamily P R).hom x).Compatible firstMap P R x = secondMap P R x

                    The family of elements given by x : FirstObj P S is compatible iff firstMap and secondMap map it to the same point.

                    P is a sheaf for R, iff the fork given by w is an equalizer. See https://stacks.math.columbia.edu/tag/00VM.

                    The middle object of the fork diagram of https://stacks.math.columbia.edu/tag/00VM. The difference between this and Equalizer.FirstObj P (ofArrows X π) arises if the family of arrows π contains duplicates. The Presieve.ofArrows doesn't see those.

                    Equations
                    Instances For
                      theorem CategoryTheory.Equalizer.Presieve.Arrows.FirstObj.ext {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type w)) {I : Type} (X : IC) (z₁ z₂ : FirstObj P X) (h : ∀ (i : I), Limits.Pi.π (fun (i : I) => P.obj (Opposite.op (X i))) i z₁ = Limits.Pi.π (fun (i : I) => P.obj (Opposite.op (X i))) i z₂) :
                      z₁ = z₂
                      def CategoryTheory.Equalizer.Presieve.Arrows.SecondObj {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type w)) {B : C} {I : Type} (X : IC) (π : (i : I) → X i B) [(Presieve.ofArrows X π).hasPullbacks] :

                      The rightmost object of the fork diagram of https://stacks.math.columbia.edu/tag/00VM. The difference between this and Equalizer.Presieve.SecondObj P (ofArrows X π) arises if the family of arrows π contains duplicates. The Presieve.ofArrows doesn't see those.

                      Equations
                      Instances For
                        theorem CategoryTheory.Equalizer.Presieve.Arrows.SecondObj.ext {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type w)) {B : C} {I : Type} (X : IC) (π : (i : I) → X i B) [(Presieve.ofArrows X π).hasPullbacks] (z₁ z₂ : SecondObj P X π) (h : ∀ (ij : I × I), Limits.Pi.π (fun (ij : I × I) => P.obj (Opposite.op (Limits.pullback (π ij.1) (π ij.2)))) ij z₁ = Limits.Pi.π (fun (ij : I × I) => P.obj (Opposite.op (Limits.pullback (π ij.1) (π ij.2)))) ij z₂) :
                        z₁ = z₂
                        def CategoryTheory.Equalizer.Presieve.Arrows.forkMap {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type w)) {B : C} {I : Type} (X : IC) (π : (i : I) → X i B) :
                        P.obj (Opposite.op B) FirstObj P X

                        The left morphism of the fork diagram.

                        Equations
                        Instances For
                          def CategoryTheory.Equalizer.Presieve.Arrows.firstMap {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type w)) {B : C} {I : Type} (X : IC) (π : (i : I) → X i B) [(Presieve.ofArrows X π).hasPullbacks] :

                          The first of the two parallel morphisms of the fork diagram, induced by the first projection in each pullback.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            def CategoryTheory.Equalizer.Presieve.Arrows.secondMap {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type w)) {B : C} {I : Type} (X : IC) (π : (i : I) → X i B) [(Presieve.ofArrows X π).hasPullbacks] :

                            The second of the two parallel morphisms of the fork diagram, induced by the second projection in each pullback.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem CategoryTheory.Equalizer.Presieve.Arrows.w {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type w)) {B : C} {I : Type} (X : IC) (π : (i : I) → X i B) [(Presieve.ofArrows X π).hasPullbacks] :
                              theorem CategoryTheory.Equalizer.Presieve.Arrows.compatible_iff {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type w)) {B : C} {I : Type} (X : IC) (π : (i : I) → X i B) [(Presieve.ofArrows X π).hasPullbacks] (x : FirstObj P X) :
                              Presieve.Arrows.Compatible P π ((Limits.Types.productIso fun (i : I) => P.obj (Opposite.op (X i))).hom x) firstMap P X π x = secondMap P X π x

                              The family of elements given by x : FirstObj P S is compatible iff firstMap and secondMap map it to the same point.

                              theorem CategoryTheory.Equalizer.Presieve.Arrows.sheaf_condition {C : Type u} [Category.{v, u} C] (P : Functor Cᵒᵖ (Type w)) {B : C} {I : Type} (X : IC) (π : (i : I) → X i B) [(Presieve.ofArrows X π).hasPullbacks] :

                              P is a sheaf for Presieve.ofArrows X π, iff the fork given by w is an equalizer. See https://stacks.math.columbia.edu/tag/00VM.