X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2FGeneralizedArrowCategory.v;h=a9bedbb15ba3decb525f3826a1dc0fa359f09f68;hb=20a9b4934a97e6801d6785ac940f771cb74a8cc1;hp=d98f85ace1934d03df00424a4ef1a154edc8e0b3;hpb=992203bb4a221ea2f415c0d14bb34d35af2ee637;p=coq-hetmet.git diff --git a/src/GeneralizedArrowCategory.v b/src/GeneralizedArrowCategory.v index d98f85a..a9bedbb 100644 --- a/src/GeneralizedArrowCategory.v +++ b/src/GeneralizedArrowCategory.v @@ -23,7 +23,64 @@ Require Import Coherence_ch7_8. Require Import Enrichment_ch2_8. Require Import RepresentableStructure_ch7_2. Require Import GeneralizedArrow. +Require Import WeakFunctorCategory. +Require Import SmallSMMEs. -Instance CategoryOfGeneralizedArrows : Category SMME GeneralizedArrow. - admit. - Qed. +Inductive GeneralizedArrowOrIdentity : SMMEs -> SMMEs -> Type := + | gaoi_id : forall smme:SMMEs, GeneralizedArrowOrIdentity smme smme + | gaoi_ga : forall s1 s2:SMMEs, GeneralizedArrow s1 s2 -> GeneralizedArrowOrIdentity s1 s2. + +Definition generalizedArrowOrIdentityFunc + : forall s1 s2, GeneralizedArrowOrIdentity s1 s2 -> { fobj : _ & Functor s1 s2 fobj }. + intros. + destruct X. + exists (fun x => x). + apply functor_id. + eapply existT. + apply (g >>>> RepresentableFunctor s2 (mon_i s2)). + Defined. + +Definition compose_generalizedArrows (s0 s1 s2:SMMEs) : + GeneralizedArrow s0 s1 -> GeneralizedArrow s1 s2 -> GeneralizedArrow s0 s2. + intro g01. + intro g12. + refine + {| ga_functor := g01 >>>> RepresentableFunctor s1 (mon_i s1) >>>> g12 |}. + apply MonoidalFunctorsCompose. + apply MonoidalFunctorsCompose. + apply (ga_functor_monoidal g01). + apply (me_mf s1). + apply (ga_functor_monoidal g12). + Defined. + +Definition generalizedArrowOrIdentityComp + : forall s1 s2 s3, GeneralizedArrowOrIdentity s1 s2 -> GeneralizedArrowOrIdentity s2 s3 -> GeneralizedArrowOrIdentity s1 s3. + intros. + destruct X. + apply X0. + destruct X0. + apply (gaoi_ga _ _ g). + apply (gaoi_ga _ _ (compose_generalizedArrows _ _ _ g g0)). + Defined. + +Definition MorphismsOfCategoryOfGeneralizedArrows : @SmallFunctors SMMEs. + refine {| small_func := GeneralizedArrowOrIdentity + ; small_func_id := fun s => gaoi_id s + ; small_func_func := fun smme1 smme2 f => projT2 (generalizedArrowOrIdentityFunc _ _ f) + ; small_func_comp := generalizedArrowOrIdentityComp + |}; intros; simpl. + apply if_id. + destruct f as [|fobj f]; simpl in *. + apply if_inv. + apply if_left_identity. + destruct g as [|gobj g]; simpl in *. + apply if_inv. + apply if_right_identity. + unfold mf_F. + idtac. + unfold mf_f. + apply if_associativity. + Defined. + +Definition CategoryOfGeneralizedArrows := + WeakFunctorCategory MorphismsOfCategoryOfGeneralizedArrows.