packages feed

agda2hs-1.3: lib/Haskell/Law/Semigroup/Maybe.agda

module Haskell.Law.Semigroup.Maybe where

open import Haskell.Prim
open import Haskell.Prim.Maybe

open import Haskell.Prim.Monoid

open import Haskell.Law.Equality
open import Haskell.Law.Semigroup.Def

instance
  iLawfulSemigroupMaybe : ⦃ iSemA : Semigroup a ⦄ → ⦃ IsLawfulSemigroup a ⦄ → IsLawfulSemigroup (Maybe a)
  iLawfulSemigroupMaybe .associativity Nothing  _        _        = refl
  iLawfulSemigroupMaybe .associativity (Just _) Nothing  _        = refl
  iLawfulSemigroupMaybe .associativity (Just _) (Just _) Nothing  = refl
  iLawfulSemigroupMaybe .associativity (Just x) (Just y) (Just z)
    rewrite associativity x y z
    = refl