Documentation

Mathlib.CategoryTheory.FintypeCat

The category of finite types. #

We define the category of finite types, denoted FintypeCat as the full subcategory of types with a Finite instance.

We also define FintypeCat.Skeleton, the standard skeleton of FintypeCat whose objects are Fin n for n : ℕ. We prove that the obvious inclusion functor FintypeCat.SkeletonFintypeCat is an equivalence of categories in FintypeCat.Skeleton.equivalence. We prove that FintypeCat.Skeleton is a skeleton of FintypeCat in FintypeCat.isSkeleton.

@[reducible, inline]
abbrev FintypeCat :
Type (u_1 + 1)

The category of finite types.

Instances For
    @[reducible, inline]
    abbrev FintypeCat.of (X : Type u_1) [Finite X] :

    Construct a term of FintypeCat from a type endowed with a Finite instance.

    Instances For
      @[implicit_reducible]
      @[implicit_reducible]
      @[implicit_reducible]
      noncomputable def FintypeCat.fintype {X : FintypeCat} :

      A Fintype instance on objects on FintypeCat, that should be turned on as needed. Prefer the Finite instance if possible.

      Instances For
        @[reducible, inline]

        The fully faithful embedding of FintypeCat into the category of types.

        Instances For
          @[simp]
          theorem FintypeCat.incl_map {X✝ Y✝ : CategoryTheory.InducedCategory (Type u_1) CategoryTheory.ObjectProperty.FullSubcategory.obj} (f : X✝ Y✝) (a✝ : X✝.obj) :
          incl.map f a✝ = f.hom a✝
          @[simp]
          theorem FintypeCat.hom_apply {X Y : FintypeCat} (f : X Y) (x : X.obj) :
          def FintypeCat.homMk {X Y : FintypeCat} (f : X.objY.obj) :
          X Y

          Constructor for morphisms in FintypeCat.

          Instances For
            @[simp]
            theorem FintypeCat.homMk_apply {X Y : FintypeCat} (f : X.objY.obj) (x : X.obj) :
            @[simp]
            theorem FintypeCat.comp_hom {X Y Z : FintypeCat} (f : X Y) (g : Y Z) :
            @[simp]
            theorem FintypeCat.homMk_eq_comp_iff {X Y Z : FintypeCat} (f : X.objY.obj) (g : Y.objZ.obj) (h : X.objZ.obj) :

            Equivalences between finite types are the same as isomorphisms in FintypeCat.

            Instances For

              The "standard" skeleton for FintypeCat. This is the full subcategory of FintypeCat spanned by objects of the form ULift (Fin n) for n : ℕ. We parameterize the objects of FintypeCat.Skeleton directly as ULift, as the type ULift (Fin m) ≃ ULift (Fin n) is nonempty if and only if n = m. Specifying universes, Skeleton : Type u is a small skeletal category equivalent to FintypeCat.{u}.

              Instances For

                Given any natural number n, this creates the associated object of FintypeCat.Skeleton.

                Instances For

                  Given any object of FintypeCat.Skeleton, this returns the associated natural number.

                  Instances For
                    theorem FintypeCat.Skeleton.ext (X Y : Skeleton) :
                    X.len = Y.lenX = Y

                    The canonical fully faithful embedding of FintypeCat.Skeleton into FintypeCat.

                    Instances For

                      The equivalence between FintypeCat.Skeleton and FintypeCat.

                      Instances For

                        If u and v are two arbitrary universes, we may construct a functor uSwitch.{u, v} : FintypeCat.{u} ⥤ FintypeCat.{v} by sending X : FintypeCat.{u} to ULift.{v} (Fin (Fintype.card X)).

                        Instances For
                          noncomputable def FintypeCat.uSwitchEquiv (X : FintypeCat) :

                          Switching the universe of an object X : FintypeCat.{u} does not change X up to equivalence of types. This is natural in the sense that it commutes with uSwitch.map f for any f : X ⟶ Y in FintypeCat.{u}.

                          Instances For

                            uSwitch.{u, v} is an equivalence of categories with quasi-inverse uSwitch.{v, u}.

                            Instances For