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.

    Equations
      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.

        Equations
          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.

            Equations
              Instances For

                a retract determines a split monomorphism.

                Equations
                  Instances For

                    Any object is a retract of itself.

                    Equations
                      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.

                        Equations
                          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) :
                            @[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) :
                            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.

                            Equations
                              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.

                                Equations
                                  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.

                                    Equations
                                      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.

                                        Equations
                                          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) :
                                            @[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) :
                                            @[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.

                                            Equations
                                              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.

                                                Equations
                                                  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) :
                                                    @[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) :
                                                    @[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) :
                                                    @[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) :

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

                                                    Equations
                                                      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.

                                                        Equations
                                                          Instances For
                                                            @[simp]
                                                            theorem CategoryTheory.Iso.retract_i {C : Type u} [Category.{v, u} C] {X Y : C} (e : X โ‰… Y) :
                                                            @[simp]
                                                            theorem CategoryTheory.Iso.retract_r {C : Type u} [Category.{v, u} C] {X Y : C} (e : X โ‰… Y) :
                                                            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.

                                                            Equations
                                                              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) โ‹ฏ