Implementation of the Group type
Group
#[implicit] type Group a = { monoid : Monoid a, inverse : a -> a }
Group a represents an monoid an which has an inverse element. This means the following additional laws must hold:
Group a
forall x . append (inverse x) x = empty = append x (inverse x)