Library HoTT.Categories.FunctorCategory.Core
Require Import NaturalTransformation.Composition.Core NaturalTransformation.Identity NaturalTransformation.Composition.Laws NaturalTransformation.Paths.
Set Implicit Arguments.
Generalizable All Variables.
Set Implicit Arguments.
Generalizable All Variables.
Definition functor_category : PreCategory
:= @Build_PreCategory (Functor C D)
(@NaturalTransformation C D)
(@identity C D)
(@compose C D)
(@associativity _ C D)
(@left_identity _ C D)
(@right_identity _ C D)
_.
End functor_category.
Local Notation "C -> D" := (functor_category C D) : category_scope.
:= @Build_PreCategory (Functor C D)
(@NaturalTransformation C D)
(@identity C D)
(@compose C D)
(@associativity _ C D)
(@left_identity _ C D)
(@right_identity _ C D)
_.
End functor_category.
Local Notation "C -> D" := (functor_category C D) : category_scope.
Lemma isstrict_functor_category `{Funext} C `{IsStrictCategory D}
: IsStrictCategory (C → D).
Proof.
typeclasses eauto.
Defined.
Module Export FunctorCategoryCoreNotations.
(*Notation "C ^ D" := (functor_category D C) : category_scope.
Notation " C , D " := (functor_category C D) : category_scope.*)
Notation "C -> D" := (functor_category C D) : category_scope.
End FunctorCategoryCoreNotations.
: IsStrictCategory (C → D).
Proof.
typeclasses eauto.
Defined.
Module Export FunctorCategoryCoreNotations.
(*Notation "C ^ D" := (functor_category D C) : category_scope.
Notation " C , D " := (functor_category C D) : category_scope.*)
Notation "C -> D" := (functor_category C D) : category_scope.
End FunctorCategoryCoreNotations.