1 (*******************************************************************************)
3 (*******************************************************************************)
5 Generalizable All Variables.
6 Require Import Preamble.
7 Require Import General.
8 Require Import Categories_ch1_3.
9 Require Import Functors_ch1_4.
10 Require Import Isomorphisms_ch1_5.
11 Require Import ProductCategories_ch1_6_1.
12 Require Import InitialTerminal_ch2_2.
13 Require Import Subcategories_ch7_1.
14 Require Import NaturalTransformations_ch7_4.
15 Require Import NaturalIsomorphisms_ch7_5.
16 Require Import Coherence_ch7_8.
17 Require Import MonoidalCategories_ch7_8.
19 (* A Freyd Category is... *)
22 (* a cartesian category C *)
23 `(C:CartesianCat(Ob:=Ob)(C:=C1)(Fobj:=fun x => bobj (fst_obj _ _ x) (snd_obj _ _ x)))
25 (* a premonoidal category K with the same objects (its unit object is 1 because the functor is both IIO and strict) *)
26 `(K:PreMonoidalCat(Ob:=Ob)(bin_obj':=bobj)(I:=@one _ _ _ C))
28 (* an identity-on-objects functor J:C->Z(K) *)
29 := { fc_J : Functor C (CenterMonoidal K) (fun x => exist _ x I)
31 (* which is not only monoidal *)
32 ; fc_mf_J : MonoidalFunctor C (CenterMonoidal K) fc_J
34 (* but in fact strict (meaning the functor's coherence maps are identities) *)
35 ; fc_strict : forall a, iso_forward (mf_coherence fc_mf_J a) ~~ id _
41 Coercion fc_mf_J : FreydCategory >-> MonoidalFunctor.
42 Coercion fc_K : FreydCategory >-> PreMonoidalCat.