| 0 ≤ j, j = bits2uint(false ' + true ' + bits), uint2bits(j) = false ' + true ' + bits, 0 < j, ∀ i. ¬ i < 0 → j ≠ 2 ^ i ⊦ sgn(true ' + bits) = true ' + true ' + bits, true ∈ bits |
uint2bits(bits2uint(false ' + true ' + bits)) = false ' + true ' + bits, 0 ≤ bits2uint(false ' + true ' + bits), 0 < bits2uint(false ' + true ' + bits), ∀ i. ¬ i < 0 → bits2uint(false ' + true ' + bits) ≠ 2 ^ i ⊦ sgn(true ' + bits) = true ' + true ' + bits, true ∈ bits
Used simplifier rules: uint2bits-firstpos: ⊦ uint2bits(j) = boolvar ' + bits ∧ 0 ≤ j → ¬ boolvar;%uint2bits-onein: ⊦ 0 < j → true ∈ uint2bits(j);% ⊦ boolvar ∈ boolvar0 ' ↔ boolvar ↔ boolvar0;% ⊦ boolvar ∈ bits + bits0 ↔ ¬ ¬(boolvar ∈ bits ∨ boolvar ∈ bits0);% ⊦ bits = bits0 + boolvar ' + bits1 → boolvar ∈ bits; (forward)% ⊦ boolvar ' + bits = bits0 → boolvar ∈ bits0; (forward)% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;