PhysLean Documentation

Mathlib.CategoryTheory.Limits.Shapes.BinaryProducts

Binary (co)products #

We define a category WalkingPair, which is the index category for a binary (co)product diagram. A convenience method pair X Y constructs the functor from the walking pair, hitting the given objects.

We define prod X Y and coprod X Y as limits and colimits of such functors.

Typeclasses HasBinaryProducts and HasBinaryCoproducts assert the existence of (co)limits shaped as walking pairs.

We include lemmas for simplifying equations involving projections and coprojections, and define braiding and associating isomorphisms, and the product comparison morphism.

References #

The type of objects for the diagram indexing a binary (co)product.

Instances For

    The equivalence swapping left and right.

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

      An equivalence from WalkingPair to Bool, sometimes useful when reindexing limits.

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

        The function on the walking pair, sending the two points to X and Y.

        Equations
        Instances For

          The diagram on the walking pair, sending the two points to X and Y.

          Equations
          Instances For
            @[simp]
            theorem CategoryTheory.Limits.pair_obj_left {C : Type u} [Category.{v, u} C] (X Y : C) :
            (pair X Y).obj { as := WalkingPair.left } = X
            @[simp]
            theorem CategoryTheory.Limits.pair_obj_right {C : Type u} [Category.{v, u} C] (X Y : C) :
            (pair X Y).obj { as := WalkingPair.right } = Y
            def CategoryTheory.Limits.mapPair {C : Type u} [Category.{v, u} C] {F G : Functor (Discrete WalkingPair) C} (f : F.obj { as := WalkingPair.left } G.obj { as := WalkingPair.left }) (g : F.obj { as := WalkingPair.right } G.obj { as := WalkingPair.right }) :
            F G

            The natural transformation between two functors out of the walking pair, specified by its components.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem CategoryTheory.Limits.mapPair_left {C : Type u} [Category.{v, u} C] {F G : Functor (Discrete WalkingPair) C} (f : F.obj { as := WalkingPair.left } G.obj { as := WalkingPair.left }) (g : F.obj { as := WalkingPair.right } G.obj { as := WalkingPair.right }) :
              (mapPair f g).app { as := WalkingPair.left } = f
              @[simp]
              theorem CategoryTheory.Limits.mapPair_right {C : Type u} [Category.{v, u} C] {F G : Functor (Discrete WalkingPair) C} (f : F.obj { as := WalkingPair.left } G.obj { as := WalkingPair.left }) (g : F.obj { as := WalkingPair.right } G.obj { as := WalkingPair.right }) :
              (mapPair f g).app { as := WalkingPair.right } = g

              The natural isomorphism between two functors out of the walking pair, specified by its components.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                theorem CategoryTheory.Limits.mapPairIso_inv_app {C : Type u} [Category.{v, u} C] {F G : Functor (Discrete WalkingPair) C} (f : F.obj { as := WalkingPair.left } G.obj { as := WalkingPair.left }) (g : F.obj { as := WalkingPair.right } G.obj { as := WalkingPair.right }) (X : Discrete WalkingPair) :
                (mapPairIso f g).inv.app X = (match X with | { as := WalkingPair.left } => f | { as := WalkingPair.right } => g).inv
                @[simp]
                theorem CategoryTheory.Limits.mapPairIso_hom_app {C : Type u} [Category.{v, u} C] {F G : Functor (Discrete WalkingPair) C} (f : F.obj { as := WalkingPair.left } G.obj { as := WalkingPair.left }) (g : F.obj { as := WalkingPair.right } G.obj { as := WalkingPair.right }) (X : Discrete WalkingPair) :
                (mapPairIso f g).hom.app X = (match X with | { as := WalkingPair.left } => f | { as := WalkingPair.right } => g).hom

                Every functor out of the walking pair is naturally isomorphic (actually, equal) to a pair

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  def CategoryTheory.Limits.pairComp {C : Type u} [Category.{v, u} C] {D : Type u₁} [Category.{v₁, u₁} D] (X Y : C) (F : Functor C D) :
                  (pair X Y).comp F pair (F.obj X) (F.obj Y)

                  The natural isomorphism between pair X Y ⋙ F and pair (F.obj X) (F.obj Y).

                  Equations
                  Instances For
                    @[reducible, inline]
                    abbrev CategoryTheory.Limits.BinaryFan {C : Type u} [Category.{v, u} C] (X Y : C) :
                    Type (max u v)

                    A binary fan is just a cone on a diagram indexing a product.

                    Equations
                    Instances For
                      @[reducible, inline]

                      The first projection of a binary fan.

                      Equations
                      Instances For
                        @[reducible, inline]

                        The second projection of a binary fan.

                        Equations
                        Instances For
                          @[simp]
                          @[simp]
                          def CategoryTheory.Limits.BinaryFan.ext {C : Type u} [Category.{v, u} C] {A B : C} {c c' : BinaryFan A B} (e : c.pt c'.pt) (h₁ : c.fst = CategoryStruct.comp e.hom c'.fst) (h₂ : c.snd = CategoryStruct.comp e.hom c'.snd) :
                          c c'

                          Constructs an isomorphism of BinaryFans out of an isomorphism of the tips that commutes with the projections.

                          Equations
                          Instances For
                            def CategoryTheory.Limits.BinaryFan.IsLimit.mk {C : Type u} [Category.{v, u} C] {X Y : C} (s : BinaryFan X Y) (lift : {T : C} → (T X) → (T Y) → (T s.pt)) (hl₁ : ∀ {T : C} (f : T X) (g : T Y), CategoryStruct.comp (lift f g) s.fst = f) (hl₂ : ∀ {T : C} (f : T X) (g : T Y), CategoryStruct.comp (lift f g) s.snd = g) (uniq : ∀ {T : C} (f : T X) (g : T Y) (m : T s.pt), CategoryStruct.comp m s.fst = fCategoryStruct.comp m s.snd = gm = lift f g) :

                            A convenient way to show that a binary fan is a limit.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[reducible, inline]
                              abbrev CategoryTheory.Limits.BinaryCofan {C : Type u} [Category.{v, u} C] (X Y : C) :
                              Type (max u v)

                              A binary cofan is just a cocone on a diagram indexing a coproduct.

                              Equations
                              Instances For
                                @[reducible, inline]

                                The first inclusion of a binary cofan.

                                Equations
                                Instances For
                                  @[reducible, inline]

                                  The second inclusion of a binary cofan.

                                  Equations
                                  Instances For
                                    def CategoryTheory.Limits.BinaryCofan.ext {C : Type u} [Category.{v, u} C] {A B : C} {c c' : BinaryCofan A B} (e : c.pt c'.pt) (h₁ : CategoryStruct.comp c.inl e.hom = c'.inl) (h₂ : CategoryStruct.comp c.inr e.hom = c'.inr) :
                                    c c'

                                    Constructs an isomorphism of BinaryCofans out of an isomorphism of the tips that commutes with the injections.

                                    Equations
                                    Instances For
                                      @[simp]
                                      def CategoryTheory.Limits.BinaryCofan.IsColimit.mk {C : Type u} [Category.{v, u} C] {X Y : C} (s : BinaryCofan X Y) (desc : {T : C} → (X T) → (Y T) → (s.pt T)) (hd₁ : ∀ {T : C} (f : X T) (g : Y T), CategoryStruct.comp s.inl (desc f g) = f) (hd₂ : ∀ {T : C} (f : X T) (g : Y T), CategoryStruct.comp s.inr (desc f g) = g) (uniq : ∀ {T : C} (f : X T) (g : Y T) (m : s.pt T), CategoryStruct.comp s.inl m = fCategoryStruct.comp s.inr m = gm = desc f g) :

                                      A convenient way to show that a binary cofan is a colimit.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        def CategoryTheory.Limits.BinaryFan.mk {C : Type u} [Category.{v, u} C] {X Y P : C} (π₁ : P X) (π₂ : P Y) :

                                        A binary fan with vertex P consists of the two projections π₁ : P ⟶ X and π₂ : P ⟶ Y.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          @[simp]
                                          theorem CategoryTheory.Limits.BinaryFan.mk_pt {C : Type u} [Category.{v, u} C] {X Y P : C} (π₁ : P X) (π₂ : P Y) :
                                          (mk π₁ π₂).pt = P
                                          def CategoryTheory.Limits.BinaryCofan.mk {C : Type u} [Category.{v, u} C] {X Y P : C} (ι₁ : X P) (ι₂ : Y P) :

                                          A binary cofan with vertex P consists of the two inclusions ι₁ : X ⟶ P and ι₂ : Y ⟶ P.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For
                                            @[simp]
                                            theorem CategoryTheory.Limits.BinaryCofan.mk_pt {C : Type u} [Category.{v, u} C] {X Y P : C} (ι₁ : X P) (ι₂ : Y P) :
                                            (mk ι₁ ι₂).pt = P
                                            @[simp]
                                            theorem CategoryTheory.Limits.BinaryFan.mk_fst {C : Type u} [Category.{v, u} C] {X Y P : C} (π₁ : P X) (π₂ : P Y) :
                                            (mk π₁ π₂).fst = π₁
                                            @[simp]
                                            theorem CategoryTheory.Limits.BinaryFan.mk_snd {C : Type u} [Category.{v, u} C] {X Y P : C} (π₁ : P X) (π₂ : P Y) :
                                            (mk π₁ π₂).snd = π₂
                                            @[simp]
                                            theorem CategoryTheory.Limits.BinaryCofan.mk_inl {C : Type u} [Category.{v, u} C] {X Y P : C} (ι₁ : X P) (ι₂ : Y P) :
                                            (mk ι₁ ι₂).inl = ι₁
                                            @[simp]
                                            theorem CategoryTheory.Limits.BinaryCofan.mk_inr {C : Type u} [Category.{v, u} C] {X Y P : C} (ι₁ : X P) (ι₂ : Y P) :
                                            (mk ι₁ ι₂).inr = ι₂
                                            def CategoryTheory.Limits.BinaryFan.isLimitMk {C : Type u} [Category.{v, u} C] {X Y W : C} {fst : W X} {snd : W Y} (lift : (s : BinaryFan X Y) → s.pt W) (fac_left : ∀ (s : BinaryFan X Y), CategoryStruct.comp (lift s) fst = s.fst) (fac_right : ∀ (s : BinaryFan X Y), CategoryStruct.comp (lift s) snd = s.snd) (uniq : ∀ (s : BinaryFan X Y) (m : s.pt W), CategoryStruct.comp m fst = s.fstCategoryStruct.comp m snd = s.sndm = lift s) :
                                            IsLimit (mk fst snd)

                                            This is a more convenient formulation to show that a BinaryFan constructed using BinaryFan.mk is a limit cone.

                                            Equations
                                            Instances For
                                              def CategoryTheory.Limits.BinaryCofan.isColimitMk {C : Type u} [Category.{v, u} C] {X Y W : C} {inl : X W} {inr : Y W} (desc : (s : BinaryCofan X Y) → W s.pt) (fac_left : ∀ (s : BinaryCofan X Y), CategoryStruct.comp inl (desc s) = s.inl) (fac_right : ∀ (s : BinaryCofan X Y), CategoryStruct.comp inr (desc s) = s.inr) (uniq : ∀ (s : BinaryCofan X Y) (m : W s.pt), CategoryStruct.comp inl m = s.inlCategoryStruct.comp inr m = s.inrm = desc s) :
                                              IsColimit (mk inl inr)

                                              This is a more convenient formulation to show that a BinaryCofan constructed using BinaryCofan.mk is a colimit cocone.

                                              Equations
                                              Instances For
                                                def CategoryTheory.Limits.BinaryFan.IsLimit.lift' {C : Type u} [Category.{v, u} C] {W X Y : C} {s : BinaryFan X Y} (h : IsLimit s) (f : W X) (g : W Y) :

                                                If s is a limit binary fan over X and Y, then every pair of morphisms f : W ⟶ X and g : W ⟶ Y induces a morphism l : W ⟶ s.pt satisfying l ≫ s.fst = f and l ≫ s.snd = g.

                                                Equations
                                                Instances For
                                                  @[simp]
                                                  theorem CategoryTheory.Limits.BinaryFan.IsLimit.lift'_coe {C : Type u} [Category.{v, u} C] {W X Y : C} {s : BinaryFan X Y} (h : IsLimit s) (f : W X) (g : W Y) :
                                                  (lift' h f g) = h.lift (BinaryFan.mk f g)
                                                  def CategoryTheory.Limits.BinaryCofan.IsColimit.desc' {C : Type u} [Category.{v, u} C] {W X Y : C} {s : BinaryCofan X Y} (h : IsColimit s) (f : X W) (g : Y W) :

                                                  If s is a colimit binary cofan over X and Y,, then every pair of morphisms f : X ⟶ W and g : Y ⟶ W induces a morphism l : s.pt ⟶ W satisfying s.inl ≫ l = f and s.inr ≫ l = g.

                                                  Equations
                                                  Instances For
                                                    @[simp]
                                                    theorem CategoryTheory.Limits.BinaryCofan.IsColimit.desc'_coe {C : Type u} [Category.{v, u} C] {W X Y : C} {s : BinaryCofan X Y} (h : IsColimit s) (f : X W) (g : Y W) :
                                                    (desc' h f g) = h.desc (BinaryCofan.mk f g)

                                                    Binary products are symmetric.

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      noncomputable def CategoryTheory.Limits.BinaryFan.isLimitCompLeftIso {C : Type u} [Category.{v, u} C] {X Y X' : C} (c : BinaryFan X Y) (f : X X') [IsIso f] (h : IsLimit c) :

                                                      If X' ≅ X, then X × Y also is the product of X' and Y.

                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For
                                                        noncomputable def CategoryTheory.Limits.BinaryFan.isLimitCompRightIso {C : Type u} [Category.{v, u} C] {X Y Y' : C} (c : BinaryFan X Y) (f : Y Y') [IsIso f] (h : IsLimit c) :

                                                        If Y' ≅ Y, then X x Y also is the product of X and Y'.

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

                                                          Binary coproducts are symmetric.

                                                          Equations
                                                          • One or more equations did not get rendered due to their size.
                                                          Instances For
                                                            noncomputable def CategoryTheory.Limits.BinaryCofan.isColimitCompLeftIso {C : Type u} [Category.{v, u} C] {X Y X' : C} (c : BinaryCofan X Y) (f : X' X) [IsIso f] (h : IsColimit c) :

                                                            If X' ≅ X, then X ⨿ Y also is the coproduct of X' and Y.

                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For
                                                              noncomputable def CategoryTheory.Limits.BinaryCofan.isColimitCompRightIso {C : Type u} [Category.{v, u} C] {X Y Y' : C} (c : BinaryCofan X Y) (f : Y' Y) [IsIso f] (h : IsColimit c) :

                                                              If Y' ≅ Y, then X ⨿ Y also is the coproduct of X and Y'.

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

                                                                An abbreviation for HasLimit (pair X Y).

                                                                Equations
                                                                Instances For
                                                                  @[reducible, inline]

                                                                  An abbreviation for HasColimit (pair X Y).

                                                                  Equations
                                                                  Instances For
                                                                    @[reducible, inline]
                                                                    noncomputable abbrev CategoryTheory.Limits.prod {C : Type u} [Category.{v, u} C] (X Y : C) [HasBinaryProduct X Y] :
                                                                    C

                                                                    If we have a product of X and Y, we can access it using prod X Y or X ⨯ Y.

                                                                    Equations
                                                                    Instances For
                                                                      @[reducible, inline]
                                                                      noncomputable abbrev CategoryTheory.Limits.coprod {C : Type u} [Category.{v, u} C] (X Y : C) [HasBinaryCoproduct X Y] :
                                                                      C

                                                                      If we have a coproduct of X and Y, we can access it using coprod X Y or X ⨿ Y.

                                                                      Equations
                                                                      Instances For

                                                                        Notation for the product

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

                                                                          Notation for the coproduct

                                                                          Equations
                                                                          • One or more equations did not get rendered due to their size.
                                                                          Instances For
                                                                            @[reducible, inline]
                                                                            noncomputable abbrev CategoryTheory.Limits.prod.fst {C : Type u} [Category.{v, u} C] {X Y : C} [HasBinaryProduct X Y] :
                                                                            X Y X

                                                                            The projection map to the first component of the product.

                                                                            Equations
                                                                            Instances For
                                                                              @[reducible, inline]
                                                                              noncomputable abbrev CategoryTheory.Limits.prod.snd {C : Type u} [Category.{v, u} C] {X Y : C} [HasBinaryProduct X Y] :
                                                                              X Y Y

                                                                              The projection map to the second component of the product.

                                                                              Equations
                                                                              Instances For
                                                                                @[reducible, inline]
                                                                                noncomputable abbrev CategoryTheory.Limits.coprod.inl {C : Type u} [Category.{v, u} C] {X Y : C} [HasBinaryCoproduct X Y] :
                                                                                X X ⨿ Y

                                                                                The inclusion map from the first component of the coproduct.

                                                                                Equations
                                                                                Instances For
                                                                                  @[reducible, inline]
                                                                                  noncomputable abbrev CategoryTheory.Limits.coprod.inr {C : Type u} [Category.{v, u} C] {X Y : C} [HasBinaryCoproduct X Y] :
                                                                                  Y X ⨿ Y

                                                                                  The inclusion map from the second component of the coproduct.

                                                                                  Equations
                                                                                  Instances For

                                                                                    The binary fan constructed from the projection maps is a limit.

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

                                                                                      The binary cofan constructed from the coprojection maps is a colimit.

                                                                                      Equations
                                                                                      • One or more equations did not get rendered due to their size.
                                                                                      Instances For
                                                                                        @[reducible, inline]
                                                                                        noncomputable abbrev CategoryTheory.Limits.prod.lift {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryProduct X Y] (f : W X) (g : W Y) :
                                                                                        W X Y

                                                                                        If the product of X and Y exists, then every pair of morphisms f : W ⟶ X and g : W ⟶ Y induces a morphism prod.lift f g : W ⟶ X ⨯ Y.

                                                                                        Equations
                                                                                        Instances For
                                                                                          @[reducible, inline]
                                                                                          noncomputable abbrev CategoryTheory.Limits.diag {C : Type u} [Category.{v, u} C] (X : C) [HasBinaryProduct X X] :
                                                                                          X X X

                                                                                          diagonal arrow of the binary product in the category fam I

                                                                                          Equations
                                                                                          Instances For
                                                                                            @[reducible, inline]
                                                                                            noncomputable abbrev CategoryTheory.Limits.coprod.desc {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryCoproduct X Y] (f : X W) (g : Y W) :
                                                                                            X ⨿ Y W

                                                                                            If the coproduct of X and Y exists, then every pair of morphisms f : X ⟶ W and g : Y ⟶ W induces a morphism coprod.desc f g : X ⨿ Y ⟶ W.

                                                                                            Equations
                                                                                            Instances For
                                                                                              @[reducible, inline]
                                                                                              noncomputable abbrev CategoryTheory.Limits.codiag {C : Type u} [Category.{v, u} C] (X : C) [HasBinaryCoproduct X X] :
                                                                                              X ⨿ X X

                                                                                              codiagonal arrow of the binary coproduct

                                                                                              Equations
                                                                                              Instances For
                                                                                                theorem CategoryTheory.Limits.prod.lift_fst {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryProduct X Y] (f : W X) (g : W Y) :
                                                                                                theorem CategoryTheory.Limits.prod.lift_snd {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryProduct X Y] (f : W X) (g : W Y) :
                                                                                                theorem CategoryTheory.Limits.coprod.inl_desc {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryCoproduct X Y] (f : X W) (g : Y W) :
                                                                                                theorem CategoryTheory.Limits.coprod.inr_desc {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryCoproduct X Y] (f : X W) (g : Y W) :
                                                                                                instance CategoryTheory.Limits.prod.mono_lift_of_mono_left {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryProduct X Y] (f : W X) (g : W Y) [Mono f] :
                                                                                                Mono (lift f g)
                                                                                                instance CategoryTheory.Limits.prod.mono_lift_of_mono_right {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryProduct X Y] (f : W X) (g : W Y) [Mono g] :
                                                                                                Mono (lift f g)
                                                                                                instance CategoryTheory.Limits.coprod.epi_desc_of_epi_left {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryCoproduct X Y] (f : X W) (g : Y W) [Epi f] :
                                                                                                Epi (desc f g)
                                                                                                instance CategoryTheory.Limits.coprod.epi_desc_of_epi_right {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryCoproduct X Y] (f : X W) (g : Y W) [Epi g] :
                                                                                                Epi (desc f g)
                                                                                                noncomputable def CategoryTheory.Limits.prod.lift' {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryProduct X Y] (f : W X) (g : W Y) :

                                                                                                If the product of X and Y exists, then every pair of morphisms f : W ⟶ X and g : W ⟶ Y induces a morphism l : W ⟶ X ⨯ Y satisfying l ≫ Prod.fst = f and l ≫ Prod.snd = g.

                                                                                                Equations
                                                                                                Instances For
                                                                                                  noncomputable def CategoryTheory.Limits.coprod.desc' {C : Type u} [Category.{v, u} C] {W X Y : C} [HasBinaryCoproduct X Y] (f : X W) (g : Y W) :

                                                                                                  If the coproduct of X and Y exists, then every pair of morphisms f : X ⟶ W and g : Y ⟶ W induces a morphism l : X ⨿ Y ⟶ W satisfying coprod.inl ≫ l = f and coprod.inr ≫ l = g.

                                                                                                  Equations
                                                                                                  Instances For
                                                                                                    noncomputable def CategoryTheory.Limits.prod.map {C : Type u} [Category.{v, u} C] {W X Y Z : C} [HasBinaryProduct W X] [HasBinaryProduct Y Z] (f : W Y) (g : X Z) :
                                                                                                    W X Y Z

                                                                                                    If the products W ⨯ X and Y ⨯ Z exist, then every pair of morphisms f : W ⟶ Y and g : X ⟶ Z induces a morphism prod.map f g : W ⨯ X ⟶ Y ⨯ Z.

                                                                                                    Equations
                                                                                                    Instances For
                                                                                                      noncomputable def CategoryTheory.Limits.coprod.map {C : Type u} [Category.{v, u} C] {W X Y Z : C} [HasBinaryCoproduct W X] [HasBinaryCoproduct Y Z] (f : W Y) (g : X Z) :
                                                                                                      W ⨿ X Y ⨿ Z

                                                                                                      If the coproducts W ⨿ X and Y ⨿ Z exist, then every pair of morphisms f : W ⟶ Y and g : W ⟶ Z induces a morphism coprod.map f g : W ⨿ X ⟶ Y ⨿ Z.

                                                                                                      Equations
                                                                                                      Instances For
                                                                                                        @[simp]
                                                                                                        theorem CategoryTheory.Limits.prod.comp_lift {C : Type u} [Category.{v, u} C] {V W X Y : C} [HasBinaryProduct X Y] (f : V W) (g : W X) (h : W Y) :
                                                                                                        theorem CategoryTheory.Limits.prod.comp_lift_assoc {C : Type u} [Category.{v, u} C] {V W X Y : C} [HasBinaryProduct X Y] (f : V W) (g : W X) (h : W Y) {Z : C} (h✝ : X Y Z) :
                                                                                                        @[simp]
                                                                                                        @[simp]
                                                                                                        @[simp]
                                                                                                        theorem CategoryTheory.Limits.prod.lift_map {C : Type u} [Category.{v, u} C] {V W X Y Z : C} [HasBinaryProduct W X] [HasBinaryProduct Y Z] (f : V W) (g : V X) (h : W Y) (k : X Z) :
                                                                                                        @[simp]
                                                                                                        theorem CategoryTheory.Limits.prod.lift_map_assoc {C : Type u} [Category.{v, u} C] {V W X Y Z : C} [HasBinaryProduct W X] [HasBinaryProduct Y Z] (f : V W) (g : V X) (h : W Y) (k : X Z) {Z✝ : C} (h✝ : Y Z Z✝) :
                                                                                                        @[simp]
                                                                                                        theorem CategoryTheory.Limits.prod.map_map {C : Type u} [Category.{v, u} C] {A₁ A₂ A₃ B₁ B₂ B₃ : C} [HasBinaryProduct A₁ B₁] [HasBinaryProduct A₂ B₂] [HasBinaryProduct A₃ B₃] (f : A₁ A₂) (g : B₁ B₂) (h : A₂ A₃) (k : B₂ B₃) :
                                                                                                        @[simp]
                                                                                                        theorem CategoryTheory.Limits.prod.map_map_assoc {C : Type u} [Category.{v, u} C] {A₁ A₂ A₃ B₁ B₂ B₃ : C} [HasBinaryProduct A₁ B₁] [HasBinaryProduct A₂ B₂] [HasBinaryProduct A₃ B₃] (f : A₁ A₂) (g : B₁ B₂) (h : A₂ A₃) (k : B₂ B₃) {Z : C} (h✝ : A₃ B₃ Z) :
                                                                                                        def CategoryTheory.Limits.prod.mapIso {C : Type u} [Category.{v, u} C] {W X Y Z : C} [HasBinaryProduct W X] [HasBinaryProduct Y Z] (f : W Y) (g : X Z) :
                                                                                                        W X Y Z

                                                                                                        If the products W ⨯ X and Y ⨯ Z exist, then every pair of isomorphisms f : W ≅ Y and g : X ≅ Z induces an isomorphism prod.mapIso f g : W ⨯ X ≅ Y ⨯ Z.

                                                                                                        Equations
                                                                                                        Instances For
                                                                                                          @[simp]
                                                                                                          theorem CategoryTheory.Limits.prod.mapIso_inv {C : Type u} [Category.{v, u} C] {W X Y Z : C} [HasBinaryProduct W X] [HasBinaryProduct Y Z] (f : W Y) (g : X Z) :
                                                                                                          (mapIso f g).inv = map f.inv g.inv
                                                                                                          @[simp]
                                                                                                          theorem CategoryTheory.Limits.prod.mapIso_hom {C : Type u} [Category.{v, u} C] {W X Y Z : C} [HasBinaryProduct W X] [HasBinaryProduct Y Z] (f : W Y) (g : X Z) :
                                                                                                          (mapIso f g).hom = map f.hom g.hom
                                                                                                          instance CategoryTheory.Limits.isIso_prod {C : Type u} [Category.{v, u} C] {W X Y Z : C} [HasBinaryProduct W X] [HasBinaryProduct Y Z] (f : W Y) (g : X Z) [IsIso f] [IsIso g] :
                                                                                                          instance CategoryTheory.Limits.prod.map_mono {C : Type u_1} [Category.{u_2, u_1} C] {W X Y Z : C} (f : W Y) (g : X Z) [Mono f] [Mono g] [HasBinaryProduct W X] [HasBinaryProduct Y Z] :
                                                                                                          Mono (map f g)
                                                                                                          @[simp]
                                                                                                          theorem CategoryTheory.Limits.coprod.desc_comp {C : Type u} [Category.{v, u} C] {V W X Y : C} [HasBinaryCoproduct X Y] (f : V W) (g : X V) (h : Y V) :
                                                                                                          theorem CategoryTheory.Limits.coprod.desc_comp_assoc {C : Type u} [Category.{v, u} C] {V W X Y : C} [HasBinaryCoproduct X Y] (f : V W) (g : X V) (h : Y V) {Z : C} (h✝ : W Z) :
                                                                                                          @[simp]
                                                                                                          theorem CategoryTheory.Limits.coprod.map_desc {C : Type u} [Category.{v, u} C] {S T U V W : C} [HasBinaryCoproduct U W] [HasBinaryCoproduct T V] (f : U S) (g : W S) (h : T U) (k : V W) :
                                                                                                          theorem CategoryTheory.Limits.coprod.map_desc_assoc {C : Type u} [Category.{v, u} C] {S T U V W : C} [HasBinaryCoproduct U W] [HasBinaryCoproduct T V] (f : U S) (g : W S) (h : T U) (k : V W) {Z : C} (h✝ : S Z) :
                                                                                                          @[simp]
                                                                                                          theorem CategoryTheory.Limits.coprod.map_map {C : Type u} [Category.{v, u} C] {A₁ A₂ A₃ B₁ B₂ B₃ : C} [HasBinaryCoproduct A₁ B₁] [HasBinaryCoproduct A₂ B₂] [HasBinaryCoproduct A₃ B₃] (f : A₁ A₂) (g : B₁ B₂) (h : A₂ A₃) (k : B₂ B₃) :
                                                                                                          @[simp]
                                                                                                          theorem CategoryTheory.Limits.coprod.map_map_assoc {C : Type u} [Category.{v, u} C] {A₁ A₂ A₃ B₁ B₂ B₃ : C} [HasBinaryCoproduct A₁ B₁] [HasBinaryCoproduct A₂ B₂] [HasBinaryCoproduct A₃ B₃] (f : A₁ A₂) (g : B₁ B₂) (h : A₂ A₃) (k : B₂ B₃) {Z : C} (h✝ : A₃ ⨿ B₃ Z) :
                                                                                                          def CategoryTheory.Limits.coprod.mapIso {C : Type u} [Category.{v, u} C] {W X Y Z : C} [HasBinaryCoproduct W X] [HasBinaryCoproduct Y Z] (f : W Y) (g : X Z) :
                                                                                                          W ⨿ X Y ⨿ Z

                                                                                                          If the coproducts W ⨿ X and Y ⨿ Z exist, then every pair of isomorphisms f : W ≅ Y and g : W ≅ Z induces an isomorphism coprod.mapIso f g : W ⨿ X ≅ Y ⨿ Z.

                                                                                                          Equations
                                                                                                          Instances For
                                                                                                            @[simp]
                                                                                                            theorem CategoryTheory.Limits.coprod.mapIso_inv {C : Type u} [Category.{v, u} C] {W X Y Z : C} [HasBinaryCoproduct W X] [HasBinaryCoproduct Y Z] (f : W Y) (g : X Z) :
                                                                                                            (mapIso f g).inv = map f.inv g.inv
                                                                                                            @[simp]
                                                                                                            theorem CategoryTheory.Limits.coprod.mapIso_hom {C : Type u} [Category.{v, u} C] {W X Y Z : C} [HasBinaryCoproduct W X] [HasBinaryCoproduct Y Z] (f : W Y) (g : X Z) :
                                                                                                            (mapIso f g).hom = map f.hom g.hom
                                                                                                            instance CategoryTheory.Limits.isIso_coprod {C : Type u} [Category.{v, u} C] {W X Y Z : C} [HasBinaryCoproduct W X] [HasBinaryCoproduct Y Z] (f : W Y) (g : X Z) [IsIso f] [IsIso g] :
                                                                                                            instance CategoryTheory.Limits.coprod.map_epi {C : Type u_1} [Category.{u_2, u_1} C] {W X Y Z : C} (f : W Y) (g : X Z) [Epi f] [Epi g] [HasBinaryCoproduct W X] [HasBinaryCoproduct Y Z] :
                                                                                                            Epi (map f g)

                                                                                                            If C has all limits of diagrams pair X Y, then it has all binary products

                                                                                                            If C has all colimits of diagrams pair X Y, then it has all binary coproducts

                                                                                                            The braiding isomorphism which swaps a binary product.

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

                                                                                                              The braiding isomorphism can be passed through a map by swapping the order.

                                                                                                              The braiding isomorphism is symmetric.

                                                                                                              The associator isomorphism for binary products.

                                                                                                              Equations
                                                                                                              • One or more equations did not get rendered due to their size.
                                                                                                              Instances For
                                                                                                                theorem CategoryTheory.Limits.prod.associator_naturality {C : Type u} [Category.{v, u} C] [HasBinaryProducts C] {X₁ X₂ X₃ Y₁ Y₂ Y₃ : C} (f₁ : X₁ Y₁) (f₂ : X₂ Y₂) (f₃ : X₃ Y₃) :
                                                                                                                CategoryStruct.comp (map (map f₁ f₂) f₃) (associator Y₁ Y₂ Y₃).hom = CategoryStruct.comp (associator X₁ X₂ X₃).hom (map f₁ (map f₂ f₃))
                                                                                                                theorem CategoryTheory.Limits.prod.associator_naturality_assoc {C : Type u} [Category.{v, u} C] [HasBinaryProducts C] {X₁ X₂ X₃ Y₁ Y₂ Y₃ : C} (f₁ : X₁ Y₁) (f₂ : X₂ Y₂) (f₃ : X₃ Y₃) {Z : C} (h : Y₁ Y₂ Y₃ Z) :
                                                                                                                CategoryStruct.comp (map (map f₁ f₂) f₃) (CategoryStruct.comp (associator Y₁ Y₂ Y₃).hom h) = CategoryStruct.comp (associator X₁ X₂ X₃).hom (CategoryStruct.comp (map f₁ (map f₂ f₃)) h)

                                                                                                                The left unitor isomorphism for binary products with the terminal object.

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

                                                                                                                  The right unitor isomorphism for binary products with the terminal object.

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

                                                                                                                    The braiding isomorphism which swaps a binary coproduct.

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

                                                                                                                      The braiding isomorphism is symmetric.

                                                                                                                      The associator isomorphism for binary coproducts.

                                                                                                                      Equations
                                                                                                                      • One or more equations did not get rendered due to their size.
                                                                                                                      Instances For
                                                                                                                        theorem CategoryTheory.Limits.coprod.associator_naturality {C : Type u} [Category.{v, u} C] [HasBinaryCoproducts C] {X₁ X₂ X₃ Y₁ Y₂ Y₃ : C} (f₁ : X₁ Y₁) (f₂ : X₂ Y₂) (f₃ : X₃ Y₃) :
                                                                                                                        CategoryStruct.comp (map (map f₁ f₂) f₃) (associator Y₁ Y₂ Y₃).hom = CategoryStruct.comp (associator X₁ X₂ X₃).hom (map f₁ (map f₂ f₃))

                                                                                                                        The left unitor isomorphism for binary coproducts with the initial object.

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

                                                                                                                          The right unitor isomorphism for binary coproducts with the initial object.

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

                                                                                                                            The binary product functor.

                                                                                                                            Equations
                                                                                                                            • One or more equations did not get rendered due to their size.
                                                                                                                            Instances For
                                                                                                                              @[simp]
                                                                                                                              theorem CategoryTheory.Limits.prod.functor_map_app {C : Type u} [Category.{v, u} C] [HasBinaryProducts C] {X✝ Y✝ : C} (f : X✝ Y✝) (T : C) :
                                                                                                                              @[simp]
                                                                                                                              theorem CategoryTheory.Limits.prod.functor_obj_map {C : Type u} [Category.{v, u} C] [HasBinaryProducts C] (X : C) {x✝ x✝¹ : C} (g : x✝ x✝¹) :

                                                                                                                              The binary coproduct functor.

                                                                                                                              Equations
                                                                                                                              • One or more equations did not get rendered due to their size.
                                                                                                                              Instances For
                                                                                                                                @[simp]
                                                                                                                                theorem CategoryTheory.Limits.coprod.functor_map_app {C : Type u} [Category.{v, u} C] [HasBinaryCoproducts C] {X✝ Y✝ : C} (f : X✝ Y✝) (T : C) :
                                                                                                                                @[simp]
                                                                                                                                theorem CategoryTheory.Limits.coprod.functor_obj_map {C : Type u} [Category.{v, u} C] [HasBinaryCoproducts C] (X : C) {x✝ x✝¹ : C} (g : x✝ x✝¹) :
                                                                                                                                def CategoryTheory.Limits.prodComparison {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) (A B : C) [HasBinaryProduct A B] [HasBinaryProduct (F.obj A) (F.obj B)] :
                                                                                                                                F.obj (A B) F.obj A F.obj B

                                                                                                                                The product comparison morphism.

                                                                                                                                In CategoryTheory/Limits/Preserves we show this is always an iso iff F preserves binary products.

                                                                                                                                Equations
                                                                                                                                Instances For
                                                                                                                                  theorem CategoryTheory.Limits.prodComparison_natural {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) {A A' B B' : C} [HasBinaryProduct A B] [HasBinaryProduct A' B'] [HasBinaryProduct (F.obj A) (F.obj B)] [HasBinaryProduct (F.obj A') (F.obj B')] (f : A A') (g : B B') :

                                                                                                                                  Naturality of the prodComparison morphism in both arguments.

                                                                                                                                  theorem CategoryTheory.Limits.prodComparison_natural_assoc {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) {A A' B B' : C} [HasBinaryProduct A B] [HasBinaryProduct A' B'] [HasBinaryProduct (F.obj A) (F.obj B)] [HasBinaryProduct (F.obj A') (F.obj B')] (f : A A') (g : B B') {Z : D} (h : F.obj A' F.obj B' Z) :

                                                                                                                                  The product comparison morphism from F(A ⨯ -) to FA ⨯ F-, whose components are given by prodComparison.

                                                                                                                                  Equations
                                                                                                                                  Instances For
                                                                                                                                    theorem CategoryTheory.Limits.prodComparison_inv_natural {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) {A A' B B' : C} [HasBinaryProduct A B] [HasBinaryProduct A' B'] [HasBinaryProduct (F.obj A) (F.obj B)] [HasBinaryProduct (F.obj A') (F.obj B')] (f : A A') (g : B B') [IsIso (prodComparison F A B)] [IsIso (prodComparison F A' B')] :

                                                                                                                                    If the product comparison morphism is an iso, its inverse is natural.

                                                                                                                                    theorem CategoryTheory.Limits.prodComparison_inv_natural_assoc {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) {A A' B B' : C} [HasBinaryProduct A B] [HasBinaryProduct A' B'] [HasBinaryProduct (F.obj A) (F.obj B)] [HasBinaryProduct (F.obj A') (F.obj B')] (f : A A') (g : B B') [IsIso (prodComparison F A B)] [IsIso (prodComparison F A' B')] {Z : D} (h : F.obj (A' B') Z) :

                                                                                                                                    The natural isomorphism F(A ⨯ -) ≅ FA ⨯ F-, provided each prodComparison F A B is an isomorphism (as B changes).

                                                                                                                                    Equations
                                                                                                                                    • One or more equations did not get rendered due to their size.
                                                                                                                                    Instances For
                                                                                                                                      @[simp]
                                                                                                                                      theorem CategoryTheory.Limits.prodComparisonNatIso_inv {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) [HasBinaryProducts C] [HasBinaryProducts D] (A : C) [∀ (B : C), IsIso (prodComparison F A B)] :
                                                                                                                                      (prodComparisonNatIso F A).inv = (asIso { app := fun (B : C) => prodComparison F A B, naturality := }).inv
                                                                                                                                      theorem CategoryTheory.Limits.prodComparison_comp {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] {E : Type u₃} [Category.{w', u₃} E] (F : Functor C D) (G : Functor D E) {A B : C} [HasBinaryProduct A B] [HasBinaryProduct (F.obj A) (F.obj B)] [HasBinaryProduct (G.obj (F.obj A)) (G.obj (F.obj B))] [HasBinaryProduct ((F.comp G).obj A) ((F.comp G).obj B)] :
                                                                                                                                      def CategoryTheory.Limits.coprodComparison {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) (A B : C) [HasBinaryCoproduct A B] [HasBinaryCoproduct (F.obj A) (F.obj B)] :
                                                                                                                                      F.obj A ⨿ F.obj B F.obj (A ⨿ B)

                                                                                                                                      The coproduct comparison morphism.

                                                                                                                                      In CategoryTheory/Limits/Preserves we show this is always an iso iff F preserves binary coproducts.

                                                                                                                                      Equations
                                                                                                                                      Instances For
                                                                                                                                        theorem CategoryTheory.Limits.coprodComparison_natural {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) {A A' B B' : C} [HasBinaryCoproduct A B] [HasBinaryCoproduct A' B'] [HasBinaryCoproduct (F.obj A) (F.obj B)] [HasBinaryCoproduct (F.obj A') (F.obj B')] (f : A A') (g : B B') :

                                                                                                                                        Naturality of the coprod_comparison morphism in both arguments.

                                                                                                                                        theorem CategoryTheory.Limits.coprodComparison_natural_assoc {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) {A A' B B' : C} [HasBinaryCoproduct A B] [HasBinaryCoproduct A' B'] [HasBinaryCoproduct (F.obj A) (F.obj B)] [HasBinaryCoproduct (F.obj A') (F.obj B')] (f : A A') (g : B B') {Z : D} (h : F.obj (A' ⨿ B') Z) :

                                                                                                                                        The coproduct comparison morphism from FA ⨿ F- to F(A ⨿ -), whose components are given by coprodComparison.

                                                                                                                                        Equations
                                                                                                                                        Instances For
                                                                                                                                          theorem CategoryTheory.Limits.coprodComparison_inv_natural {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) {A A' B B' : C} [HasBinaryCoproduct A B] [HasBinaryCoproduct A' B'] [HasBinaryCoproduct (F.obj A) (F.obj B)] [HasBinaryCoproduct (F.obj A') (F.obj B')] (f : A A') (g : B B') [IsIso (coprodComparison F A B)] [IsIso (coprodComparison F A' B')] :

                                                                                                                                          If the coproduct comparison morphism is an iso, its inverse is natural.

                                                                                                                                          theorem CategoryTheory.Limits.coprodComparison_inv_natural_assoc {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) {A A' B B' : C} [HasBinaryCoproduct A B] [HasBinaryCoproduct A' B'] [HasBinaryCoproduct (F.obj A) (F.obj B)] [HasBinaryCoproduct (F.obj A') (F.obj B')] (f : A A') (g : B B') [IsIso (coprodComparison F A B)] [IsIso (coprodComparison F A' B')] {Z : D} (h : F.obj A' ⨿ F.obj B' Z) :

                                                                                                                                          The natural isomorphism FA ⨿ F- ≅ F(A ⨿ -), provided each coprodComparison F A B is an isomorphism (as B changes).

                                                                                                                                          Equations
                                                                                                                                          • One or more equations did not get rendered due to their size.
                                                                                                                                          Instances For
                                                                                                                                            @[simp]
                                                                                                                                            theorem CategoryTheory.Limits.coprodComparisonNatIso_inv {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{w, u₂} D] (F : Functor C D) [HasBinaryCoproducts C] [HasBinaryCoproducts D] (A : C) [∀ (B : C), IsIso (coprodComparison F A B)] :
                                                                                                                                            (coprodComparisonNatIso F A).inv = (asIso { app := fun (B : C) => coprodComparison F A B, naturality := }).inv
                                                                                                                                            noncomputable def CategoryTheory.Over.coprodObj {C : Type u} [Category.{v, u} C] [Limits.HasBinaryCoproducts C] {A : C} :
                                                                                                                                            Over AFunctor (Over A) (Over A)

                                                                                                                                            Auxiliary definition for Over.coprod.

                                                                                                                                            Equations
                                                                                                                                            • One or more equations did not get rendered due to their size.
                                                                                                                                            Instances For
                                                                                                                                              @[simp]
                                                                                                                                              theorem CategoryTheory.Over.coprodObj_map {C : Type u} [Category.{v, u} C] [Limits.HasBinaryCoproducts C] {A : C} (a✝ : Over A) {X✝ Y✝ : Over A} (k : X✝ Y✝) :
                                                                                                                                              noncomputable def CategoryTheory.Over.coprod {C : Type u} [Category.{v, u} C] [Limits.HasBinaryCoproducts C] {A : C} :
                                                                                                                                              Functor (Over A) (Functor (Over A) (Over A))

                                                                                                                                              A category with binary coproducts has a functorial sup operation on over categories.

                                                                                                                                              Equations
                                                                                                                                              • One or more equations did not get rendered due to their size.
                                                                                                                                              Instances For
                                                                                                                                                @[simp]
                                                                                                                                                theorem CategoryTheory.Over.coprod_map_app {C : Type u} [Category.{v, u} C] [Limits.HasBinaryCoproducts C] {A : C} {X✝ Y✝ : Over A} (k : X✝ Y✝) (g : Over A) :