fact: Record mixin_of (T : Type) := Mixin { ounit_op : T; ojoin_op : T -> T -> option T; ojoinC_op : forall x y, ojoin_op x y = ojoin_op y x; ojoinA_op : forall x y z, obind (ojoin_op x) (ojoin_op y z) = obind (ojoin_op^~ z) (ojoin_op x y); ounitL_op : forall x, ojoin_op ounit_op x = Some x}.
imports: Coq(ssreflect ssrbool ssrfun) mathcomp(ssrnat eqtype) pcm(options prelude) pcm(pcm morphism)