File: Mathlib/CategoryTheory/FintypeCat.lean

full_name: FintypeCat
code: /-- The category of finite types. -/
def FintypeCat 
goal: Type (u_1 + 1)

full_name: FintypeCat.instCoeSortType
code: instance : CoeSort FintypeCat Type* 
goal: CoeSort FintypeCat (Type u_1)

full_name: FintypeCat.of
code: /-- Construct a bundled `FintypeCat` from the underlying type and typeclass. -/
def of (X : Type*) [Fintype X] : FintypeCat 
goal: FintypeCat

full_name: FintypeCat.instInhabited
code: instance : Inhabited FintypeCat 
goal: Inhabited FintypeCat

full_name: FintypeCat.instFintypeα
code: instance {X : FintypeCat} : Fintype X 
goal: Fintype ↑X

full_name: FintypeCat.instCategory
code: instance : Category FintypeCat 
goal: CategoryTheory.Category.{u_1, u_1 + 1} FintypeCat

full_name: FintypeCat.incl
code: /-- The fully faithful embedding of `FintypeCat` into the category of types. -/
@[simps!]
def incl : FintypeCat ⥤ Type* 
goal: FintypeCat ⥤ Type u_1

full_name: FintypeCat.incl_map
code: /-- The fully faithful embedding of `FintypeCat` into the category of types. -/
@[simps!]
def incl : FintypeCat ⥤ Type* 
goal: ∀ {X Y : CategoryTheory.InducedCategory (Type u_1) CategoryTheory.Bundled.α} (f : X ⟶ Y) (a : ↑X),
  FintypeCat.incl.map f a = f a

full_name: FintypeCat.incl_obj
code: /-- The fully faithful embedding of `FintypeCat` into the category of types. -/
@[simps!]
def incl : FintypeCat ⥤ Type* 
goal: FintypeCat.incl.obj self = ↑self

full_name: FintypeCat.instFullIncl
code: instance : incl.Full 
goal: FintypeCat.incl.Full

full_name: FintypeCat.instFaithfulIncl
code: instance : incl.Faithful 
goal: FintypeCat.incl.Faithful

full_name: FintypeCat.concreteCategoryFintype
code: instance concreteCategoryFintype : ConcreteCategory FintypeCat 
goal: CategoryTheory.ConcreteCategory FintypeCat

full_name: FintypeCat.instFullForget
code: instance : (forget FintypeCat).Full 
goal: (CategoryTheory.forget FintypeCat).Full

full_name: FintypeCat.id_apply
code: @[simp]
theorem id_apply (X : FintypeCat) (x : X) : (𝟙 X : X → X) x = x 
goal: 𝟙 X x = x

full_name: FintypeCat.comp_apply
code: @[simp]
theorem comp_apply {X Y Z : FintypeCat} (f : X ⟶ Y) (g : Y ⟶ Z) (x : X) : (f ≫ g) x = g (f x) 
goal: (f ≫ g) x = g (f x)

full_name: FintypeCat.hom_inv_id_apply
code: @[simp]
lemma hom_inv_id_apply {X Y : FintypeCat} (f : X ≅ Y) (x : X) : f.inv (f.hom x) = x 
goal: f.inv (f.hom x) = x

full_name: FintypeCat.inv_hom_id_apply
code: @[simp]
lemma inv_hom_id_apply {X Y : FintypeCat} (f : X ≅ Y) (y : Y) : f.hom (f.inv y) = y 
goal: f.hom (f.inv y) = y

full_name: FintypeCat.hom_ext
code: @[ext]
lemma hom_ext {X Y : FintypeCat} (f g : X ⟶ Y) (h : ∀ x, f x = g x) : f = g 
goal: f = g

full_name: FintypeCat.equivEquivIso_apply_inv
code: /-- Equivalences between finite types are the same as isomorphisms in `FintypeCat`. -/
@[simps]
def equivEquivIso {A B : FintypeCat} : A ≃ B ≃ (A ≅ B) 
goal: (FintypeCat.equivEquivIso e).inv a = e.symm a

full_name: FintypeCat.equivEquivIso_symm_apply_apply
code: /-- Equivalences between finite types are the same as isomorphisms in `FintypeCat`. -/
@[simps]
def equivEquivIso {A B : FintypeCat} : A ≃ B ≃ (A ≅ B) 
goal: ∀ (a : ↑A), (FintypeCat.equivEquivIso.symm i) a = i.hom a

