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 ir = 𝟙 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) :
    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
    • h.map F = { i := F.map h.i, r := F.map h.r, retract := }
    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
      • h.splitEpi = { section_ := h.i, id := }
      Instances For
        @[simp]
        theorem CategoryTheory.Retract.splitEpi_section_ {C : Type u} [Category.{v, u} C] {X Y : C} (h : Retract X Y) :
        h.splitEpi.section_ = h.i
        def CategoryTheory.Retract.splitMono {C : Type u} [Category.{v, u} C] {X Y : C} (h : Retract X Y) :

        a retract determines a split monomorphism.

        Equations
        • h.splitMono = { retraction := h.r, id := }
        Instances For
          @[simp]
          theorem CategoryTheory.Retract.splitMono_retraction {C : Type u} [Category.{v, u} C] {X Y : C} (h : Retract X Y) :
          h.splitMono.retraction = h.r

          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) :
              (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
              @[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 ir = 𝟙 f.

              Equations
              Instances For
                theorem CategoryTheory.RetractArrow.i_w {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X Y} {g : Z W} (h : RetractArrow f g) :
                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 {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X Y} {g : Z W} (h : RetractArrow f g) :
                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) :
                    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 {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 {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_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✝) :
                    instance CategoryTheory.RetractArrow.instIsSplitEpiLeftRArrow {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X Y} {g : Z W} (h : RetractArrow f g) :
                    IsSplitEpi h.r.left
                    instance CategoryTheory.RetractArrow.instIsSplitEpiRightRArrow {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X Y} {g : Z W} (h : RetractArrow f g) :
                    IsSplitEpi h.r.right
                    instance CategoryTheory.RetractArrow.instIsSplitMonoLeftIArrow {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X Y} {g : Z W} (h : RetractArrow f g) :
                    IsSplitMono h.i.left
                    instance CategoryTheory.RetractArrow.instIsSplitMonoRightIArrow {C : Type u} [Category.{v, u} C] {X Y Z W : C} {f : X Y} {g : Z W} (h : RetractArrow f g) :
                    IsSplitMono h.i.right
                    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
                    • e.retract = { i := e.hom, r := e.inv, retract := }
                    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