| i < 0, j < 32, 0 < j ⊦ j = 0, i = ~1, bits2int(true ' + sublist(0, # int2bits((i - 1) / 2), mklist(true, i→n(j) - 1) + int2bits((i - 1) / 2))) = bits2int(sublist(0, # int2bits((i - 1) / 2), mklist(true, i→n(j - 1)) + int2bits((i - 1) / 2))), sublist(0, # int2bits((i - 1) / 2), mklist(true, i→n(j) - 1) + int2bits((i - 1) / 2)).first |
⊦ bits ≠ [] ∧ n ≠ 0 → sublist(0, n, bits) = bits.first ' + sublist(0, n -1, bits.rest)
mklist(true, i→n(j) - 1) + int2bits((i - 1) / 2) ≠ [] ∧ # int2bits((i - 1) / 2) ≠ 0, i < 0, j < 32, 0 < j ⊦ j = 0, i = ~1, bits2int ( true ' + (mklist(true, i→n(j) - 1) + int2bits((i - 1) / 2)).first ' + sublist(0, (# int2bits((i - 1) / 2))-1, (mklist(true, i→n(j) - 1) + int2bits((i - 1) / 2)).rest)) = bits2int(sublist(0, # int2bits((i - 1) / 2), mklist(true, i→n(j - 1)) + int2bits((i - 1) / 2))), ( (mklist(true, i→n(j) - 1) + int2bits((i - 1) / 2)).first ' + sublist(0, (# int2bits((i - 1) / 2))-1, (mklist(true, i→n(j) - 1) + int2bits((i - 1) / 2)).rest) ).first
Used simplifier rules: ⊦ ¬ bits + bits0 ≠ [] ↔ bits = [] ∧ bits0 = [];% ⊦ mklist(boolvar, m) = [] ↔ m = 0;% ⊦ int2bits(j) ≠ [];% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ # bits = 0 ↔ bits = []; Used terms: mklist(true, i→n(j) - 1) + int2bits((i - 1) / 2), # int2bits((i - 1) / 2)