0 | module Algebra.Monoid
10 | interface Monoid a => LMonoid a where
11 | 0 appendAssociative : {x,y,z : a} -> x <+> (y <+> z) === (x <+> y) <+> z
13 | 0 appendLeftNeutral : {x : a} -> Prelude.neutral <+> x === x
15 | 0 appendRightNeutral : {x : a} -> x <+> Prelude.neutral === x
18 | LMonoid (List a) where
19 | appendAssociative = Data.List.appendAssociative _ _ _
20 | appendRightNeutral = appendNilRightNeutral _
21 | appendLeftNeutral = Refl
23 | unsafeRefl : a === b
24 | unsafeRefl = believe_me (Refl {x = a})
27 | LMonoid String where
28 | appendAssociative = unsafeRefl
29 | appendRightNeutral = unsafeRefl
30 | appendLeftNeutral = unsafeRefl
36 | interface LMonoid a => CommutativeMonoid a where
37 | 0 appendCommutative : {x,y : a} -> x <+> y === y <+> x