Documentation

Mathlib.CategoryTheory.Retract

Retracts #

Defines retracts of objects and morphisms.

structure CategoryTheory.Retract {C : Type u} [Category.{v, u} C] (X Y : C) :

An object X is a retract of Y if there are morphisms i : X โŸถ Y and r : Y โŸถ X such that i โ‰ซ r = ๐Ÿ™ X.

Instances For
    @[simp]
    theorem CategoryTheory.Retract.retract_assoc {C : Type u} [Category.{v, u} C] {X Y : C} (self : Retract X Y) {Z : C} (h : X โŸถ Z) :

    Retracts are preserved when passing to the opposite category.

    Instances For
      @[simp]
      theorem CategoryTheory.Retract.op_i {C : Type u} [Category.{v, u} C] {X Y : C} (h : Retract X Y) :
      h.op.i = h.r.op
      @[simp]
      theorem CategoryTheory.Retract.op_r {C : Type u} [Category.{v, u} C] {X Y : C} (h : Retract X Y) :
      h.op.r = h.i.op
      def CategoryTheory.Retract.map {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {X Y : C} (h : Retract X Y) (F : Functor C D) :
      Retract (F.obj X) (F.obj Y)

      If X is a retract of Y, then F.obj X is a retract of F.obj Y.

      Instances For
        @[simp]
        theorem CategoryTheory.Retract.map_i {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {X Y : C} (h : Retract X Y) (F : Functor C D) :
        (h.map F).i = F.map h.i
        @[simp]
        theorem CategoryTheory.Retract.map_r {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {X Y : C} (h : Retract X Y) (F : Functor C D) :
        (h.map F).r = F.map h.r
        def CategoryTheory.Retract.splitEpi {C : Type u} [Category.{v, u} C] {X Y : C} (h : Retract X Y) :

        a retract determines a split epimorphism.

        Instances For

          a retract determines a split monomorphism.

          Instances For

            Any object is a retract of itself.

            Instances For
              def CategoryTheory.Retract.trans {C : Type u} [Category.{v, u} C] {X Y : C} (h : Retract X Y) {Z : C} (h' : Retract Y Z) :

              A retract of a retract is a retract.

              Instances For
                @[simp]
                theorem CategoryTheory.Retract.trans_i {C : Type u} [Category.{v, u} C] {X Y : C} (h : Retract X Y) {Z : C} (h' : Retract Y Z) :
                (h.trans h').i = CategoryStruct.comp h.i h'.i
                @[simp]
                theorem CategoryTheory.Retract.trans_r {C : Type u} [Category.{v, u} C] {X Y : C} (h : Retract X Y) {Z : C} (h' : Retract Y Z) :
                (h.trans h').r = CategoryStruct.comp h'.r h.r
                def CategoryTheory.Retract.ofIso {C : Type u} [Category.{v, u} C] {X Y : C} (e : X โ‰… Y) :

                If e : X โ‰… Y, then X is a retract of Y.

                Instances For
                  @[reducible, inline]
                  abbrev CategoryTheory.RetractArrow {C : Type u} [Category.{v, u} C] {X Y Z W : C} (f : X โŸถ Y) (g : Z โŸถ W) :
                    X -------> Z -------> X
                    |          |          |
                    f          g          f
                    |          |          |
                    v          v          v
                    Y -------> W -------> Y
                  
                  

                  A morphism f : X โŸถ Y is a retract of g : Z โŸถ W if there are morphisms i : f โŸถ g and r : g โŸถ f in the arrow category such that i โ‰ซ r = ๐Ÿ™ f.

                  Instances For
                    theorem CategoryTheory.RetractArrow.i_w_assoc {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) {Zโœ : C} (hโœ : W โŸถ Zโœ) :
                    theorem CategoryTheory.RetractArrow.r_w_assoc {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) {Zโœ : C} (hโœ : Y โŸถ Zโœ) :
                    def CategoryTheory.RetractArrow.left {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) :

                    The top of a retract diagram of morphisms determines a retract of objects.

                    Instances For
                      @[simp]
                      theorem CategoryTheory.RetractArrow.left_r {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) :
                      h.left.r = h.r.left
                      @[simp]
                      theorem CategoryTheory.RetractArrow.left_i {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) :
                      h.left.i = h.i.left
                      def CategoryTheory.RetractArrow.right {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) :

                      The bottom of a retract diagram of morphisms determines a retract of objects.

                      Instances For
                        @[simp]
                        theorem CategoryTheory.RetractArrow.right_i {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) :
                        h.right.i = h.i.right
                        @[simp]
                        theorem CategoryTheory.RetractArrow.right_r {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) :
                        h.right.r = h.r.right
                        @[simp]
                        theorem CategoryTheory.RetractArrow.retract_left_assoc {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) {Zโœ : C} (hโœ : (Arrow.mk f).left โŸถ Zโœ) :
                        @[simp]
                        theorem CategoryTheory.RetractArrow.retract_right_assoc {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) {Zโœ : C} (hโœ : (Arrow.mk f).right โŸถ Zโœ) :
                        def CategoryTheory.RetractArrow.map {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) (F : Functor C D) :
                        RetractArrow (F.map f) (F.map g)

                        If a morphism f is a retract of g, then F.map f is a retract of F.map g for any functor F.

                        Instances For
                          @[simp]
                          theorem CategoryTheory.RetractArrow.map_i_left {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) (F : Functor C D) :
                          (h.map F).i.left = F.map h.i.left
                          @[simp]
                          theorem CategoryTheory.RetractArrow.map_r_left {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) (F : Functor C D) :
                          (h.map F).r.left = F.map h.r.left
                          @[simp]
                          theorem CategoryTheory.RetractArrow.map_r_right {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) (F : Functor C D) :
                          (h.map F).r.right = F.map h.r.right
                          @[simp]
                          theorem CategoryTheory.RetractArrow.map_i_right {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) (F : Functor C D) :
                          (h.map F).i.right = F.map h.i.right
                          def CategoryTheory.RetractArrow.op {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) :

                          If a morphism f is a retract of g, then f.op is a retract of g.op.

                          Instances For
                            @[simp]
                            theorem CategoryTheory.RetractArrow.op_i_right {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) :
                            h.op.i.right = h.r.left.op
                            @[simp]
                            theorem CategoryTheory.RetractArrow.op_i_left {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) :
                            h.op.i.left = h.r.right.op
                            @[simp]
                            theorem CategoryTheory.RetractArrow.op_r_left {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) :
                            h.op.r.left = h.i.right.op
                            @[simp]
                            theorem CategoryTheory.RetractArrow.op_r_right {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X โŸถ Y} {g : Z โŸถ W} (h : RetractArrow f g) :
                            h.op.r.right = h.i.left.op

                            If a morphism f in the opposite category is a retract of g, then f.unop is a retract of g.unop.

                            Instances For
                              def CategoryTheory.Iso.retract {C : Type u} [Category.{v, u} C] {X Y : C} (e : X โ‰… Y) :

                              If X is isomorphic to Y, then X is a retract of Y.

                              Instances For
                                @[simp]
                                theorem CategoryTheory.Iso.retract_i {C : Type u} [Category.{v, u} C] {X Y : C} (e : X โ‰… Y) :
                                e.retract.i = e.hom
                                @[simp]
                                theorem CategoryTheory.Iso.retract_r {C : Type u} [Category.{v, u} C] {X Y : C} (e : X โ‰… Y) :
                                e.retract.r = e.inv
                                def CategoryTheory.NatTrans.retractArrowApp {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {F G : Functor C D} (ฯ„ : F โŸถ G) {X Y : C} (h : Retract X Y) :
                                RetractArrow (ฯ„.app X) (ฯ„.app Y)

                                If X is a retract of Y, then for any natural transformation ฯ„, the natural transformation ฯ„.app X is a retract of ฯ„.app Y.

                                Instances For
                                  @[simp]
                                  theorem CategoryTheory.NatTrans.retractArrowApp_r {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {F G : Functor C D} (ฯ„ : F โŸถ G) {X Y : C} (h : Retract X Y) :
                                  (retractArrowApp ฯ„ h).r = Arrow.homMk (F.map h.r) (G.map h.r) โ‹ฏ
                                  @[simp]
                                  theorem CategoryTheory.NatTrans.retractArrowApp_i {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {F G : Functor C D} (ฯ„ : F โŸถ G) {X Y : C} (h : Retract X Y) :
                                  (retractArrowApp ฯ„ h).i = Arrow.homMk (F.map h.i) (G.map h.i) โ‹ฏ