| bits1 = [], 0 < bits2uint(false ' + bitsinvert(bits) + true ' + bits1) ⊦ sgn(sgn(true ' + bits + false ' + bitsinvert(bits1)) +1) = sgn(true ' + bits + true ' + bits1), true ∈ bits1 |
0 ≤ bits2uint(false ' + bitsinvert(bits)) ⊦ sgn(sgn(true ' + bits + false ') +1) = sgn(true ' + bits + true ')
Used simplifier rules: bits2uint-one: ⊦ bits2uint(bits + true ') = bits2uint(bits) * 2 + 1;% ⊦ ¬ boolvar ∈ [];% ⊦ i + j = j + i;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i * j = j * i;% ⊦ i * j * j0 = (i * j) * j0;% ⊦ 0 < i → (0 ≤ i * j ↔ 0 ≤ j);% ⊦ ~1 < i ↔ 0 ≤ i;% ⊦ (* j) < i0 + (* j0) ↔ j - j0 < i0;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bits + [] = bits;% ⊦ bitsinvert([]) = [];