module Control.Groupoid
    ( module Control.Category
    , Groupoid (..)
    ) where

import Control.Category

class Category (~>) => Groupoid (~>) where
    invert :: a ~> b  ->  b ~> a

{-# RULES
"inverse/right"  forall f .
                   f . invert f = id
"inverse/left"   forall f .
                   invert f . f = id
"double inverse" forall f .
                   invert (invert f) = f
  #-}
