You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(** Here we define a monoid internal to a monoidal category. Various algebraic theories such as groups and rings may also be internalized, however these specifically require a cartesian monoidal structure. The theory of monoids however has no such requirement and can therefore be developed in much greater generality. This can be used to define a range of objects such as R-algebras, H-spaces, Hopf algebras and more. *)
9
+
10
+
(** * Monoid objects *)
11
+
12
+
Section MonoidObject.
13
+
Context {A : Type} {tensor : A -> A -> A} {unit : A}
14
+
`{HasEquivs A, !Is0Bifunctor tensor, !Is1Bifunctor tensor}
15
+
`{!Associator tensor, !LeftUnitor tensor unit, !RightUnitor tensor unit}.
16
+
17
+
(** An object [x] of [A] is a monoid object if it comes with the following data: *)
18
+
Class IsMonoidObject (x : A) := {
19
+
(** A multiplication map from the tensor product of [x] with itself to [x]. *)
20
+
mo_mult : tensor x x $-> x;
21
+
(** A unit of the multplication. *)
22
+
mo_unit : unit $-> x;
23
+
(** The multiplication map is associative. *)
24
+
mo_assoc : mo_mult $o fmap10 tensor mo_mult x $o associator x x x
(** A cocommutative comonoid objects is a commutative monoid object in the opposite category. *)
99
+
Class IsCocommutativeComonoidObject (x : A)
100
+
:= iscommuatativemonoid_cocomutativemonoid_op
101
+
:: IsCommutativeMonoidObject (A:=A^op) tensor unit x.
102
+
103
+
(** We can build cocommutative comonoid objects from the following data: *)
104
+
Definition Build_IsCocommutativeComonoidObject (x : A)
105
+
(** A comonoid. *)
106
+
`{!IsComonoidObject x}
107
+
(** Together with a proof of cocommutativity. *)
108
+
(cco_cocomm : braid x x $o co_comult $== co_comult)
109
+
: IsCocommutativeComonoidObject x.
110
+
Proof.
111
+
snrapply Build_IsCommutativeMonoidObject.
112
+
- exact _.
113
+
- exact cco_cocomm.
114
+
Defined.
115
+
116
+
End ComonoidObject.
117
+
118
+
(** ** Monoid enrichment *)
119
+
120
+
(** A hom [x $-> y] in a cartesian category where [y] is a monoid object has the structure of a monoid. Equivalently, a hom [x $-> y] in a cartesian category where [x] is a comonoid object has the structure of a monoid. *)
0 commit comments