{A : Type} {tensor : A -> A -> A} {unit : A} `{HasEquivs A, !Is0Bifunctor tensor, !Is1Bifunctor tensor} `{!Associator tensor, !LeftUnitor tensor unit, !RightUnitor tensor unit} {x : A} `{C : !IsComonoidObject (A:=A^op) tensor unit x} : IsMonoidObject tensor unit x. Proof. snrapply Build_IsMonoidObject. - exact (co_comult (A:=A^op) tensor unit). - exact (co_counit (A:=A^op) tensor unit). - apply cate_moveR_eM. symmetry. exact (cat_assoc _ _ _ $@ co_coassoc (A:=A^op) tensor unit (x:=x)). - simpl; nrefine (_ $@ cat_idl _). apply cate_moveL_eM. refine (cat_assoc _ _ _ $@ _). exact (co_left_counit (A:=A^op) tensor unit (x:=x)). - simpl; nrefine (_ $@ cat_idl _). apply cate_moveL_eM. refine (cat_assoc _ _ _ $@ _). exact (co_right_counit (A:=A^op) tensor unit (x:=x)). Defined.
Require Import Basics.Overture Basics.Tactics. Require Import WildCat.Core WildCat.Equiv WildCat.Monoidal WildCat.Bifunctor Require Import abstract_algebra.