module Numeric.Semiring.Integral ( IntegralSemiring ) where import Numeric.Semiring.Class import Numeric.Monoid.Additive import Numeric.Natural.Internal -- a * b = 0 implies a == 0 || b == 0 class (AdditiveMonoid r, Semiring r) => IntegralSemiring r instance IntegralSemiring Integer instance IntegralSemiring Natural instance IntegralSemiring Bool