full_name: FintypeCat.equivEquivIso_symm_apply_symm_apply
code: /-- Equivalences between finite types are the same as isomorphisms in `FintypeCat`. -/
@[simps]
def equivEquivIso {A B : FintypeCat} : A ≃ B ≃ (A ≅ B) 
goal: ∀ (a : ↑B), (FintypeCat.equivEquivIso.symm i).symm a = i.inv a

full_name: FintypeCat.equivEquivIso
code: /-- Equivalences between finite types are the same as isomorphisms in `FintypeCat`. -/
@[simps]
def equivEquivIso {A B : FintypeCat} : A ≃ B ≃ (A ≅ B) 
goal: ↑A ≃ ↑B ≃ (A ≅ B)

full_name: FintypeCat.equivEquivIso_apply_hom
code: /-- Equivalences between finite types are the same as isomorphisms in `FintypeCat`. -/
@[simps]
def equivEquivIso {A B : FintypeCat} : A ≃ B ≃ (A ≅ B) 
goal: (FintypeCat.equivEquivIso e).hom a = e a

full_name: FintypeCat.Skeleton
code: /--
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}`.
-/
def Skeleton : Type u 
goal: Type u

full_name: FintypeCat.Skeleton.mk
code: /-- Given any natural number `n`, this creates the associated object of `Fintype.Skeleton`. -/
def mk : ℕ → Skeleton 
goal: ℕ → FintypeCat.Skeleton

full_name: FintypeCat.Skeleton.instInhabited
code: instance : Inhabited Skeleton 
goal: Inhabited FintypeCat.Skeleton

full_name: FintypeCat.Skeleton.len
code: /-- Given any object of `Fintype.Skeleton`, this returns the associated natural number. -/
def len : Skeleton → ℕ 
goal: FintypeCat.Skeleton → ℕ

full_name: FintypeCat.Skeleton.ext
code: @[ext]
theorem ext (X Y : Skeleton) : X.len = Y.len → X = Y 
goal: X.len = Y.len → X = Y

full_name: FintypeCat.Skeleton.instSmallCategory
code: instance : SmallCategory Skeleton.{u} 
goal: CategoryTheory.SmallCategory FintypeCat.Skeleton

full_name: FintypeCat.Skeleton.is_skeletal
code: theorem is_skeletal : Skeletal Skeleton.{u} 
goal: CategoryTheory.Skeletal FintypeCat.Skeleton

full_name: FintypeCat.Skeleton.incl
code: /-- The canonical fully faithful embedding of `Fintype.Skeleton` into `FintypeCat`. -/
def incl : Skeleton.{u} ⥤ FintypeCat.{u} 
goal: FintypeCat.Skeleton ⥤ FintypeCat

full_name: FintypeCat.Skeleton.instFullIncl
code: instance : incl.Full 
goal: FintypeCat.Skeleton.incl.Full

full_name: FintypeCat.Skeleton.instFaithfulIncl
code: instance : incl.Faithful 
goal: FintypeCat.Skeleton.incl.Faithful

full_name: FintypeCat.Skeleton.instEssSurjIncl
code: instance : incl.EssSurj 
goal: FintypeCat.Skeleton.incl.EssSurj

full_name: FintypeCat.Skeleton.instIsEquivalenceIncl
code: noncomputable instance : incl.IsEquivalence 
goal: FintypeCat.Skeleton.incl.IsEquivalence

full_name: FintypeCat.Skeleton.equivalence
code: /-- The equivalence between `Fintype.Skeleton` and `Fintype`. -/
noncomputable def equivalence : Skeleton ≌ FintypeCat 
goal: FintypeCat.Skeleton ≌ FintypeCat

full_name: FintypeCat.Skeleton.incl_mk_nat_card
code: @[simp]
theorem incl_mk_nat_card (n : ℕ) : Fintype.card (incl.obj (mk n)) = n 
goal: Fintype.card ↑(FintypeCat.Skeleton.incl.obj (FintypeCat.Skeleton.mk n)) = n

full_name: FintypeCat.isSkeleton
code: /-- `Fintype.Skeleton` is a skeleton of `Fintype`. -/
lemma isSkeleton : IsSkeletonOf FintypeCat Skeleton Skeleton.incl 
goal: CategoryTheory.IsSkeletonOf FintypeCat FintypeCat.Skeleton FintypeCat.Skeleton.incl