major revision: separate Subcategory into {Wide,Full}Subcategory
[coq-categories.git] / src / FreydCategories.v
index c50e732..c269e50 100644 (file)
@@ -14,25 +14,29 @@ Require Import Subcategories_ch7_1.
 Require Import NaturalTransformations_ch7_4.
 Require Import NaturalIsomorphisms_ch7_5.
 Require Import Coherence_ch7_8.
+Require Import BinoidalCategories.
+Require Import PreMonoidalCategories.
+Require Import PreMonoidalCenter.
 Require Import MonoidalCategories_ch7_8.
 
 (* A Freyd Category is... *)
 Class FreydCategory
 
-  (* a cartesian category C *)
-  `(C:CartesianCat(Ob:=Ob)(C:=C1)(Fobj:=fun x => bobj (fst_obj _ _ x) (snd_obj _ _ x)))
+   (* a cartesian category C *)
+  `(C:CartesianCat(Ob:=Ob)(C:=C1)(bin_obj':=bobj))
 
-  (* a premonoidal category K with the same objects (its unit object is 1 because the functor is both IIO and strict) *)
+   (* a premonoidal category K with the same objects (its unit object is 1 because the functor is both IIO and strict) *)
   `(K:PreMonoidalCat(Ob:=Ob)(bin_obj':=bobj)(I:=@one _ _ _ C))
 
-  (* an identity-on-objects functor J:C->Z(K) *)
-:= { fc_J       : Functor C (CenterMonoidal K) (fun x => exist _ x I)
+   (* an identity-on-objects functor J:C->Z(K) *)
+:= { fc_J       : Functor C (Center_is_Monoidal K) (fun x => x)
 
-  (* which is not only monoidal *)
-   ; fc_mf_J    : MonoidalFunctor C (CenterMonoidal K) fc_J
+   (* which is a monoidal functor *)
+   ; fc_mf_J    : MonoidalFunctor C (Center_is_Monoidal K) fc_J
 
-  (* but in fact strict (meaning the functor's coherence maps are identities) *)
-   ; fc_strict  : forall a, iso_forward (mf_coherence fc_mf_J a) ~~ id _
+   (* and strict (meaning the functor's coherence maps are identities) *)
+   ; fc_strict_first   : forall a b, #(mf_first(PreMonoidalFunctor:=fc_mf_J) a b) ~~ id _  (* mf_consistent gives us mf_second *)
+(*   ; fc_strict_id      : #(mf_i(PreMonoidalFunctor:=fc_mf_J)) ~~ id _*)
 
    ; fc_C       := C
    ; fc_K       := K