BBLAST_CONV : conv
(a + b) <+ c /\ c <+ d ==> (a + b) <+ d:word32
x <+ c /\ c <+ d ==> x <+ d:word32
-- Type variables for word lengths, i.e. terms of type :'a word.
-- General multiplication, i.e. w1 * w2. Multiplication by a literal is okay, although this may introduce many additions.
-- Bit-field selections with non-literal bounds, e.g. (expr1 -- expr2) w.
-- Shifting by non-literal amounts, e.g. w << expr.
-- n2w expr and w2n w. Also w2s, s2w, w2l and l2w.
-- word_div, word_sdiv, word_mod and word_log2.
- blastLib.BBLAST_CONV ``!a b. ~word_msb a /\ ~word_msb b ==> (a <+ b = a < b:word32)``; val it = |- (!a b. ~word_msb a /\ ~word_msb b ==> (a <+ b <=> a < b)) <=> T : thm
- blastLib.BBLAST_CONV ``!a. (a + 1w:word8) ' 1``; val it = |- (!a. (a + 1w) ' 1) <=> !a. a ' 1 <=> ~a ' 0 : thm
- blastLib.BBLAST_CONV ``!a. ((((((a:word8) * 16w) + 0x10w)) && 0xF0w) >>> 4) = (3 -- 0) (a + 1w)``; val it = |- (!a. (a * 16w + 16w && 240w) >>> 4 = (3 -- 0) (a + 1w)) <=> T : thm