Îõ³h$ªÃ+      !"#$%&'()* Safe-InferredÖש groupsA  G is Ù if there exists an element x of G such that for all y in G, there exists an n, such that  y = pow x ngroupsAn  group is a  that follows the rule: a <> b == b <> agroupsA  is a + plus a function,  , such that: a <> invert a == mempty invert a <> a == memptygroupsGroup subtraction: x ~~ y == x <> invert ygroups  a n == a <> a <> ... <> a  (n lots of a))If n is negative, the result is inverted. groups!Product of groups, Functor style. groups,, lifts groups pointwise (at only one point). groups- lifts groups into a functor. groupsTrivial group, Functor style.7.      !"#$%&'()*+,-./-01-234#groups-0.5.1-9lXLxtNPdOyLXU9lK3559h Data.GroupCyclic generatorAbelianGroupinvert~~pow generated $fGroupOp $fGroup:.: $fGroup:*:$fGroupIdentity $fGroupConst $fGroupProxy $fGroup(,,,,) $fGroup(,,,) $fGroup(,,) $fGroup(,) $fGroup-> $fGroupDual$fGroupProduct $fGroupSum $fGroup() $fAbelianOp $fAbelian:.: $fAbelian:*:$fAbelianIdentity$fAbelianConst$fAbelianProxy$fAbelian(,,,,)$fAbelian(,,,) $fAbelian(,,) $fAbelian(,) $fAbelian-> $fAbelianDual$fAbelianProduct $fAbelianSum $fAbelian()$fCyclicIdentity $fCyclicConst $fCyclicProxy $fCyclicSum $fCyclic()baseGHC.BaseMonoidData.Functor.IdentityIdentityData.Functor.ConstConst