Finite categories #
A category is finite in this sense if it has finitely many objects, and finitely many morphisms.
Implementation #
Prior to #14046, FinCategory
required a DecidableEq
instance on the object and morphism types.
This does not seem to have had any practical payoff (i.e. making some definition constructive)
so we have removed these requirements to avoid
having to supply instances or delay with non-defeq conflicts between instances.
Equations
- CategoryTheory.discreteFintype = Fintype.ofEquiv α CategoryTheory.discreteEquiv.symm
instance
CategoryTheory.discreteHomFintype
{α : Type u_1}
(X : CategoryTheory.Discrete α)
(Y : CategoryTheory.Discrete α)
:
Equations
- CategoryTheory.discreteHomFintype X Y = ULift.fintype (PLift (X.as = Y.as))
Equations
- CategoryTheory.finCategoryDiscreteOfFintype J = { fintypeObj := inferInstance, fintypeHom := inferInstance }
instance
CategoryTheory.finCategoryOpposite
{J : Type v}
[CategoryTheory.SmallCategory J]
[CategoryTheory.FinCategory J]
:
The opposite of a finite category is finite.
Equations
- One or more equations did not get rendered due to their size.
instance
CategoryTheory.finCategoryUlift
{J : Type v}
[CategoryTheory.SmallCategory J]
[CategoryTheory.FinCategory J]
:
Applying ULift
to morphisms and objects of a category preserves finiteness.
Equations
- CategoryTheory.finCategoryUlift = { fintypeObj := ULift.fintype J, fintypeHom := fun (x x_1 : CategoryTheory.ULiftHom (ULift.{w, v} J)) => ULift.fintype (x.objDown ⟶ x_1.objDown) }