Documentation

Mathlib.CategoryTheory.FintypeCat

The category of finite types. #

We define the category of finite types, denoted FintypeCat as (bundled) types with a Fintype 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.

def FintypeCat :
Type (u_1 + 1)

The category of finite types.

Equations
Instances For
    Equations

    Construct a bundled FintypeCat from the underlying type and typeclass.

    Equations
    Instances For
      Equations
      • FintypeCat.instFintypeα = X.str

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

      Equations
      Instances For
        @[simp]
        theorem FintypeCat.incl_map {X✝ Y✝ : CategoryTheory.InducedCategory (Type u_1) CategoryTheory.Bundled.α} (f : X✝ Y✝) (a✝ : X✝) :
        FintypeCat.incl.map f a✝ = f a✝
        @[simp]
        @[simp]
        theorem FintypeCat.comp_apply {X Y Z : FintypeCat} (f : X Y) (g : Y Z) (x : X) :
        @[simp]
        theorem FintypeCat.hom_inv_id_apply {X Y : FintypeCat} (f : X Y) (x : X) :
        f.inv (f.hom x) = x
        @[simp]
        theorem FintypeCat.inv_hom_id_apply {X Y : FintypeCat} (f : X Y) (y : Y) :
        f.hom (f.inv y) = y
        theorem FintypeCat.hom_ext {X Y : FintypeCat} (f g : X Y) (h : ∀ (x : X), f x = g x) :
        f = g
        def FintypeCat.equivEquivIso {A B : FintypeCat} :
        A B (A B)

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

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem FintypeCat.equivEquivIso_apply_inv {A B : FintypeCat} (e : A B) (a : B) :
          (FintypeCat.equivEquivIso e).inv a = e.symm a
          @[simp]
          theorem FintypeCat.equivEquivIso_apply_hom {A B : FintypeCat} (e : A B) (a : A) :
          (FintypeCat.equivEquivIso e).hom a = e a
          @[simp]
          theorem FintypeCat.equivEquivIso_symm_apply_apply {A B : FintypeCat} (i : A B) (a✝ : A) :
          (FintypeCat.equivEquivIso.symm i) a✝ = i.hom a✝
          @[simp]
          theorem FintypeCat.equivEquivIso_symm_apply_symm_apply {A B : FintypeCat} (i : A B) (a✝ : B) :
          (FintypeCat.equivEquivIso.symm i).symm a✝ = i.inv a✝

          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 Fintype.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 Fintype.{u}.

          Equations
          Instances For

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

            Equations
            Instances For

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

              Equations
              Instances For
                theorem FintypeCat.Skeleton.ext (X Y : FintypeCat.Skeleton) :
                X.len = Y.lenX = Y
                Equations
                • One or more equations did not get rendered due to their size.

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

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  The equivalence between Fintype.Skeleton and Fintype.

                  Equations
                  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)).

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      noncomputable def FintypeCat.uSwitchEquiv (X : FintypeCat) :
                      (FintypeCat.uSwitch.obj X) X

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

                      Equations
                      Instances For
                        theorem FintypeCat.uSwitchEquiv_naturality {X Y : FintypeCat} (f : X Y) (x : (FintypeCat.uSwitch.obj X)) :
                        f (X.uSwitchEquiv x) = Y.uSwitchEquiv (FintypeCat.uSwitch.map f x)
                        theorem FintypeCat.uSwitchEquiv_symm_naturality {X Y : FintypeCat} (f : X Y) (x : X) :
                        FintypeCat.uSwitch.map f (X.uSwitchEquiv.symm x) = Y.uSwitchEquiv.symm (f x)
                        theorem FintypeCat.uSwitch_map_uSwitch_map {X Y : FintypeCat} (f : X Y) :
                        FintypeCat.uSwitch.map (FintypeCat.uSwitch.map f) = CategoryTheory.CategoryStruct.comp (FintypeCat.equivEquivIso ((FintypeCat.uSwitch.obj X).uSwitchEquiv.trans X.uSwitchEquiv)).hom (CategoryTheory.CategoryStruct.comp f (FintypeCat.equivEquivIso ((FintypeCat.uSwitch.obj Y).uSwitchEquiv.trans Y.uSwitchEquiv)).inv)

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

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          theorem FunctorToFintypeCat.naturality {C : Type u} [CategoryTheory.Category.{v, u} C] (F G : CategoryTheory.Functor C FintypeCat) {X Y : C} (σ : F G) (f : X Y) (x : (F.obj X)) :
                          σ.app Y (F.map f x) = G.map f (σ.app X x)