Documentation

Mathlib.CategoryTheory.Endomorphism

Endomorphisms #

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

For each X : C, we provide CategoryTheory.End X := X โŸถ X with a monoid structure, and CategoryTheory.Aut X := X โ‰… X with a group structure.

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

Instances For
    @[implicit_reducible]
    instance CategoryTheory.End.one {C : Type u} [CategoryStruct.{v, u} C] (X : C) :
    One (End X)
    @[implicit_reducible]
    instance CategoryTheory.End.inhabited {C : Type u} [CategoryStruct.{v, u} C] (X : C) :
    Inhabited (End X)
    @[implicit_reducible]
    instance CategoryTheory.End.mul {C : Type u} [CategoryStruct.{v, u} C] (X : C) :
    Mul (End X)

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

    @[reducible, inline]
    abbrev CategoryTheory.End.of {C : Type u} [CategoryStruct.{v, u} C] {X : C} (f : X โŸถ X) :
    End X

    Assist the typechecker by expressing a morphism X โŸถ X as a term of CategoryTheory.End X.

    Instances For
      @[reducible, inline]
      abbrev CategoryTheory.End.asHom {C : Type u} [CategoryStruct.{v, u} C] {X : C} (f : End X) :

      Assist the typechecker by expressing an endomorphism f : CategoryTheory.End X as a term of X โŸถ X.

      Instances For
        @[simp]
        theorem CategoryTheory.End.mul_def {C : Type u} [CategoryStruct.{v, u} C] {X : C} (xs ys : End X) :
        xs * ys = CategoryStruct.comp ys xs
        theorem CategoryTheory.End.ext {C : Type u} [CategoryStruct.{v, u} C] {X : C} {x y : End X} (h : x.asHom = y.asHom) :
        x = y
        @[implicit_reducible]
        instance CategoryTheory.End.monoid {C : Type u} [Category.{v, u} C] {X : C} :

        Endomorphisms of an object form a monoid

        @[implicit_reducible]
        theorem CategoryTheory.End.smul_right {C : Type u} [Category.{v, u} C] {X Y : C} {r : End Y} {f : X โŸถ Y} :
        r โ€ข f = CategoryStruct.comp f r
        @[implicit_reducible]
        instance CategoryTheory.End.group {C : Type u} [Groupoid C] (X : C) :

        In a groupoid, endomorphisms form a group

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

        Instances For
          theorem CategoryTheory.Aut.ext {C : Type u} [Category.{v, u} C] {X : C} {ฯ†โ‚ ฯ†โ‚‚ : Aut X} (h : ฯ†โ‚.hom = ฯ†โ‚‚.hom) :
          ฯ†โ‚ = ฯ†โ‚‚
          theorem CategoryTheory.Aut.ext_iff {C : Type u} [Category.{v, u} C] {X : C} {ฯ†โ‚ ฯ†โ‚‚ : Aut X} :
          ฯ†โ‚ = ฯ†โ‚‚ โ†” ฯ†โ‚.hom = ฯ†โ‚‚.hom
          @[implicit_reducible]
          instance CategoryTheory.Aut.inhabited {C : Type u} [Category.{v, u} C] (X : C) :
          Inhabited (Aut X)
          @[implicit_reducible]
          instance CategoryTheory.Aut.instGroup {C : Type u} [Category.{v, u} C] (X : C) :

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

          Instances For

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

            Instances For
              @[simp]
              theorem CategoryTheory.Aut.toEnd_apply {C : Type u} [Category.{v, u} C] (X : C) (aโœ : Aut X) :
              (toEnd X) aโœ = โ†‘((unitsEndEquivAut X).symm aโœ)

              Isomorphisms induce isomorphisms of the automorphism group

              Instances For
                def CategoryTheory.Functor.mapEnd {C : Type u} [Category.{v, u} C] (X : C) {D : Type u'} [Category.{v', u'} D] (f : Functor C D) :

                f.map as a monoid hom between endomorphism monoids.

                Instances For
                  @[simp]
                  theorem CategoryTheory.Functor.mapEnd_apply {C : Type u} [Category.{v, u} C] (X : C) {D : Type u'} [Category.{v', u'} D] (f : Functor C D) (aโœ : X โŸถ X) :
                  (mapEnd X f) aโœ = f.map aโœ
                  def CategoryTheory.Functor.mapAut {C : Type u} [Category.{v, u} C] (X : C) {D : Type u'} [Category.{v', u'} D] (f : Functor C D) :

                  f.mapIso as a group hom between automorphism groups.

                  Instances For
                    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) :

                    mulEquivEnd as an isomorphism between endomorphism monoids.

                    Instances For
                      @[simp]
                      theorem CategoryTheory.Functor.FullyFaithful.mulEquivEnd_symm_apply {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {f : Functor C D} (hf : f.FullyFaithful) (X : C) (fโœ : f.obj X โŸถ f.obj X) :
                      (hf.mulEquivEnd X).symm fโœ = hf.preimage fโœ
                      @[simp]
                      theorem CategoryTheory.Functor.FullyFaithful.mulEquivEnd_apply {C : Type u} [Category.{v, u} C] {D : Type u'} [Category.{v', u'} D] {f : Functor C D} (hf : f.FullyFaithful) (X : C) (aโœ : X โŸถ X) :
                      (hf.mulEquivEnd X) aโœ = f.map aโœ

                      mulEquivAut as an isomorphism between automorphism groups.

                      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.

                        Instances For
                          @[simp]
                          theorem CategoryTheory.InducedCategory.endEquiv_symm_apply_hom {C : Type u} [Category.{v, u} C] {D : Type u_1} {F : D โ†’ C} {X : InducedCategory C F} (f : F X โŸถ F X) :
                          (endEquiv.symm f).hom = f
                          @[simp]
                          theorem CategoryTheory.InducedCategory.endEquiv_apply {C : Type u} [Category.{v, u} C] {D : Type u_1} {F : D โ†’ C} {X : InducedCategory C F} (f : X โŸถ X) :