| i < 0, j < 32, 0 < j ⊦ mklist(true, i→n(j) - 1) + int2bits((i - 1) / 2) = [], j = 0, i = ~1, bits2int(true ' + false ' + 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 |
⊦ m ≠ 0 → mklist(boolvar, m) = boolvar + mklist(boolvar, m - 1)
Used simplifier rules: ⊦ (boolvar ' + bits).first ↔ boolvar;% ⊦ (boolvar ' + bits).rest = bits;% ⊦ boolvar ' + bits ≠ [];% ⊦ boolvar + bits = boolvar ' + bits;% ⊦ mklist(boolvar, 0) = [];% ⊦ [] + bits = bits;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ int2bits(j) ≠ [];% ⊦ int2bits(j).first ↔ j < 0;%0 < j ⊦ i / (* j) < 0 ↔ i + j ≤ 0;% ⊦ i + (j - i0) = i + j - i0;% ⊦ (* i) + i0 - (* j) = (i - j) + i0;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i;% ⊦ i + (* j) ≤ (* j0) ↔ i ≤ j0 - j;% ⊦ i ≤ ~1 ↔ i < 0;% ⊦ ¬ i < j ↔ j ≤ i;% ⊦ i < j → (¬ ¬ j ≤ i ↔ false); Used terms: i→n(j) - 1, true