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.Skeleton ⥤ FintypeCat
is an equivalence of categories in
FintypeCat.Skeleton.equivalence
.
We prove that FintypeCat.Skeleton
is a skeleton of FintypeCat
in FintypeCat.isSkeleton
.
The category of finite types.
Equations
Instances For
Equations
- FintypeCat.instCoeSortType = CategoryTheory.Bundled.coeSort
Equations
- FintypeCat.instInhabited = { default := FintypeCat.of PEmpty.{?u.3 + 1} }
Equations
- FintypeCat.instFintypeα = X.str
Equations
- FintypeCat.instCategory = CategoryTheory.InducedCategory.category CategoryTheory.Bundled.α
The fully faithful embedding of FintypeCat
into the category of types.
Equations
- FintypeCat.incl = CategoryTheory.inducedFunctor CategoryTheory.Bundled.α
Instances For
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
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
- FintypeCat.Skeleton.mk = ULift.up
Instances For
Equations
- FintypeCat.Skeleton.instInhabited = { default := FintypeCat.Skeleton.mk 0 }
Given any object of Fintype.Skeleton
, this returns the associated natural number.
Equations
- FintypeCat.Skeleton.len = ULift.down
Instances For
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
- FintypeCat.Skeleton.equivalence = FintypeCat.Skeleton.incl.asEquivalence
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
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
- X.uSwitchEquiv = Equiv.ulift.trans (Fintype.equivFin ↑X).symm
Instances For
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.