    module Numeric.Order.Additive
      ( AdditiveOrder
      ) where

    import Numeric.Natural.Internal
    import Numeric.Additive.Class
    import Numeric.Order.Class

    -- An additive semigroup with a partial order (<=)

    -- | z + x <= z + y = x <= y = x + z <= y + z
    class (Additive r, Order r) => AdditiveOrder r

    instance AdditiveOrder Integer
    instance AdditiveOrder Natural
    instance AdditiveOrder Bool
    instance AdditiveOrder ()
    instance (AdditiveOrder a, AdditiveOrder b) => AdditiveOrder (a,b)
    instance (AdditiveOrder a, AdditiveOrder b, AdditiveOrder c) => AdditiveOrder (a,b,c)
    instance (AdditiveOrder a, AdditiveOrder b, AdditiveOrder c, AdditiveOrder d) => AdditiveOrder (a,b,c,d)
    instance (AdditiveOrder a, AdditiveOrder b, AdditiveOrder c, AdditiveOrder d, AdditiveOrder e) => AdditiveOrder (a,b,c,d,e)