Documentation

Mathlib.CategoryTheory.SingleObj

Single-object category #

Single object category with a given monoid of endomorphisms. It is defined to facilitate transferring some definitions and lemmas (e.g., conjugacy etc.) from category theory to monoids and groups.

Main definitions #

Given a type M with a monoid structure, SingleObj M is Unit type with Category structure such that End (SingleObj M).star is the monoid M. This can be extended to a functor MonCat โฅค Cat.

If M is a group, then SingleObj M is a groupoid.

An element x : M can be reinterpreted as an element of End (SingleObj.star M) using SingleObj.toEnd.

Implementation notes #

@[reducible, inline]
abbrev CategoryTheory.SingleObj :
Type u_1 โ†’ Type

Abbreviation that allows writing CategoryTheory.SingleObj rather than Quiver.SingleObj.

Instances For
    @[implicit_reducible]

    One and flip (*) become id and comp for morphisms of the single object category.

    @[implicit_reducible]

    Monoid laws become category laws for the single object category.

    @[implicit_reducible]

    If M is finite and in universe zero, then SingleObj M is a FinCategory.

    @[implicit_reducible]

    Groupoid structure on SingleObj M.

    @[reducible, inline]

    Abbreviation that allows writing CategoryTheory.SingleObj.star rather than Quiver.SingleObj.star.

    Instances For

      The endomorphisms monoid of the only object in SingleObj M is equivalent to the original monoid M.

      Instances For

        There is a 1-1 correspondence between monoid homomorphisms M โ†’ N and functors between the corresponding single-object categories. It means that SingleObj is a fully faithful functor.

        Instances For
          theorem CategoryTheory.SingleObj.mapHom_comp {M : Type u} [Monoid M] {N : Type v} [Monoid N] (f : M โ†’* N) {P : Type w} [Monoid P] (g : N โ†’* P) :
          (mapHom M P) (g.comp f) = ((mapHom M N) f).comp ((mapHom N P) g)
          def CategoryTheory.SingleObj.differenceFunctor {G : Type u} [Group G] {C : Type v} [Category.{w, v} C] (f : C โ†’ G) :

          Given a function f : C โ†’ G from a category to a group, we get a functor C โฅค G sending any morphism x โŸถ y to f y * (f x)โปยน.

          Instances For
            @[simp]
            theorem CategoryTheory.SingleObj.differenceFunctor_obj {G : Type u} [Group G] {C : Type v} [Category.{w, v} C] (f : C โ†’ G) (xโœ : C) :
            (differenceFunctor f).obj xโœ = ()
            @[simp]
            theorem CategoryTheory.SingleObj.differenceFunctor_map {G : Type u} [Group G] {C : Type v} [Category.{w, v} C] (f : C โ†’ G) {x y : C} (xโœ : x โŸถ y) :
            (differenceFunctor f).map xโœ = f y * (f x)โปยน
            def CategoryTheory.SingleObj.functor {M : Type u} [Monoid M] {C : Type v} [Category.{w, v} C] {X : C} (f : M โ†’* End X) :

            A monoid homomorphism f: M โ†’ End X into the endomorphisms of an object X of a category C induces a functor SingleObj M โฅค C.

            Instances For
              @[simp]
              theorem CategoryTheory.SingleObj.functor_obj {M : Type u} [Monoid M] {C : Type v} [Category.{w, v} C] {X : C} (f : M โ†’* End X) (xโœ : SingleObj M) :
              (functor f).obj xโœ = X
              @[simp]
              theorem CategoryTheory.SingleObj.functor_map {M : Type u} [Monoid M] {C : Type v} [Category.{w, v} C] {X : C} (f : M โ†’* End X) {Xโœ Yโœ : SingleObj M} (a : Xโœ โŸถ Yโœ) :
              (functor f).map a = f a
              def CategoryTheory.SingleObj.natTrans {M : Type u} [Monoid M] {C : Type v} [Category.{w, v} C] {F G : Functor (SingleObj M) C} (u : F.obj (star M) โŸถ G.obj (star M)) (h : โˆ€ (a : M), CategoryStruct.comp (F.map a) u = CategoryStruct.comp u (G.map a)) :

              Construct a natural transformation between functors SingleObj M โฅค C by giving a compatible morphism SingleObj.star M.

              Instances For
                @[simp]
                theorem CategoryTheory.SingleObj.natTrans_app {M : Type u} [Monoid M] {C : Type v} [Category.{w, v} C] {F G : Functor (SingleObj M) C} (u : F.obj (star M) โŸถ G.obj (star M)) (h : โˆ€ (a : M), CategoryStruct.comp (F.map a) u = CategoryStruct.comp u (G.map a)) (xโœ : SingleObj M) :
                (natTrans u h).app xโœ = u
                @[reducible, inline]

                Reinterpret a monoid homomorphism f : M โ†’ N as a functor (single_obj M) โฅค (single_obj N). See also CategoryTheory.SingleObj.mapHom for an equivalence between these types.

                Instances For
                  @[simp]
                  theorem MonoidHom.comp_toFunctor {M : Type u} {N : Type v} [Monoid M] [Monoid N] (f : M โ†’* N) {P : Type w} [Monoid P] (g : N โ†’* P) :

                  Reinterpret a monoid isomorphism f : M โ‰ƒ* N as an equivalence SingleObj M โ‰Œ SingleObj N.

                  Instances For
                    @[simp]
                    theorem MulEquiv.toSingleObjEquiv_functor_map {M : Type u} {N : Type v} [Monoid M] [Monoid N] (e : M โ‰ƒ* N) {Xโœ Yโœ : CategoryTheory.SingleObj M} (a : M) :
                    @[simp]
                    theorem MulEquiv.toSingleObjEquiv_inverse_map {M : Type u} {N : Type v} [Monoid M] [Monoid N] (e : M โ‰ƒ* N) {Xโœ Yโœ : CategoryTheory.SingleObj N} (a : N) :

                    The units in a monoid are (multiplicatively) equivalent to the automorphisms of star when we think of the monoid as a single-object category.

                    Instances For
                      @[simp]
                      theorem Units.toAut_hom (M : Type u) [Monoid M] (x : Mหฃ) :

                      The fully faithful functor from MonCat to Cat.

                      Instances For