operations with fixed bit width. still they are non-overflowing: if overflow occurs, the constraints are not satisfiable. the bit width of the result of binary operations is the max of the bit width of the inputs.
- restricted :: Int -> Number -> SAT Number
- add :: Number -> Number -> SAT Number
- times :: Number -> Number -> SAT Number
- data Number
- bits :: Number -> [Boolean]
- make :: [Boolean] -> Number
- width :: Number -> Int
- number :: Int -> SAT Number
- constant :: Integer -> SAT Number
- equals :: Number -> Number -> SAT Boolean
- iszero :: Number -> SAT Boolean
Documentation
restricted :: Int -> Number -> SAT NumberSource
give only lower k bits, upper bits must be zero, (else unsatisfiable)
add :: Number -> Number -> SAT NumberSource
result bit width is max of argument bit widths. if overflow occurs, then formula is unsatisfiable.