Arithmetic taint tracking.
Extension of Word32, that allows Unknown values to be used. Operations on known values are calculated as usual, while operations on unknowns are recorded in unsimplified form.
let e = 1+5 `xor` U `lshift` 2
eX Xor (N 6) (X LShift U (N 2))
1+5 `xor` 0xBEEF `lshift` 2N 195514
Intended for analysis of XSHA-1, so only supports the necessary primitives.
A numeric type extended to hold information about unknown values.
Numbers are still present.
Unknown values are marked with X.
|X Op N N|
Operations can be piled on top of them.