LKG7V6OC5VYTHY3YWWYMIDP5O6OQCWWSMHTMJKALLNQNPOVY375AC module Algebra.Groupimport Builtinimport public Algebra.Monoidpublic exportinterface Monoid t => Group t whereneg : t -> tproofLeftInverse : (x : t) -> neg x <> x = Monoid.idproofRightInverse : (x : t) -> x <> neg x = Monoid.id
module Algebra.Magmaimport Builtininfixl 5 <>public exportinterface Magma t where(<>) : t -> t -> t
module Algebra.Monoidimport Builtinimport public Algebra.Semigrouppublic exportinterface Semigroup t => Monoid t whereid : tproofLeftIdentity : (x : t) -> id <> x = xproofRightIdentity : (x : t) -> x <> id = x
module Algebra.Semigroupimport Builtinimport public Algebra.Magmapublic exportinterface Magma t => Semigroup t whereproofAssociativity : (x, y, z : t) -> x <> (y <> z) = (x <> y) <> z