module Numeric.Semiring.ZeroProduct ( ZeroProductSemiring ) where import Numeric.Algebra.Class import Numeric.Natural -- | A zero-product semiring has no zero divisors -- -- > a * b = 0 implies a == 0 || b == 0 class (Monoidal r, Semiring r) => ZeroProductSemiring r instance ZeroProductSemiring Integer instance ZeroProductSemiring Natural instance ZeroProductSemiring Bool