Home

圏の同一視

module category-theory.category-identity where
Imports
open import foundations.universe
open import foundations.identity-type
open import foundations.proposition
open import foundations.function-extensionality
open import foundations.set
open import foundations.proposition-h-level
open import category-theory.category
private variable o h : Level

module _  (e : FunExtAll) where
  isPropIsCategory : (𝒞 : CategoryData o h)  isProp (isCategory 𝒞)
  isPropIsCategory 𝒞 a b = q
    where
      open CategoryData 𝒞
      module a = isCategory a
      module b = isCategory b

      p1 : Id (∀ {A B} (f : Hom A B)  _) a.identˡ b.identˡ
      p1 = byFunExtImplicit e _ _ λ A  byFunExtImplicit e _ _ λ B  byFunExtType e _ _  f  a.is-set-hom _ f _ _)

      p2 : Id (∀ {A B} (f : Hom A B)  _) a.identʳ b.identʳ
      p2 = byFunExtImplicit e _ _ λ A  byFunExtImplicit e _ _ λ B  byFunExtType e _ _  f  a.is-set-hom _ f _ _)

      p3 : Id (∀ A  _) a.ident² b.ident²
      p3 = byFunExtType e _ _ λ A  a.is-set-hom _ _ _ _

      p4 : Id (∀ {A B C D} {f : Hom A B} {g} {h : Hom C D}  (h  g)  f  h  (g  f)) a.assoc b.assoc
      p4 = byFunExtImplicit e _ _  A  byFunExtImplicit e _ _  B  byFunExtImplicit e _ _  C  byFunExtImplicit e _ _  D  byFunExtImplicit e _ _  f  byFunExtImplicit e _ _  g  byFunExtImplicit e _ _  h  a.is-set-hom _ _ _ _)))))))

      p5 : Id (∀ {A B C D} {f : Hom A B} {g} {h : Hom C D}  h  (g  f)  (h  g)  f) a.sym-assoc b.sym-assoc
      p5 = byFunExtImplicit e _ _  A  byFunExtImplicit e _ _  B  byFunExtImplicit e _ _  C  byFunExtImplicit e _ _  D  byFunExtImplicit e _ _  f  byFunExtImplicit e _ _  g  byFunExtImplicit e _ _  h  a.is-set-hom _ _ _ _)))))))

      p6 : Id (∀ {A B}  isSet (Hom A B)) a.is-set-hom b.is-set-hom
      p6 = byFunExtImplicit e _ _  A  byFunExtImplicit e _ _  B  isPropIsSet e _ _))

      q : a  b
      q with p1 | p2 | p3 | p4 | p5 | p6
      q | refl | refl | refl | refl | refl | refl = refl