| bits1 = boolvar0 + bits, int2bits(i) = (false ' + bits1) + boolvar ', false ∈ bits1, false ∈ int2bits(i), 0 < i, 2 < i ⊦ i = 0, bits1 = [], boolvar0, (sgn((false ' + bits1) + (¬ boolvar)')[1 + # bits1] ↔ ¬ boolvar) ∧ sgn((false ' + bits1) + (¬ boolvar)')[1 + # bits1, boolvar] = int2bits(i) |
int2bits(i) = false ' + (false ' + bits) + boolvar ', false ∈ int2bits(i), 0 < i, 2 < i ⊦ i = 0, (sgn(false ' + bits + (¬ boolvar)')[2 + # bits] ↔ ¬ boolvar) ∧ sgn(false ' + bits + (¬ boolvar)')[2 + # bits, boolvar] = int2bits(i)
Used simplifier rules: ⊦ m + n = n + m;% ⊦ # boolvar ' = 0 +1;% ⊦ #(bits + bits0) = # bits + # bits0;% ⊦ sgn(boolvar ' + boolvar ' + bits) = sgn(boolvar ' + bits);% ⊦ boolvar ∈ boolvar0 ' ↔ boolvar ↔ boolvar0;% ⊦ boolvar ∈ bits + bits0 ↔ ¬ ¬(boolvar ∈ bits ∨ boolvar ∈ bits0);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ boolvar ' + bits ≠ [];% ⊦ boolvar + bits = boolvar ' + bits;