module Numeric.Semiring.Integral 
  ( IntegralSemiring
  ) where

import Numeric.Algebra.Class
import Numeric.Natural.Internal

-- | An integral semiring has no zero divisors
--
-- > a * b = 0 implies a == 0 || b == 0
class (Monoidal r, Semiring r) => IntegralSemiring r

instance IntegralSemiring Integer
instance IntegralSemiring Natural
instance IntegralSemiring Bool