{-# OPTIONS --cubical --no-import-sorts  #-}

open import Cubical.Foundations.Everything renaming (_⁻¹ to _⁻¹ᵖ; assoc to ∙-assoc)
open import Function.Base using (_∋_; _$_)
import Cubical.Algebra.Monoid as Std
open import MorePropAlgebra.Bundles

module MorePropAlgebra.Properties.Monoid {} (assumptions : Monoid {}) where
open Monoid assumptions renaming (Carrier to F)

import MorePropAlgebra.Properties.Semigroup
module Semigroup'Properties = MorePropAlgebra.Properties.Semigroup   (record { Monoid assumptions })
module Semigroup'           =                            Semigroup   (record { Monoid assumptions })
(      Semigroup')          =                            Semigroup  (record { Monoid assumptions })

stdIsMonoid : Std.IsMonoid ε _·_
stdIsMonoid  .Std.IsMonoid.isSemigroup = Semigroup'Properties.stdIsSemigroup
stdIsMonoid  .Std.IsMonoid.identity    = is-identity

stdMonoid : Std.Monoid {}
stdMonoid = record { Monoid assumptions ; isMonoid = stdIsMonoid }