Documentation

Mathlib.CategoryTheory.Endomorphism

Endomorphisms #

Definition and basic properties of endomorphisms and automorphisms of an object in a category.

For each X : C, we define a monoid CategoryTheory.End X which is a 1-field structure that is equipped with a bijection with X ⟶ X. Similarly, we define the group CategoryTheory.Aut X, which is equipped with a bijection with X ≅ X.

structure CategoryTheory.End {C : Type u} [CategoryStruct.{v, u} C] (X : C) :

Endomorphisms of an object in a category. Arguments order in multiplication agrees with Function.comp, not with CategoryTheory.CategoryStruct.comp.

  • of :: (
    • asHom : X ⟶ X

      the underlying morphism of an endomorphism

  • )
Instances For
    theorem CategoryTheory.End.ext {C : Type u} {inst✝ : CategoryStruct.{v, u} C} {X : C} {x y : End X} (asHom : x.asHom = y.asHom) :
    x = y
    theorem CategoryTheory.End.ext_iff {C : Type u} {inst✝ : CategoryStruct.{v, u} C} {X : C} {x y : End X} :
    x = y ↔ x.asHom = y.asHom
    @[implicit_reducible]

    The bijection End X ≃ (X ⟶ X).

    Equations
    Instances For
      @[simp]
      theorem CategoryTheory.End.homEquiv_symm_apply_asHom {C : Type u} [CategoryStruct.{v, u} C] {X : C} (asHom : X ⟶ X) :
      (homEquiv.symm asHom).asHom = asHom
      @[simp]
      theorem CategoryTheory.End.homEquiv_apply {C : Type u} [CategoryStruct.{v, u} C] {X : C} (self : End X) :
      homEquiv self = self.asHom
      @[instance_reducible]
      instance CategoryTheory.End.instOne {C : Type u} [CategoryStruct.{v, u} C] (X : C) :
      One (End X)
      Equations
      @[instance_reducible]
      Equations
      @[instance_reducible]
      instance CategoryTheory.End.instMul {C : Type u} [CategoryStruct.{v, u} C] (X : C) :
      Mul (End X)

      Multiplication of endomorphisms agrees with Function.comp, not with CategoryTheory.CategoryStruct.comp.

      Equations
      @[simp]
      @[deprecated CategoryTheory.End.one_asHom (since := "2026-09-12")]

      Alias of CategoryTheory.End.one_asHom.

      @[deprecated CategoryTheory.End.mul_asHom (since := "2026-09-12")]

      Alias of CategoryTheory.End.mul_asHom.

      @[instance_reducible]
      instance CategoryTheory.End.monoid {C : Type u} [Category.{v, u} C] {X : C} :

      Endomorphisms of an object form a monoid

      Equations
      • One or more equations did not get rendered due to their size.
      @[instance_reducible]
      instance CategoryTheory.End.instSMulHom {C : Type u} [Category.{v, u} C] {X Y : C} :
      SMul (End Y) (X ⟶ Y)
      Equations
      theorem CategoryTheory.End.smul_right {C : Type u} [Category.{v, u} C] {X Y : C} {r : End Y} {f : X ⟶ Y} :
      @[instance_reducible]
      instance CategoryTheory.End.mulActionRight {C : Type u} [Category.{v, u} C] {X Y : C} :
      MulAction (End Y) (X ⟶ Y)
      Equations
      @[instance_reducible]
      Equations
      @[instance_reducible]
      instance CategoryTheory.End.group {C : Type u} [Groupoid C] (X : C) :

      In a groupoid, endomorphisms form a group

      Equations
      • One or more equations did not get rendered due to their size.
      structure CategoryTheory.Aut {C : Type u} [Category.{v, u} C] (X : C) :

      Automorphisms of an object in a category.

      The order of arguments in multiplication agrees with Function.comp, not with CategoryTheory.CategoryStruct.comp.

      • of :: (
        • asIso : X ≅ X

          the underlying isomorphism of an automorphism

      • )
      Instances For
        theorem CategoryTheory.Aut.ext_iff {C : Type u} {inst✝ : Category.{v, u} C} {X : C} {x y : Aut X} :
        x = y ↔ x.asIso = y.asIso
        theorem CategoryTheory.Aut.ext {C : Type u} {inst✝ : Category.{v, u} C} {X : C} {x y : Aut X} (asIso : x.asIso = y.asIso) :
        x = y
        @[implicit_reducible]
        def CategoryTheory.Aut.isoEquiv {C : Type u} [Category.{v, u} C] {X : C} :
        Aut X ≃ (X ≅ X)

        The bijection Aut X ≃ (X ≅ X).

        Equations
        Instances For
          @[simp]
          theorem CategoryTheory.Aut.isoEquiv_symm_apply_asIso {C : Type u} [Category.{v, u} C] {X : C} (asIso : X ≅ X) :
          (isoEquiv.symm asIso).asIso = asIso
          @[simp]
          theorem CategoryTheory.Aut.isoEquiv_apply {C : Type u} [Category.{v, u} C] {X : C} (self : Aut X) :
          isoEquiv self = self.asIso
          @[instance_reducible]
          Equations
          @[instance_reducible]
          instance CategoryTheory.Aut.instOne {C : Type u} [Category.{v, u} C] (X : C) :
          One (Aut X)
          Equations
          @[simp]
          @[instance_reducible]
          instance CategoryTheory.Aut.instInv {C : Type u} [Category.{v, u} C] (X : C) :
          Inv (Aut X)
          Equations
          @[simp]
          theorem CategoryTheory.Aut.inv_asIso {C : Type u} [Category.{v, u} C] (X : C) (e : Aut X) :
          @[instance_reducible]
          instance CategoryTheory.Aut.instMul {C : Type u} [Category.{v, u} C] (X : C) :
          Mul (Aut X)
          Equations
          @[simp]
          theorem CategoryTheory.Aut.mul_asIso {C : Type u} [Category.{v, u} C] (X : C) (x y : Aut X) :
          @[instance_reducible]
          instance CategoryTheory.Aut.instGroup {C : Type u} [Category.{v, u} C] (X : C) :
          Equations
          • One or more equations did not get rendered due to their size.
          @[deprecated CategoryTheory.Aut.mul_asIso (since := "2026-09-12")]
          theorem CategoryTheory.Aut.Aut_mul_def {C : Type u} [Category.{v, u} C] (X : C) (x y : Aut X) :

          Alias of CategoryTheory.Aut.mul_asIso.

          @[deprecated CategoryTheory.Aut.inv_asIso (since := "2026-09-12")]
          theorem CategoryTheory.Aut.Aut_inv_def {C : Type u} [Category.{v, u} C] (X : C) (e : Aut X) :

          Alias of CategoryTheory.Aut.inv_asIso.

          The inclusion of Aut X in End X as a monoid homomorphism.

          Equations
          Instances For
            @[simp]

            Units in the monoid of endomorphisms of an object are (multiplicatively) equivalent to automorphisms of that object.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              def CategoryTheory.Aut.autMulEquivOfIso {C : Type u} [Category.{v, u} C] {X Y : C} (h : X ≅ Y) :

              Isomorphisms induce isomorphisms of the automorphism group

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                @[implicit_reducible]
                def CategoryTheory.Functor.mapEnd {C : Type u} [Category.{v, u} C] (X : C) {D : Type u'} [Category.{v', u'} D] (f : Functor C D) :
                End X →* End (f.obj X)

                f.map as a monoid hom between endomorphism monoids.

                Equations
                Instances For
                  @[simp]
                  theorem CategoryTheory.Functor.mapEnd_apply_asHom {C : Type u} [Category.{v, u} C] (X : C) {D : Type u'} [Category.{v', u'} D] (f : Functor C D) (e : End X) :
                  ((mapEnd X f) e).asHom = f.map e.asHom
                  @[implicit_reducible]
                  def CategoryTheory.Functor.mapAut {C : Type u} [Category.{v, u} C] (X : C) {D : Type u'} [Category.{v', u'} D] (f : Functor C D) :
                  Aut X →* Aut (f.obj X)

                  f.mapIso as a group hom between automorphism groups.

                  Equations
                  Instances For
                    @[simp]
                    theorem CategoryTheory.Functor.mapAut_apply_asIso {C : Type u} [Category.{v, u} C] (X : C) {D : Type u'} [Category.{v', u'} D] (f : Functor C D) (e : Aut X) :
                    ((mapAut X f) e).asIso = f.mapIso e.asIso
                    noncomputable def CategoryTheory.Functor.FullyFaithful.mulEquivEnd {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {f : Functor C D} (hf : f.FullyFaithful) (X : C) :
                    End X ≃* End (f.obj X)

                    mulEquivEnd as an isomorphism between endomorphism monoids.

                    Equations
                    Instances For
                      @[simp]
                      theorem CategoryTheory.Functor.FullyFaithful.mulEquivEnd_symm_apply_asHom {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {f : Functor C D} (hf : f.FullyFaithful) (X : C) (a✝ : End (f.obj X)) :
                      ((hf.mulEquivEnd X).symm a✝).asHom = hf.preimage a✝.asHom
                      @[simp]
                      theorem CategoryTheory.Functor.FullyFaithful.mulEquivEnd_apply_asHom {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {f : Functor C D} (hf : f.FullyFaithful) (X : C) (a✝ : End X) :
                      ((hf.mulEquivEnd X) a✝).asHom = f.map a✝.asHom

                      mulEquivAut as an isomorphism between automorphism groups.

                      Equations
                      Instances For
                        def CategoryTheory.InducedCategory.endEquiv {C : Type u} [Category.{v, u} C] {D : Type u_1} {F : D → C} {X : InducedCategory C F} :
                        End X ≃* End (F X)

                        The multiplicative bijection End X ≃* End (F X) when X : InducedCategory C F.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          @[simp]
                          theorem CategoryTheory.InducedCategory.endEquiv_apply_asHom {C : Type u} [Category.{v, u} C] {D : Type u_1} {F : D → C} {X : InducedCategory C F} (a✝ : End X) :
                          (endEquiv a✝).asHom = a✝.asHom.hom
                          @[simp]
                          theorem CategoryTheory.InducedCategory.endEquiv_symm_apply_asHom_hom {C : Type u} [Category.{v, u} C] {D : Type u_1} {F : D → C} {X : InducedCategory C F} (a✝ : End (F X)) :