| int2bits(i) = false ' + bits, # int2bits(i) = 2 + i→n(j), # bits = i→n(j), bitsxor(int2bits(i).rest, true ' + mklist(false, i→n(j))) = true ' + bitsxor(bits, mklist(false, i→n(j))), 0 ≤ j, false ∈ int2bits(i), 2 ^ j * 2 < i, 0 < i ⊦ bits = [], i = 0 |
int2bits(i) = boolvar + bits0 ∧ int2bits(i) ≠ [], int2bits(i) = false ' + bits, # int2bits(i) = 2 + i→n(j), # bits = i→n(j), bitsxor(bits0, true ' + mklist(false, i→n(j))) = true ' + bitsxor(bits, mklist(false, i→n(j))), 0 ≤ j, false ∈ int2bits(i), 2 ^ j * 2 < i, 0 < i ⊦ bits = [], i = 0
Used simplifier rules: ⊦ int2bits(j) ≠ [];%⊦ bits ≠ [] → ( (boolvar ↔ bits.first) ∧ bits0 = bits.rest ↔ bits = boolvar + bits0); (elim) Used terms: int2bits(i), boolvar, bits0