{-# language FlexibleContexts #-} module Satchmo.Numeric where import Satchmo.Boolean import Satchmo.Code class Constant a where constant :: MonadSAT m => Integer -> m a class Create a where -- | Parameter: bit width create :: MonadSAT m => Int -> m a class Numeric a where equal :: MonadSAT m => a -> a -> m Boolean greater_equal :: MonadSAT m => a -> a -> m Boolean plus :: MonadSAT m => a -> a -> m a minus :: MonadSAT m => a -> a -> m a times :: MonadSAT m => a -> a -> m a