{-# OPTIONS --type-in-type #-} open import NeilPrelude module CommMonoid {A : Set} (_⊕_ : Op A) (assoc : Associative _⊕_) (comm : Commutative _⊕_) (unit : A) (unit⊕ : {a : A} -> unit ⊕ a ≡ a) where ⊕unit' : {a : A} -> a ⊕ unit ≡ a ⊕unit' {a} = trans comm unit⊕ import Monoid open Monoid _⊕_ assoc unit unit⊕ ⊕unit' public import CommSemiGroup open CommSemiGroup _⊕_ assoc comm public