Documentation

Mathlib.CategoryTheory.Limits.Shapes.FunctorToTypes

Binary (co)products of type-valued functors #

Defines an explicit construction of binary products and coproducts of type-valued functors.

Also defines isomorphisms to the categorical product and coproduct, respectively.

prod F G is the explicit binary product of type-valued functors F and G.

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

    The first projection of prod F G, onto F.

    Equations
    Instances For
      @[simp]
      theorem CategoryTheory.FunctorToTypes.prod.fst_app {C : Type u} [Category.{v, u} C] {F G : Functor C (Type w)} (x✝ : C) (a : (prod F G).obj x✝) :
      fst.app x✝ a = a.1

      The second projection of prod F G, onto G.

      Equations
      Instances For
        @[simp]
        theorem CategoryTheory.FunctorToTypes.prod.snd_app {C : Type u} [Category.{v, u} C] {F G : Functor C (Type w)} (x✝ : C) (a : (prod F G).obj x✝) :
        snd.app x✝ a = a.2
        def CategoryTheory.FunctorToTypes.prod.lift {C : Type u} [Category.{v, u} C] {F F₁ F₂ : Functor C (Type w)} (τ₁ : F F₁) (τ₂ : F F₂) :
        F prod F₁ F₂

        Given natural transformations F ⟶ F₁ and F ⟶ F₂, construct a natural transformation F ⟶ prod F₁ F₂.

        Equations
        Instances For
          @[simp]
          theorem CategoryTheory.FunctorToTypes.prod.lift_app {C : Type u} [Category.{v, u} C] {F F₁ F₂ : Functor C (Type w)} (τ₁ : F F₁) (τ₂ : F F₂) (x : C) (y : F.obj x) :
          (lift τ₁ τ₂).app x y = (τ₁.app x y, τ₂.app x y)
          @[simp]
          theorem CategoryTheory.FunctorToTypes.prod.lift_fst {C : Type u} [Category.{v, u} C] {F F₁ F₂ : Functor C (Type w)} (τ₁ : F F₁) (τ₂ : F F₂) :
          CategoryStruct.comp (lift τ₁ τ₂) fst = τ₁
          @[simp]
          theorem CategoryTheory.FunctorToTypes.prod.lift_snd {C : Type u} [Category.{v, u} C] {F F₁ F₂ : Functor C (Type w)} (τ₁ : F F₁) (τ₂ : F F₂) :
          CategoryStruct.comp (lift τ₁ τ₂) snd = τ₂
          @[simp]
          theorem CategoryTheory.FunctorToTypes.binaryProductCone_pt_map {C : Type u} [Category.{v, u} C] (F G : Functor C (Type w)) {X✝ Y✝ : C} (f : X✝ Y✝) (a : F.obj X✝ × G.obj X✝) :
          (binaryProductCone F G).pt.map f a = (F.map f a.1, G.map f a.2)
          noncomputable def CategoryTheory.FunctorToTypes.prodMk {C : Type u} [Category.{v, u} C] {F G : Functor C (Type w)} {a : C} (x : F.obj a) (y : G.obj a) :
          (F G).obj a

          Construct an element of (F ⨯ G).obj a from an element of F.obj a and an element of G.obj a.

          Equations
          Instances For
            @[simp]
            theorem CategoryTheory.FunctorToTypes.prodMk_fst {C : Type u} [Category.{v, u} C] {F G : Functor C (Type w)} {a : C} (x : F.obj a) (y : G.obj a) :
            @[simp]
            theorem CategoryTheory.FunctorToTypes.prodMk_snd {C : Type u} [Category.{v, u} C] {F G : Functor C (Type w)} {a : C} (x : F.obj a) (y : G.obj a) :
            theorem CategoryTheory.FunctorToTypes.prod_ext {C : Type u} [Category.{v, u} C] {F G : Functor C (Type w)} {a : C} (z w : (prod F G).obj a) (h1 : z.1 = w.1) (h2 : z.2 = w.2) :
            z = w
            theorem CategoryTheory.FunctorToTypes.prod_ext_iff {C : Type u} [Category.{v, u} C] {F G : Functor C (Type w)} {a : C} {z w : (prod F G).obj a} :
            z = w z.1 = w.1 z.2 = w.2
            noncomputable def CategoryTheory.FunctorToTypes.binaryProductEquiv {C : Type u} [Category.{v, u} C] (F G : Functor C (Type w)) (a : C) :
            (F G).obj a F.obj a × G.obj a

            (F ⨯ G).obj a is in bijection with the product of F.obj a and G.obj a.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem CategoryTheory.FunctorToTypes.binaryProductEquiv_symm_apply {C : Type u} [Category.{v, u} C] (F G : Functor C (Type w)) (a : C) (z : F.obj a × G.obj a) :
              (binaryProductEquiv F G a).symm z = prodMk z.1 z.2
              @[simp]
              theorem CategoryTheory.FunctorToTypes.binaryProductEquiv_apply {C : Type u} [Category.{v, u} C] (F G : Functor C (Type w)) (a : C) (z : (F G).obj a) :
              (binaryProductEquiv F G a) z = (((binaryProductIso F G).hom.app a z).1, ((binaryProductIso F G).hom.app a z).2)
              theorem CategoryTheory.FunctorToTypes.prod_ext' {C : Type u} [Category.{v, u} C] (F G : Functor C (Type w)) (a : C) (z w : (F G).obj a) (h1 : Limits.prod.fst.app a z = Limits.prod.fst.app a w) (h2 : Limits.prod.snd.app a z = Limits.prod.snd.app a w) :
              z = w

              coprod F G is the explicit binary coproduct of type-valued functors F and G.

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

                The left inclusion of F into coprod F G.

                Equations
                Instances For
                  @[simp]
                  theorem CategoryTheory.FunctorToTypes.coprod.inl_app {C : Type u} [Category.{v, u} C] {F G : Functor C (Type w)} (x✝ : C) (x : F.obj x✝) :
                  inl.app x✝ x = Sum.inl x

                  The right inclusion of G into coprod F G.

                  Equations
                  Instances For
                    @[simp]
                    theorem CategoryTheory.FunctorToTypes.coprod.inr_app {C : Type u} [Category.{v, u} C] {F G : Functor C (Type w)} (x✝ : C) (x : G.obj x✝) :
                    inr.app x✝ x = Sum.inr x
                    def CategoryTheory.FunctorToTypes.coprod.desc {C : Type u} [Category.{v, u} C] {F F₁ F₂ : Functor C (Type w)} (τ₁ : F₁ F) (τ₂ : F₂ F) :
                    coprod F₁ F₂ F

                    Given natural transformations F₁ ⟶ F and F₂ ⟶ F, construct a natural transformation coprod F₁ F₂ ⟶ F.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem CategoryTheory.FunctorToTypes.coprod.desc_app {C : Type u} [Category.{v, u} C] {F F₁ F₂ : Functor C (Type w)} (τ₁ : F₁ F) (τ₂ : F₂ F) (a : C) (x : (coprod F₁ F₂).obj a) :
                      (desc τ₁ τ₂).app a x = Sum.casesOn (motive := fun (t : F₁.obj a F₂.obj a) => x = tF.obj a) x (fun (x_1 : F₁.obj a) (h : x = Sum.inl x_1) => τ₁.app a x_1) (fun (x_1 : F₂.obj a) (h : x = Sum.inr x_1) => τ₂.app a x_1)
                      @[simp]
                      theorem CategoryTheory.FunctorToTypes.coprod.desc_inl {C : Type u} [Category.{v, u} C] {F F₁ F₂ : Functor C (Type w)} (τ₁ : F₁ F) (τ₂ : F₂ F) :
                      CategoryStruct.comp inl (desc τ₁ τ₂) = τ₁
                      @[simp]
                      theorem CategoryTheory.FunctorToTypes.coprod.desc_inr {C : Type u} [Category.{v, u} C] {F F₁ F₂ : Functor C (Type w)} (τ₁ : F₁ F) (τ₂ : F₂ F) :
                      CategoryStruct.comp inr (desc τ₁ τ₂) = τ₂
                      @[simp]
                      theorem CategoryTheory.FunctorToTypes.binaryCoproductCocone_pt_map {C : Type u} [Category.{v, u} C] (F G : Functor C (Type w)) {X✝ Y✝ : C} (f : X✝ Y✝) (x : F.obj X✝ G.obj X✝) :
                      (binaryCoproductCocone F G).pt.map f x = Sum.rec (motive := fun (t : F.obj X✝ G.obj X✝) => x = tF.obj Y✝ G.obj Y✝) (fun (val : F.obj X✝) (h : x = Sum.inl val) => Sum.inl (F.map f val)) (fun (val : G.obj X✝) (h : x = Sum.inr val) => Sum.inr (G.map f val)) x

                      coprod F G is a colimit cocone.

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

                        coprod F G is a binary coproduct for F and G.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          @[reducible, inline]
                          noncomputable abbrev CategoryTheory.FunctorToTypes.coprodInl {C : Type u} [Category.{v, u} C] {F G : Functor C (Type w)} {a : C} (x : F.obj a) :
                          (F ⨿ G).obj a

                          Construct an element of (F ⨿ G).obj a from an element of F.obj a

                          Equations
                          Instances For
                            @[reducible, inline]
                            noncomputable abbrev CategoryTheory.FunctorToTypes.coprodInr {C : Type u} [Category.{v, u} C] {F G : Functor C (Type w)} {a : C} (x : G.obj a) :
                            (F ⨿ G).obj a

                            Construct an element of (F ⨿ G).obj a from an element of G.obj a

                            Equations
                            Instances For
                              noncomputable def CategoryTheory.FunctorToTypes.binaryCoproductEquiv {C : Type u} [Category.{v, u} C] (F G : Functor C (Type w)) (a : C) :
                              (F ⨿ G).obj a F.obj a G.obj a

                              (F ⨿ G).obj a is in bijection with disjoint union of F.obj a and G.obj a.

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