Section path.
Variables T U : NaturalTransformation F G.
admit.
Defined.
End path.
End path_natural_transformation.
Ltac path_natural_transformation :=
repeat match goal with
| _ => intro
| _ => apply path_natural_transformation; simpl
end.
Definition comma_category A B C (S : Functor A C) (T : Functor B C)
: PreCategory.
admit.
Defined.
Definition compose C D (F F' F'' : Functor C D)
(T' : NaturalTransformation F' F'') (T : NaturalTransformation F F')
: NaturalTransformation F F''
:= Build_NaturalTransformation F F''
(fun c => T' c o T c).
Infix "o" := compose : natural_transformation_scope.
Local Open Scope natural_transformation_scope.
Definition associativity `{fs : Funext}
C D F G H I
(V : @NaturalTransformation C D F G)
(U : @NaturalTransformation C D G H)
(T : @NaturalTransformation C D H I)
: (T o U) o V = T o (U o V).
Definition functor_category `{Funext} (C D : PreCategory) : PreCategory
:= @Build_PreCategory (Functor C D)
(@NaturalTransformation C D)
(@compose C D)
(@associativity _ C D).
Notation "C -> D" := (functor_category C D) : category_scope.
Definition compose_functor `{Funext} (C D E : PreCategory) : object ((C -> D) -> ((D -> E) -> (C -> E))).
admit.
Defined.
Definition pullback_along `{Funext} (C C' D : PreCategory) (p : Functor C C')
: object ((C' -> D) -> (C -> D))
:= Eval hnf in compose_functor _ _ _ p.
Definition IsColimit `{Funext} C D (F : Functor D C)
(x : object
(@comma_category (indiscrete_category Unit)
(@functor_category H (indiscrete_category Unit) C)
(@functor_category H D C)
admit
(@pullback_along H D (indiscrete_category Unit) C
admit))) : Type
:= admit.
Generalizable All Variables.

Axiom fs : Funext.