The category Discrete PUnit #
We define star : C ⥤ Discrete PUnit sending everything to PUnit.star,
show that any two functors to Discrete PUnit are naturally isomorphic,
and construct the equivalence (Discrete PUnit ⥤ C) ≌ C.
@[simp]
theorem
CategoryTheory.Functor.star_map_down_down
(C : Type u)
[CategoryTheory.Category.{v, u}    C]
 :
∀ {X Y : C} (x : X ⟶ Y),
  (_ : { as := PUnit.unit }.as = { as := PUnit.unit }.as) = (_ : { as := PUnit.unit }.as = { as := PUnit.unit }.as)
@[simp]
theorem
CategoryTheory.Functor.star_obj_as
(C : Type u)
[CategoryTheory.Category.{v, u}    C]
 :
∀ (x : C), ((CategoryTheory.Functor.star C).toPrefunctor.obj x).as = PUnit.unit
The constant functor sending everything to PUnit.star.
Equations
- CategoryTheory.Functor.star C = (CategoryTheory.Functor.const C).toPrefunctor.obj { as := PUnit.unit }
Instances For
@[simp]
theorem
CategoryTheory.Functor.punitExt_inv_app_down_down
{C : Type u}
[CategoryTheory.Category.{v, u}    C]
(F : CategoryTheory.Functor C (CategoryTheory.Discrete PUnit.{w + 1}     ))
(G : CategoryTheory.Functor C (CategoryTheory.Discrete PUnit.{w + 1}     ))
(X : C)
 :
@[simp]
theorem
CategoryTheory.Functor.punitExt_hom_app_down_down
{C : Type u}
[CategoryTheory.Category.{v, u}    C]
(F : CategoryTheory.Functor C (CategoryTheory.Discrete PUnit.{w + 1}     ))
(G : CategoryTheory.Functor C (CategoryTheory.Discrete PUnit.{w + 1}     ))
(X : C)
 :
def
CategoryTheory.Functor.punitExt
{C : Type u}
[CategoryTheory.Category.{v, u}    C]
(F : CategoryTheory.Functor C (CategoryTheory.Discrete PUnit.{w + 1}     ))
(G : CategoryTheory.Functor C (CategoryTheory.Discrete PUnit.{w + 1}     ))
 :
F ≅ G
Any two functors to Discrete PUnit are isomorphic.
Equations
- CategoryTheory.Functor.punitExt F G = CategoryTheory.NatIso.ofComponents fun (X : C) => CategoryTheory.eqToIso (_ : F.toPrefunctor.obj X = G.toPrefunctor.obj X)
Instances For
theorem
CategoryTheory.Functor.punit_ext'
{C : Type u}
[CategoryTheory.Category.{v, u}    C]
(F : CategoryTheory.Functor C (CategoryTheory.Discrete PUnit.{w + 1}     ))
(G : CategoryTheory.Functor C (CategoryTheory.Discrete PUnit.{w + 1}     ))
 :
F = G
Any two functors to Discrete PUnit are equal.
You probably want to use punitExt instead of this.
@[inline, reducible]
The functor from Discrete PUnit sending everything to the given object.
Equations
- CategoryTheory.Functor.fromPUnit X = (CategoryTheory.Functor.const (CategoryTheory.Discrete PUnit.{w + 1} )).toPrefunctor.obj X
Instances For
@[simp]
theorem
CategoryTheory.Functor.equiv_functor_map
{C : Type u}
[CategoryTheory.Category.{v, u}    C]
 :
∀ {X Y : CategoryTheory.Functor (CategoryTheory.Discrete PUnit.{w + 1}     ) C} (θ : X ⟶ Y),
  CategoryTheory.Functor.equiv.functor.toPrefunctor.map θ = θ.app { as := PUnit.unit }
@[simp]
theorem
CategoryTheory.Functor.equiv_functor_obj
{C : Type u}
[CategoryTheory.Category.{v, u}    C]
(F : CategoryTheory.Functor (CategoryTheory.Discrete PUnit.{w + 1}     ) C)
 :
CategoryTheory.Functor.equiv.functor.toPrefunctor.obj F = F.toPrefunctor.obj { as := PUnit.unit }
@[simp]
theorem
CategoryTheory.Functor.equiv_inverse
{C : Type u}
[CategoryTheory.Category.{v, u}    C]
 :
CategoryTheory.Functor.equiv.inverse = CategoryTheory.Functor.const (CategoryTheory.Discrete PUnit.{w + 1}     )
@[simp]
theorem
CategoryTheory.Functor.equiv_counitIso
{C : Type u}
[CategoryTheory.Category.{v, u}    C]
 :
CategoryTheory.Functor.equiv.counitIso = CategoryTheory.NatIso.ofComponents CategoryTheory.Iso.refl
@[simp]
theorem
CategoryTheory.Functor.equiv_unitIso
{C : Type u}
[CategoryTheory.Category.{v, u}    C]
 :
CategoryTheory.Functor.equiv.unitIso =   CategoryTheory.NatIso.ofComponents fun (X : CategoryTheory.Functor (CategoryTheory.Discrete PUnit.{w + 1}     ) C) =>
    CategoryTheory.Discrete.natIso fun (i : CategoryTheory.Discrete PUnit.{w + 1}     ) =>
      CategoryTheory.Iso.refl
        (((CategoryTheory.Functor.id
                      (CategoryTheory.Functor (CategoryTheory.Discrete PUnit.{w + 1}     ) C)).toPrefunctor.obj
                X).toPrefunctor.obj
          i)
Functors from Discrete PUnit are equivalent to the category itself.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
CategoryTheory.equiv_punit_iff_unique
(C : Type u)
[CategoryTheory.Category.{v, u}    C]
 :
Nonempty (C ≌ CategoryTheory.Discrete PUnit.{w + 1}     ) ↔ Nonempty C ∧ ∀ (x y : C), Nonempty (Unique (x ⟶ y))
A category being equivalent to PUnit is equivalent to it having a unique morphism between
any two objects. (In fact, such a category is also a groupoid;
see CategoryTheory.Groupoid.ofHomUnique)