rme-0.1.1: Reed-Muller Expansion normal form for Boolean Formulas
CopyrightGalois Inc. 2016
LicenseBSD3
Maintainerhuffman@galois.com
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Data.RME.Vector

Description

Operations on big-endian vectors of RME formulas.

Synopsis

Documentation

type RMEV = Vector RME Source #

eq :: RMEV -> RMEV -> RME Source #

Bitvector equality.

ule :: RMEV -> RMEV -> RME Source #

Unsigned less-than-or-equal.

ult :: RMEV -> RMEV -> RME Source #

Unsigned less-than.

sle :: RMEV -> RMEV -> RME Source #

Signed less-than-or-equal.

slt :: RMEV -> RMEV -> RME Source #

Signed less-than.

neg :: RMEV -> RMEV Source #

Two's complement bitvector negation.

add :: RMEV -> RMEV -> RMEV Source #

Two's complement bitvector addition.

sub :: RMEV -> RMEV -> RMEV Source #

Two's complement bitvector subtraction.

mul :: RMEV -> RMEV -> RMEV Source #

Two's complement bitvector multiplication.

udiv :: RMEV -> RMEV -> RMEV Source #

Unsigned bitvector division.

urem :: RMEV -> RMEV -> RMEV Source #

Unsigned bitvector remainder.

sdiv :: RMEV -> RMEV -> RMEV Source #

Signed bitvector division.

srem :: RMEV -> RMEV -> RMEV Source #

Signed bitvector remainder.

pmul :: RMEV -> RMEV -> RMEV Source #

Polynomial multiplication. Note that the algorithm works the same no matter which endianness convention is used. Result length is max 0 (m+n-1), where m and n are the lengths of the inputs.

pmod :: RMEV -> RMEV -> RMEV Source #

Polynomial mod with symbolic modulus. Return value has length one less than the length of the modulus. This implementation is optimized for the (common) case where the modulus is concrete.

pdiv :: RMEV -> RMEV -> RMEV Source #

Polynomial division. Return value has length equal to the first argument.

shl :: RMEV -> RMEV -> RMEV Source #

Bitwise logical left shift. Shifts the bits in the first bit-vector by the unsigned, arithmetic value in the second bit-vector filling in with false bits.

ashr :: RMEV -> RMEV -> RMEV Source #

Arithmetic logical right shift. Shifts the bits in the first bit-vector by the unsigned, arithmetic value in the second bit-vector filling in with bits matching the first bit (which is treated as a sign bit).

lshr :: RMEV -> RMEV -> RMEV Source #

Bitwise logical right shift. Shifts the bits in the first bit-vector by the unsigned, arithmetic value in the second bit-vector filling in with false bits.

ror :: RMEV -> RMEV -> RMEV Source #

Bitwise right rotation. Rotates the bits in the first bit-vector by the unsigned, arithmetic value in the second bit-vector.

rol :: RMEV -> RMEV -> RMEV Source #

Bitwise left rotation. Rotates the bits in the first bit-vector by the unsigned, arithmetic value in the second bit-vector.

integer :: Int -> Integer -> RMEV Source #

Constant integer literals.