Generalizable All Variables.
-Require Import Preamble.
-Require Import General.
+Require Import Notations.
Require Import Categories_ch1_3.
Require Import Functors_ch1_4.
Require Import Isomorphisms_ch1_5.
apply ibs.
clear ibs.
- setoid_rewrite (MacLane_ex_VII_1_1 (x~~>a) (a~~>b)).
+ set (MacLane_ex_VII_1_1 (a~~>b) (x~~>a)) as q.
+ simpl in q.
+ setoid_rewrite <- q.
+ clear q.
setoid_rewrite juggle3.
set (fmor_preserves_comp ((x ~~> a) ⋊-)) as q.
simpl in q.
Defined.
Coercion UnderlyingFunctor : EFunctor >-> Functor.
-Class EBinoidalCat `(ec:ECategory) :=
-{ ebc_bobj : ec -> ec -> ec
-; ebc_first : forall a:ec, EFunctor ec ec (fun x => ebc_bobj x a)
-; ebc_second : forall a:ec, EFunctor ec ec (fun x => ebc_bobj a x)
+Class EBinoidalCat `(ec:ECategory)(bobj : ec -> ec -> ec) :=
+{ ebc_first : forall a:ec, EFunctor ec ec (fun x => bobj x a)
+; ebc_second : forall a:ec, EFunctor ec ec (fun x => bobj a x)
+; ebc_ec := ec (* this isn't a coercion - avoids duplicate paths *)
+; ebc_bobj := bobj
}.
Instance EBinoidalCat_is_binoidal `(ebc:EBinoidalCat(ec:=ec)) : BinoidalCat (Underlying ec) ebc_bobj.