Built with Alectryon. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+โCtrl+โ to navigate, Ctrl+๐ฑ๏ธ to focus. On Mac, use โ instead of Ctrl.
(** * Functoriality of the comma category construction with projection functors *)Require Import Category.Core Functor.Core.Require Import Category.Prod Functor.Prod.Core.Require Import Category.Dual Functor.Dual.Require Import Functor.Composition.Core.Require Import InitialTerminalCategory.Core InitialTerminalCategory.Functors NatCategory.Require Import FunctorCategory.Core.Require Import Cat.Core.Require Import Functor.Paths.Require Comma.Core.Import Comma.Core.Require Import Comma.InducedFunctors Comma.Projection.Require ProductLaws ExponentialLaws.Law1.Functors ExponentialLaws.Law4.Functors.Require Import Types.Forall PathGroupoids HoTT.Tactics.Set Implicit Arguments.Generalizable All Variables.LocalOpen Scope category_scope.(** ** Functor from [(A โ C)แตแต ร (B โ C)] to [cat / (A ร B)] *)(** It sends [S : A โ C โ B : T] to the category [(S / T)] and its projection functor to [A ร B]. *)Sectioncomma.LocalOpen Scope type_scope.Context `{Funext}.VariableP : PreCategory -> Type.Context `{HF : forallCD, P C -> P D -> IsHSet (Functor C D)}.Local Abbreviation Cat := (@sub_pre_cat _ P HF).VariablesABC : PreCategory.HypothesisPAB : P (A * B).HypothesisP_comma : forall (S : Functor A C) (T : Functor B C),
P (S / T).LocalOpen Scope category_scope.LocalOpen Scope morphism_scope.
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) ST: ((A -> C)^op * (B -> C))%category
Cat / !((A * B; PAB) : Cat)
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) ST: ((A -> C)^op * (B -> C))%category
Cat / !((A * B; PAB) : Cat)
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) ST: ((A -> C)^op * (B -> C))%category
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) s, d: ((A -> C)^op * (B -> C))%category m: morphism ((A -> C)^op * (B -> C)) s d
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) s, d: ((A -> C)^op * (B -> C))%category m: morphism ((A -> C)^op * (B -> C)) s d
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) s, d: ((A -> C)^op * (B -> C))%category m: morphism ((A -> C)^op * (B -> C)) s d
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) s, d: ((A -> C)^op * (B -> C))%category m: morphism ((A -> C)^op * (B -> C)) s d
!(A * B; PAB)
_1 (center
(morphism 1
(CommaCategory.b (comma_category_projection_functor_object_of s))
(CommaCategory.b (comma_category_projection_functor_object_of d))))
o CommaCategory.f (comma_category_projection_functor_object_of s) =
CommaCategory.f (comma_category_projection_functor_object_of d)
o Cat _1 (comma_category_induced_functor m)
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) s, d: ((A -> C)^op * (B -> C))%category m: morphism ((A -> C)^op * (B -> C)) s d
(Identity.identity (A * B)
o comma_category_projection (Overture.fst s) (Overture.snd s))%functor =
(comma_category_projection (Overture.fst d) (Overture.snd d)
o comma_category_induced_functor m)%functor
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) fst1: Functor A C snd1: Functor B C fst0: Functor A C snd0: Functor B C fst: Core.NaturalTransformation fst0 fst1 snd: Core.NaturalTransformation snd1 snd0
(Identity.identity (A * B) o comma_category_projection fst1 snd1)%functor =
(comma_category_projection fst0 snd0
o comma_category_induced_functor (fst, snd)%core)%functor
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) x: ((A -> C)^op * (B -> C))%category
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) x: ((A -> C)^op * (B -> C))%category
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) x: ((A -> C)^op * (B -> C))%category
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) x: ((A -> C)^op * (B -> C))%category
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) x: ((A -> C)^op * (B -> C))%category
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) s, d, d': ((A -> C)^op * (B -> C))%category m: morphism ((A -> C)^op * (B -> C)) s d m': morphism ((A -> C)^op * (B -> C)) d d'
comma_category_projection_functor_morphism_of (m' o m) =
comma_category_projection_functor_morphism_of m'
o comma_category_projection_functor_morphism_of m
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) s, d, d': ((A -> C)^op * (B -> C))%category m: morphism ((A -> C)^op * (B -> C)) s d m': morphism ((A -> C)^op * (B -> C)) d d'
comma_category_projection_functor_morphism_of (m' o m) =
comma_category_projection_functor_morphism_of m'
o comma_category_projection_functor_morphism_of m
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) s, d, d': ((A -> C)^op * (B -> C))%category m: morphism ((A -> C)^op * (B -> C)) s d m': morphism ((A -> C)^op * (B -> C)) d d'
comma_category_induced_functor
(Core.compose (Overture.fst m) (Overture.fst m'),
Core.compose (Overture.snd m') (Overture.snd m)) =
(comma_category_induced_functor m' o comma_category_induced_functor m)%functor
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) s, d, d': ((A -> C)^op * (B -> C))%category m: morphism ((A -> C)^op * (B -> C)) s d m': morphism ((A -> C)^op * (B -> C)) d d'
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) s, d, d': ((A -> C)^op * (B -> C))%category m: morphism ((A -> C)^op * (B -> C)) s d m': morphism ((A -> C)^op * (B -> C)) d d'
H: Funext P: PreCategory -> Type HF: forallC0D : PreCategory, P C0 -> P D -> IsHSet (Functor C0 D) A, B, C: PreCategory PAB: P (A * B) P_comma: forall (S : Functor A C) (T : Functor B C), P (S / T) s, d, d': ((A -> C)^op * (B -> C))%category m: morphism ((A -> C)^op * (B -> C)) s d m': morphism ((A -> C)^op * (B -> C)) d d'
comma_laws_t.Qed.Definitioncomma_category_projection_functor
: Functor ((A -> C)^op * (B -> C))
(Cat / !((A * B; PAB) : Cat))
:= Build_Functor ((A -> C)^op * (B -> C))
(Cat / !((A * B; PAB) : Cat))
comma_category_projection_functor_object_of
comma_category_projection_functor_morphism_of
comma_category_projection_functor_composition_of
comma_category_projection_functor_identity_of.Endcomma.Sectionslice_category_projection_functor.LocalOpen Scope type_scope.Context `{Funext}.VariableP : PreCategory -> Type.Context `{HF : forallCD, P C -> P D -> IsHSet (Functor C D)}.Local Abbreviation Cat := (@sub_pre_cat _ P HF).VariablesCD : PreCategory.HypothesisP1C : P (1 * C).HypothesisPC1 : P (C * 1).HypothesisPC : P C.HypothesisP_comma : forall (S : Functor C D) (T : Functor 1 D), P (S / T).HypothesisP_comma' : forall (S : Functor 1 D) (T : Functor C D), P (S / T).LocalOpen Scope functor_scope.LocalOpen Scope category_scope.Local Abbreviation inv D := (@ExponentialLaws.Law1.Functors.inverse _ terminal_category _ _ _ D).(** ** Functor [(C โ D)แตแต โ D โ (cat / C)] *)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
((C -> D)^op * D -> Cat / (C; PC))%category
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor ((C -> D)^op * (1 -> D)) (Cat / (C; PC))
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor (Cat / !(C * 1; PC1)) (Cat / (C; PC))
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
morphism Cat (C * 1; PC1) (C; PC)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor (C * 1; PC1).1 (C; PC).1
exact (ProductLaws.Law1.functor _).Defined.
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
((C -> D)^op * D -> Cat / (C; PC))%category
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor ((C -> D)^op * (1 -> D)) (Cat / (C; PC))
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor (Cat / !(C * 1; PC1)) (Cat / (C; PC))
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
morphism Cat (C * 1; PC1) (C; PC)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
((C -> D) * D^op -> Cat / (C; PC))%category
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor ((C -> D) * (1 -> D)^op) (Cat / (C; PC))
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor ((1 -> D)^op * (C -> D)) (Cat / (C; PC))
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor (Cat / !(1 * C; P1C)) (Cat / (C; PC))
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
morphism Cat (1 * C; P1C) (C; PC)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor (1 * C; P1C).1 (C; PC).1
exact (ProductLaws.Law1.functor' _).Defined.
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
((C -> D) * D^op -> Cat / (C; PC))%category
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor ((C -> D) * (1 -> D)^op) (Cat / (C; PC))
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor ((1 -> D)^op * (C -> D)) (Cat / (C; PC))
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
Functor (Cat / !(1 * C; P1C)) (Cat / (C; PC))
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)
morphism Cat (1 * C; P1C) (C; PC)
H: Funext P: PreCategory -> Type HF: forallC0D0 : PreCategory, P C0 -> P D0 -> IsHSet (Functor C0 D0) C, D: PreCategory P1C: P (1 * C) PC1: P (C * 1) PC: P C P_comma: forall (S : Functor C D) (T : Functor 1 D), P (S / T) P_comma': forall (S : Functor 1 D) (T : Functor C D), P (S / T)