diff --git a/Algebra.hs b/Algebra.hs
--- a/Algebra.hs
+++ b/Algebra.hs
@@ -2,6 +2,7 @@
                 (+), (-), (*), (/), (×), commuteWith) where
 
 import Control.Category
+import qualified Control.Category.Dual as C
 import Data.Functor
 import Data.Functor.Const
 import Data.Functor.Identity
@@ -12,6 +13,7 @@
 import Numeric.Natural
 import Prelude (Int, Integer)
 import qualified Prelude as Base
+import qualified Data.Ratio as Base
 
 class Semigroup a => Abelian a
 
@@ -95,8 +97,12 @@
 
 instance Group b => Group (a -> b) where invert = (.) invert
 
+deriving instance Group (k b a) => Group (C.Dual k a b)
+
 instance Base.Num a => Group (Sum a) where invert (Sum a) = Sum (Base.negate a)
 instance Base.Fractional a => Group (Product a) where invert (Product a) = Product (Base.recip a)
+
+instance Base.Integral a => Group (Product (Base.Ratio a)) where invert = fmap Base.recip
 
 infixl 6 +, -
 infixl 7 ×, *, /
diff --git a/Relation/Binary/Comparison.hs b/Relation/Binary/Comparison.hs
--- a/Relation/Binary/Comparison.hs
+++ b/Relation/Binary/Comparison.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE ViewPatterns #-}
-
 module Relation.Binary.Comparison where
 
 import Prelude (Char, Integer)
diff --git a/alg.cabal b/alg.cabal
--- a/alg.cabal
+++ b/alg.cabal
@@ -1,5 +1,5 @@
 name:                alg
-version:             0.2.11.0
+version:             0.2.12.0
 synopsis:            Algebraic structures
 -- description:         
 license:             BSD3
@@ -21,6 +21,7 @@
   -- other-modules:       
   other-extensions:    
   build-depends:       base >=4.11 && <5
+                     , dual >=0.1 && <0.2
                      , util >=0.1.9 && <0.2
   -- hs-source-dirs:      
   default-language:    Haskell2010
