| 0 < i, j + 2 ^ i ≤ 0, j + 2 ^ i < i, j < 0, 0 ≤ i, true ∈ fillsgn(i→n(i) + 1, uint2bits(~(j % 2 ^ i))).rest, j / 2 ^ i < 0 ⊦ sgn(bitsinvert(uint2bits(~(j / 2 ^ i))) + bitsinvert(fillsgn(i→n(i) + 1, uint2bits(~(j % 2 ^ i))).rest) +1) = sgn(bitsinvert(uint2bits(1 - j / 2 ^ i)) +1) + fillsgn(i→n(i) + 1, int2bits(j % 2 ^ i)).rest, j % 2 ^ i = 0, uint2bits(~(j / 2 ^ i)) = false ' + uint2bits(~(j / 2 ^ i)).rest |
Used simplifier rules: uint2bits-empty-01: ⊦ i < 0 → uint2bits(~ i) ≠ [];%uint2bits-empty-01: ⊦ i < 0 → uint2bits(~ i) ≠ [];%uint2bits-first-05: ⊦ j < 0 → uint2bits(~ j) ≠ true ' + bits;% ⊦ boolvar + bits = boolvar ' + bits;% ⊦ boolvar ' + bits = bits0 → boolvar ∈ bits0; (forward)% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ bits + bits0 = bits1 + bits0 ↔ bits = bits1;% ⊦ boolvar ' = boolvar0 ' ↔ boolvar ↔ boolvar0;% ⊦ bitsinvert(bits + bits0) = bitsinvert(bits) + bitsinvert(bits0);% ⊦ bitsinvert(boolvar ') = (¬ boolvar)';%⊦ bits ≠ [] → ( (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0); (elim) Used terms: uint2bits(~(j / 2 ^ i)), boolvar, bits