{-# OPTIONS --safe #-}
module Cubical.Tactics.MonoidSolver.Examples where

open import Cubical.Foundations.Prelude

open import Cubical.Algebra.Monoid.Base
open import Cubical.Algebra.CommMonoid.Base
open import Cubical.Tactics.MonoidSolver.Reflection

private
  variable
     : Level

module ExamplesMonoid (M : Monoid ) where
  open MonoidStr (snd M)

  _ : ε  ε
  _ = solveMonoid M

  _ : ε · ε · ε  ε
  _ = solveMonoid M

  _ :  x  ε · x   x
  _ = solveMonoid M

  _ :  x y z  (x · y) · z  x · (y · z)
  _ = solveMonoid M

  _ :  x y z  z · (x · y) · ε · z  z · x · (y · z)
  _ = solveMonoid M

module ExamplesCommMonoid (M : CommMonoid ) where
  open CommMonoidStr (snd M)

  _ : ε  ε
  _ = solveCommMonoid M

  _ : ε · ε · ε  ε
  _ = solveCommMonoid M

  _ :  x  ε · x   x
  _ = solveCommMonoid M

  _ :  x y z  (x · z) · y  x · (y · z)
  _ = solveCommMonoid M

  _ :  x y   (x · y) · y · x · (x · y)  x · x · x · (y · y · y)
  _ = solveCommMonoid M