Documentation

Mathlib.CategoryTheory.WithTerminal.Basic

WithInitial and WithTerminal #

Given a category C, this file constructs two objects:

  1. WithTerminal C, the category built from C by formally adjoining a terminal object.
  2. WithInitial C, the category built from C by formally adjoining an initial object.

The terminal resp. initial object is WithTerminal.star resp. WithInitial.star, and the proofs that these are terminal resp. initial are in WithTerminal.star_terminal and WithInitial.star_initial.

The inclusion from C into WithTerminal C resp. WithInitial C is denoted WithTerminal.incl resp. WithInitial.incl.

The relevant constructions needed for the universal properties of these constructions are:

  1. lift, which lifts F : C ⥤ D to a functor from WithTerminal C resp. WithInitial C in the case where an object Z : D is provided satisfying some additional conditions.
  2. inclLift shows that the composition of lift with incl is isomorphic to the functor which was lifted.
  3. liftUnique provides the uniqueness property of lift.

In addition to this, we provide WithTerminal.map and WithInitial.map providing the functoriality of these constructions with respect to functors on the base categories.

We define corresponding pseudofunctors WithTerminal.pseudofunctor and WithInitial.pseudofunctor from Cat to Cat.

Formally adjoin a terminal object to a category.

Instances For
    @[implicit_reducible]
    instance CategoryTheory.instInhabitedWithTerminal {a✝ : Type u_1} :
    Inhabited (WithTerminal a✝)
    inductive CategoryTheory.WithInitial (C : Type u) :

    Formally adjoin an initial object to a category.

    Instances For
      @[implicit_reducible]
      instance CategoryTheory.instInhabitedWithInitial {a✝ : Type u_1} :
      Inhabited (WithInitial a✝)

      Identity morphisms for WithTerminal C.

      Instances For
        def CategoryTheory.WithTerminal.comp {C : Type u} [Category.{v, u} C] {X Y Z : WithTerminal C} :
        X.Hom YY.Hom ZX.Hom Z

        Composition of morphisms for WithTerminal C.

        Instances For
          def CategoryTheory.WithTerminal.down {C : Type u} [Category.{v, u} C] {X Y : C} (f : of X of Y) :
          X Y

          Helper function for typechecking.

          Instances For

            The inclusion from C into WithTerminal C.

            Instances For

              Map WithTerminal with respect to a functor F : C ⥤ D.

              Instances For
                @[simp]
                theorem CategoryTheory.WithTerminal.map_obj {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (F : Functor C D) (X : WithTerminal C) :
                (map F).obj X = match X with | of x => of (F.obj x) | star => star
                @[simp]
                theorem CategoryTheory.WithTerminal.map_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (F : Functor C D) {X Y : WithTerminal C} (f : X Y) :
                (map F).map f = match X, Y, f with | of a, of a_1, f => F.map (down f) | of a, star, x => PUnit.unit | star, star, x => PUnit.unit

                A natural isomorphism between the functor map (𝟭 C) and 𝟭 (WithTerminal C).

                Instances For
                  @[simp]
                  theorem CategoryTheory.WithTerminal.mapId_hom_app (C : Type u_1) [Category.{v_1, u_1} C] (X : WithTerminal C) :
                  (mapId C).hom.app X = (match X with | of a => Iso.refl (of a) | star => Iso.refl star).hom
                  @[simp]
                  theorem CategoryTheory.WithTerminal.mapId_inv_app (C : Type u_1) [Category.{v_1, u_1} C] (X : WithTerminal C) :
                  (mapId C).inv.app X = (match X with | of a => Iso.refl (of a) | star => Iso.refl star).inv
                  def CategoryTheory.WithTerminal.mapComp {C : Type u} [Category.{v, u} C] {D : Type u_1} {E : Type u_2} [Category.{v_1, u_1} D] [Category.{v_2, u_2} E] (F : Functor C D) (G : Functor D E) :
                  map (F.comp G) (map F).comp (map G)

                  A natural isomorphism between the functor map (F ⋙ G) and map F ⋙ map G .

                  Instances For
                    @[simp]
                    theorem CategoryTheory.WithTerminal.mapComp_inv_app {C : Type u} [Category.{v, u} C] {D : Type u_1} {E : Type u_2} [Category.{v_1, u_1} D] [Category.{v_2, u_2} E] (F : Functor C D) (G : Functor D E) (X : WithTerminal C) :
                    (mapComp F G).inv.app X = (match X with | of a => Iso.refl (of (G.obj (F.obj a))) | star => Iso.refl star).inv
                    @[simp]
                    theorem CategoryTheory.WithTerminal.mapComp_hom_app {C : Type u} [Category.{v, u} C] {D : Type u_1} {E : Type u_2} [Category.{v_1, u_1} D] [Category.{v_2, u_2} E] (F : Functor C D) (G : Functor D E) (X : WithTerminal C) :
                    (mapComp F G).hom.app X = (match X with | of a => Iso.refl (of (G.obj (F.obj a))) | star => Iso.refl star).hom
                    def CategoryTheory.WithTerminal.map₂ {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {F G : Functor C D} (η : F G) :
                    map F map G

                    From a natural transformation of functors C ⥤ D, the induced natural transformation of functors WithTerminal C ⥤ WithTerminal D.

                    Instances For
                      @[simp]
                      theorem CategoryTheory.WithTerminal.map₂_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {F G : Functor C D} (η : F G) (X : WithTerminal C) :
                      (map₂ η).app X = match X with | of x => η.app x | star => CategoryStruct.id star

                      The prelax functor from Cat to Cat defined with WithTerminal.

                      Instances For

                        The pseudofunctor from Cat to Cat defined with WithTerminal.

                        Instances For
                          @[simp]
                          theorem CategoryTheory.WithTerminal.pseudofunctor_mapComp {a✝ b✝ c✝ : Cat} (x✝ : a✝ b✝) (x✝¹ : b✝ c✝) :

                          The isomorphism between star and an abstract terminal object of WithTerminal C

                          Instances For
                            def CategoryTheory.WithTerminal.lift {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → F.obj x Z) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (F.map f) (M y) = M x) :

                            Lift a functor F : C ⥤ D to WithTerminal C ⥤ D.

                            Instances For
                              @[simp]
                              theorem CategoryTheory.WithTerminal.lift_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → F.obj x Z) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (F.map f) (M y) = M x) {X Y : WithTerminal C} (f : X Y) :
                              (lift F M hM).map f = match X, Y, f with | of a, of a_1, f => F.map (down f) | of x, star, x_1 => M x | star, star, x => CategoryStruct.id Z
                              @[simp]
                              theorem CategoryTheory.WithTerminal.lift_obj {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → F.obj x Z) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (F.map f) (M y) = M x) (X : WithTerminal C) :
                              (lift F M hM).obj X = match X with | of x => F.obj x | star => Z
                              def CategoryTheory.WithTerminal.inclLift {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → F.obj x Z) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (F.map f) (M y) = M x) :
                              incl.comp (lift F M hM) F

                              The isomorphism between incllift F _ _ with F.

                              Instances For
                                @[simp]
                                theorem CategoryTheory.WithTerminal.inclLift_inv_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → F.obj x Z) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (F.map f) (M y) = M x) (x✝ : C) :
                                (inclLift F M hM).inv.app x✝ = CategoryStruct.id (F.obj x✝)
                                @[simp]
                                theorem CategoryTheory.WithTerminal.inclLift_hom_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → F.obj x Z) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (F.map f) (M y) = M x) (x✝ : C) :
                                (inclLift F M hM).hom.app x✝ = CategoryStruct.id (match incl.obj x✝ with | of x => F.obj x | star => Z)
                                def CategoryTheory.WithTerminal.liftStar {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → F.obj x Z) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (F.map f) (M y) = M x) :
                                (lift F M hM).obj star Z

                                The isomorphism between (lift F _ _).obj WithTerminal.star with Z.

                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.WithTerminal.liftStar_inv {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → F.obj x Z) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (F.map f) (M y) = M x) :
                                  @[simp]
                                  theorem CategoryTheory.WithTerminal.liftStar_hom {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → F.obj x Z) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (F.map f) (M y) = M x) :
                                  theorem CategoryTheory.WithTerminal.lift_map_liftStar {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → F.obj x Z) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (F.map f) (M y) = M x) (x : C) :
                                  def CategoryTheory.WithTerminal.liftUnique {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → F.obj x Z) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (F.map f) (M y) = M x) (G : Functor (WithTerminal C) D) (h : incl.comp G F) (hG : G.obj star Z) (hh : ∀ (x : C), CategoryStruct.comp (G.map (starTerminal.from (incl.obj x))) hG.hom = CategoryStruct.comp (h.hom.app x) (M x)) :
                                  G lift F M hM

                                  The uniqueness of lift.

                                  Instances For

                                    A variant of lift with Z a terminal object.

                                    Instances For
                                      @[simp]
                                      theorem CategoryTheory.WithTerminal.liftToTerminal_obj {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsTerminal Z) (X : WithTerminal C) :
                                      (liftToTerminal F hZ).obj X = match X with | of x => F.obj x | star => Z
                                      @[simp]
                                      theorem CategoryTheory.WithTerminal.liftToTerminal_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsTerminal Z) {X Y : WithTerminal C} (f : X Y) :
                                      (liftToTerminal F hZ).map f = match X, Y, f with | of a, of a_1, f => F.map (down f) | of x, star, x_1 => hZ.from (F.obj x) | star, star, x => CategoryStruct.id Z

                                      A variant of incl_lift with Z a terminal object.

                                      Instances For
                                        @[simp]
                                        theorem CategoryTheory.WithTerminal.inclLiftToTerminal_hom_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsTerminal Z) (x✝ : C) :
                                        (inclLiftToTerminal F hZ).hom.app x✝ = CategoryStruct.id (match incl.obj x✝ with | of x => F.obj x | star => Z)
                                        def CategoryTheory.WithTerminal.liftToTerminalUnique {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsTerminal Z) (G : Functor (WithTerminal C) D) (h : incl.comp G F) (hG : G.obj star Z) :

                                        A variant of lift_unique with Z a terminal object.

                                        Instances For
                                          @[simp]
                                          theorem CategoryTheory.WithTerminal.liftToTerminalUnique_inv_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsTerminal Z) (G : Functor (WithTerminal C) D) (h : incl.comp G F) (hG : G.obj star Z) (X : WithTerminal C) :
                                          (liftToTerminalUnique F hZ G h hG).inv.app X = (match X with | of x => h.app x | star => hG).inv
                                          @[simp]
                                          theorem CategoryTheory.WithTerminal.liftToTerminalUnique_hom_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsTerminal Z) (G : Functor (WithTerminal C) D) (h : incl.comp G F) (hG : G.obj star Z) (X : WithTerminal C) :
                                          (liftToTerminalUnique F hZ G h hG).hom.app X = (match X with | of x => h.app x | star => hG).hom

                                          Constructs a morphism to star from of X.

                                          Instances For

                                            A functor WithTerminal C ⥤ D can be seen as an element of the comma category Comma (𝟭 (C ⥤ D)) (const C).

                                            Instances For
                                              @[simp]
                                              theorem CategoryTheory.WithTerminal.mkCommaObject_left_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (F : Functor (WithTerminal C) D) {X✝ Y✝ : C} (f : X✝ Y✝) :

                                              A morphism of functors WithTerminal C ⥤ D gives a morphism between the associated comma objects.

                                              Instances For

                                                An element of the comma category Comma (𝟭 (C ⥤ D)) (Functor.const C) can be seen as a functor WithTerminal C ⥤ D.

                                                Instances For
                                                  @[simp]
                                                  theorem CategoryTheory.WithTerminal.ofCommaObject_obj {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (c : Comma (Functor.id (Functor C D)) (Functor.const C)) (X : WithTerminal C) :
                                                  (ofCommaObject c).obj X = match X with | of x => c.left.obj x | star => c.right
                                                  @[simp]
                                                  theorem CategoryTheory.WithTerminal.ofCommaObject_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (c : Comma (Functor.id (Functor C D)) (Functor.const C)) {X Y : WithTerminal C} (f : X Y) :
                                                  (ofCommaObject c).map f = match X, Y, f with | of a, of a_1, f => c.left.map (down f) | of x, star, x_1 => c.hom.app x | star, star, x => CategoryStruct.id c.right

                                                  A morphism in Comma (𝟭 (C ⥤ D)) (Functor.const C) gives a morphism between the associated functors WithTerminal C ⥤ D.

                                                  Instances For
                                                    @[simp]
                                                    theorem CategoryTheory.WithTerminal.ofCommaMorphism_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {c c' : Comma (Functor.id (Functor C D)) (Functor.const C)} (φ : c c') (x : WithTerminal C) :
                                                    (ofCommaMorphism φ).app x = match x with | of x => φ.left.app x | star => φ.right

                                                    The category of functors WithTerminal C ⥤ D is equivalent to the category Comma (𝟭 (C ⥤ D)) (const C) .

                                                    Instances For
                                                      @[simp]
                                                      theorem CategoryTheory.WithTerminal.equivComma_inverse_obj_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (c : Comma (Functor.id (Functor C D)) (Functor.const C)) {X Y : WithTerminal C} (f : X Y) :
                                                      (equivComma.inverse.obj c).map f = match X, Y, f with | of a, of a_1, f => c.left.map (down f) | of x, star, x_1 => c.hom.app x | star, star, x => CategoryStruct.id c.right
                                                      @[simp]
                                                      theorem CategoryTheory.WithTerminal.equivComma_inverse_map_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {X✝ Y✝ : Comma (Functor.id (Functor C D)) (Functor.const C)} (φ : X✝ Y✝) (x : WithTerminal C) :
                                                      (equivComma.inverse.map φ).app x = match x with | of x => φ.left.app x | star => φ.right
                                                      @[simp]
                                                      theorem CategoryTheory.WithTerminal.equivComma_functor_map_left_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {X✝ Y✝ : Functor (WithTerminal C) D} (η : X✝ Y✝) (X : C) :

                                                      In the case of a discrete category, WithTerminal is the same category as WidePullbackShape

                                                      TODO: Should we simply replace WidePullbackShape J with WithTerminal (Discrete J) everywhere?

                                                      Instances For

                                                        Identity morphisms for WithInitial C.

                                                        Instances For
                                                          def CategoryTheory.WithInitial.comp {C : Type u} [Category.{v, u} C] {X Y Z : WithInitial C} :
                                                          X.Hom YY.Hom ZX.Hom Z

                                                          Composition of morphisms for WithInitial C.

                                                          Instances For
                                                            def CategoryTheory.WithInitial.down {C : Type u} [Category.{v, u} C] {X Y : C} (f : of X of Y) :
                                                            X Y

                                                            Helper function for typechecking.

                                                            Instances For
                                                              @[simp]
                                                              theorem CategoryTheory.WithInitial.down_comp {C : Type u} [Category.{v, u} C] {X Y Z : C} (f : of X of Y) (g : of Y of Z) :

                                                              The inclusion of C into WithInitial C.

                                                              Instances For

                                                                Map WithInitial with respect to a functor F : C ⥤ D.

                                                                Instances For
                                                                  @[simp]
                                                                  theorem CategoryTheory.WithInitial.map_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (F : Functor C D) {X Y : WithInitial C} (f : X Y) :
                                                                  (map F).map f = match X, Y, f with | of a, of a_1, f => F.map (down f) | star, of a, x => PUnit.unit | star, star, x => PUnit.unit
                                                                  @[simp]
                                                                  theorem CategoryTheory.WithInitial.map_obj {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (F : Functor C D) (X : WithInitial C) :
                                                                  (map F).obj X = match X with | of x => of (F.obj x) | star => star

                                                                  A natural isomorphism between the functor map (𝟭 C) and 𝟭 (WithInitial C).

                                                                  Instances For
                                                                    @[simp]
                                                                    theorem CategoryTheory.WithInitial.mapId_hom_app (C : Type u_1) [Category.{v_1, u_1} C] (X : WithInitial C) :
                                                                    (mapId C).hom.app X = (match X with | of a => Iso.refl (of a) | star => Iso.refl star).hom
                                                                    @[simp]
                                                                    theorem CategoryTheory.WithInitial.mapId_inv_app (C : Type u_1) [Category.{v_1, u_1} C] (X : WithInitial C) :
                                                                    (mapId C).inv.app X = (match X with | of a => Iso.refl (of a) | star => Iso.refl star).inv
                                                                    def CategoryTheory.WithInitial.mapComp {C : Type u} [Category.{v, u} C] {D : Type u_1} {E : Type u_2} [Category.{v_1, u_1} D] [Category.{v_2, u_2} E] (F : Functor C D) (G : Functor D E) :
                                                                    map (F.comp G) (map F).comp (map G)

                                                                    A natural isomorphism between the functor map (F ⋙ G) and map F ⋙ map G .

                                                                    Instances For
                                                                      @[simp]
                                                                      theorem CategoryTheory.WithInitial.mapComp_hom_app {C : Type u} [Category.{v, u} C] {D : Type u_1} {E : Type u_2} [Category.{v_1, u_1} D] [Category.{v_2, u_2} E] (F : Functor C D) (G : Functor D E) (X : WithInitial C) :
                                                                      (mapComp F G).hom.app X = (match X with | of a => Iso.refl (of (G.obj (F.obj a))) | star => Iso.refl star).hom
                                                                      @[simp]
                                                                      theorem CategoryTheory.WithInitial.mapComp_inv_app {C : Type u} [Category.{v, u} C] {D : Type u_1} {E : Type u_2} [Category.{v_1, u_1} D] [Category.{v_2, u_2} E] (F : Functor C D) (G : Functor D E) (X : WithInitial C) :
                                                                      (mapComp F G).inv.app X = (match X with | of a => Iso.refl (of (G.obj (F.obj a))) | star => Iso.refl star).inv
                                                                      def CategoryTheory.WithInitial.map₂ {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {F G : Functor C D} (η : F G) :
                                                                      map F map G

                                                                      From a natural transformation of functors C ⥤ D, the induced natural transformation of functors WithInitial C ⥤ WithInitial D.

                                                                      Instances For
                                                                        @[simp]
                                                                        theorem CategoryTheory.WithInitial.map₂_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {F G : Functor C D} (η : F G) (X : WithInitial C) :
                                                                        (map₂ η).app X = match X with | of x => η.app x | star => CategoryStruct.id star

                                                                        The prelax functor from Cat to Cat defined with WithInitial.

                                                                        Instances For

                                                                          The pseudofunctor from Cat to Cat defined with WithInitial.

                                                                          Instances For
                                                                            @[simp]
                                                                            theorem CategoryTheory.WithInitial.pseudofunctor_mapComp {a✝ b✝ c✝ : Cat} (x✝ : a✝ b✝) (x✝¹ : b✝ c✝) :

                                                                            The isomorphism between star and an abstract initial object of WithInitial C

                                                                            Instances For
                                                                              def CategoryTheory.WithInitial.lift {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → Z F.obj x) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (M x) (F.map f) = M y) :

                                                                              Lift a functor F : C ⥤ D to WithInitial C ⥤ D.

                                                                              Instances For
                                                                                @[simp]
                                                                                theorem CategoryTheory.WithInitial.lift_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → Z F.obj x) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (M x) (F.map f) = M y) {X Y : WithInitial C} (f : X Y) :
                                                                                (lift F M hM).map f = match X, Y, f with | of a, of a_1, f => F.map (down f) | star, of a, x => M a | star, star, x => CategoryStruct.id (match star with | of x => F.obj x | star => Z)
                                                                                @[simp]
                                                                                theorem CategoryTheory.WithInitial.lift_obj {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → Z F.obj x) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (M x) (F.map f) = M y) (X : WithInitial C) :
                                                                                (lift F M hM).obj X = match X with | of x => F.obj x | star => Z
                                                                                def CategoryTheory.WithInitial.inclLift {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → Z F.obj x) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (M x) (F.map f) = M y) :
                                                                                incl.comp (lift F M hM) F

                                                                                The isomorphism between incllift F _ _ with F.

                                                                                Instances For
                                                                                  @[simp]
                                                                                  theorem CategoryTheory.WithInitial.inclLift_inv_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → Z F.obj x) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (M x) (F.map f) = M y) (x✝ : C) :
                                                                                  (inclLift F M hM).inv.app x✝ = CategoryStruct.id (F.obj x✝)
                                                                                  @[simp]
                                                                                  theorem CategoryTheory.WithInitial.inclLift_hom_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → Z F.obj x) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (M x) (F.map f) = M y) (x✝ : C) :
                                                                                  (inclLift F M hM).hom.app x✝ = CategoryStruct.id (match incl.obj x✝ with | of x => F.obj x | star => Z)
                                                                                  def CategoryTheory.WithInitial.liftStar {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → Z F.obj x) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (M x) (F.map f) = M y) :
                                                                                  (lift F M hM).obj star Z

                                                                                  The isomorphism between (lift F _ _).obj WithInitial.star with Z.

                                                                                  Instances For
                                                                                    @[simp]
                                                                                    theorem CategoryTheory.WithInitial.liftStar_hom {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → Z F.obj x) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (M x) (F.map f) = M y) :
                                                                                    @[simp]
                                                                                    theorem CategoryTheory.WithInitial.liftStar_inv {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → Z F.obj x) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (M x) (F.map f) = M y) :
                                                                                    theorem CategoryTheory.WithInitial.liftStar_lift_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → Z F.obj x) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (M x) (F.map f) = M y) (x : C) :
                                                                                    def CategoryTheory.WithInitial.liftUnique {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (M : (x : C) → Z F.obj x) (hM : ∀ (x y : C) (f : x y), CategoryStruct.comp (M x) (F.map f) = M y) (G : Functor (WithInitial C) D) (h : incl.comp G F) (hG : G.obj star Z) (hh : ∀ (x : C), CategoryStruct.comp hG.symm.hom (G.map (starInitial.to (incl.obj x))) = CategoryStruct.comp (M x) (h.symm.hom.app x)) :
                                                                                    G lift F M hM

                                                                                    The uniqueness of lift.

                                                                                    Instances For

                                                                                      A variant of lift with Z an initial object.

                                                                                      Instances For
                                                                                        @[simp]
                                                                                        theorem CategoryTheory.WithInitial.liftToInitial_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsInitial Z) {X Y : WithInitial C} (f : X Y) :
                                                                                        (liftToInitial F hZ).map f = match X, Y, f with | of a, of a_1, f => F.map (down f) | star, of a, x => hZ.to (F.obj a) | star, star, x => CategoryStruct.id Z
                                                                                        @[simp]
                                                                                        theorem CategoryTheory.WithInitial.liftToInitial_obj {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsInitial Z) (X : WithInitial C) :
                                                                                        (liftToInitial F hZ).obj X = match X with | of x => F.obj x | star => Z

                                                                                        A variant of incl_lift with Z an initial object.

                                                                                        Instances For
                                                                                          @[simp]
                                                                                          theorem CategoryTheory.WithInitial.inclLiftToInitial_hom_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsInitial Z) (x✝ : C) :
                                                                                          (inclLiftToInitial F hZ).hom.app x✝ = CategoryStruct.id (match incl.obj x✝ with | of x => F.obj x | star => Z)
                                                                                          def CategoryTheory.WithInitial.liftToInitialUnique {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsInitial Z) (G : Functor (WithInitial C) D) (h : incl.comp G F) (hG : G.obj star Z) :

                                                                                          A variant of lift_unique with Z an initial object.

                                                                                          Instances For
                                                                                            @[simp]
                                                                                            theorem CategoryTheory.WithInitial.liftToInitialUnique_inv_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsInitial Z) (G : Functor (WithInitial C) D) (h : incl.comp G F) (hG : G.obj star Z) (X : WithInitial C) :
                                                                                            (liftToInitialUnique F hZ G h hG).inv.app X = (match X with | of x => h.app x | star => hG).inv
                                                                                            @[simp]
                                                                                            theorem CategoryTheory.WithInitial.liftToInitialUnique_hom_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {Z : D} (F : Functor C D) (hZ : Limits.IsInitial Z) (G : Functor (WithInitial C) D) (h : incl.comp G F) (hG : G.obj star Z) (X : WithInitial C) :
                                                                                            (liftToInitialUnique F hZ G h hG).hom.app X = (match X with | of x => h.app x | star => hG).hom

                                                                                            Constructs a morphism from star to of X.

                                                                                            Instances For

                                                                                              A functor WithInitial C ⥤ D can be seen as an element of the comma category Comma (const C) (𝟭 (C ⥤ D)).

                                                                                              Instances For
                                                                                                @[simp]
                                                                                                theorem CategoryTheory.WithInitial.mkCommaObject_right_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (F : Functor (WithInitial C) D) {X✝ Y✝ : C} (f : X✝ Y✝) :

                                                                                                A morphism of functors WithInitial C ⥤ D gives a morphism between the associated comma objects.

                                                                                                Instances For

                                                                                                  An element of the comma category Comma (Functor.const C) (𝟭 (C ⥤ D)) can be seen as a functor WithInitial C ⥤ D.

                                                                                                  Instances For
                                                                                                    @[simp]
                                                                                                    theorem CategoryTheory.WithInitial.ofCommaObject_obj {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (c : Comma (Functor.const C) (Functor.id (Functor C D))) (X : WithInitial C) :
                                                                                                    (ofCommaObject c).obj X = match X with | of x => c.right.obj x | star => c.left
                                                                                                    @[simp]
                                                                                                    theorem CategoryTheory.WithInitial.ofCommaObject_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (c : Comma (Functor.const C) (Functor.id (Functor C D))) {X Y : WithInitial C} (f : X Y) :
                                                                                                    (ofCommaObject c).map f = match X, Y, f with | of a, of a_1, f => c.right.map (down f) | star, of a, x => c.hom.app a | star, star, x => CategoryStruct.id c.left

                                                                                                    A morphism in Comma (Functor.const C) (𝟭 (C ⥤ D)) gives a morphism between the associated functors WithInitial C ⥤ D.

                                                                                                    Instances For
                                                                                                      @[simp]
                                                                                                      theorem CategoryTheory.WithInitial.ofCommaMorphism_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {c c' : Comma (Functor.const C) (Functor.id (Functor C D))} (φ : c c') (x : WithInitial C) :
                                                                                                      (ofCommaMorphism φ).app x = match x with | of x => φ.right.app x | star => φ.left

                                                                                                      The category of functors WithInitial C ⥤ D is equivalent to the category Comma (const C) (𝟭 (C ⥤ D)).

                                                                                                      Instances For
                                                                                                        @[simp]
                                                                                                        theorem CategoryTheory.WithInitial.equivComma_inverse_map_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {X✝ Y✝ : Comma (Functor.const C) (Functor.id (Functor C D))} (φ : X✝ Y✝) (x : WithInitial C) :
                                                                                                        (equivComma.inverse.map φ).app x = match x with | of x => φ.right.app x | star => φ.left
                                                                                                        @[simp]
                                                                                                        theorem CategoryTheory.WithInitial.equivComma_functor_map_right_app {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {X✝ Y✝ : Functor (WithInitial C) D} (η : X✝ Y✝) (X : C) :
                                                                                                        @[simp]
                                                                                                        theorem CategoryTheory.WithInitial.equivComma_inverse_obj_map {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] (c : Comma (Functor.const C) (Functor.id (Functor C D))) {X Y : WithInitial C} (f : X Y) :
                                                                                                        (equivComma.inverse.obj c).map f = match X, Y, f with | of a, of a_1, f => c.right.map (down f) | star, of a, x => c.hom.app a | star, star, x => CategoryStruct.id c.left

                                                                                                        The opposite category of WithTerminal C is equivalent to WithInitial Cᵒᵖ.

                                                                                                        Instances For

                                                                                                          The opposite category of WithInitial C is equivalent to WithTerminal Cᵒᵖ.

                                                                                                          Instances For