| # int2bits(i) = i→n(j), 2 ^ j * 2 < i, 0 ≤ i, 0 ≤ j ⊦ bitsxor(int2bits(i), false ' + true ' + mklist(false, i→n(j))) = [], bitsxor(int2bits(i), false ' + true ' + mklist(false, i→n(j))).first ∧ sgn(bitsxor(int2bits(i), false ' + true ' + mklist(false, i→n(j))))[0, false] = int2bits(i) |
⊦ 0 ≤ j ∧ 1 < n → (# int2bits(j) = n ↔ 2 ^ (n→i(n) - 2) ≤ j ∧ j < 2 ^ (n→i(n) - 1))
0 ≤ i ∧ 1 < i→n(j), 2 ^ (n→i(i→n(j)) - 2) ≤ i ∧ i < 2 ^ (n→i(i→n(j)) - 1), 2 ^ j * 2 < i, 0 ≤ i, 0 ≤ j ⊦ bitsxor(int2bits(i), false ' + true ' + mklist(false, i→n(j))) = [], bitsxor(int2bits(i), false ' + true ' + mklist(false, i→n(j))).first ∧ sgn(bitsxor(int2bits(i), false ' + true ' + mklist(false, i→n(j))))[0, false] = int2bits(i)
Used simplifier rules: bitsxor-zerol: ⊦ bitsxor(false ', bits + boolvar ') = bits + boolvar;% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ ¬ i ≤ j ↔ j < i;% ⊦ i ≤ j → (¬ ¬ j < i ↔ false);% ⊦ 1 < m ↔ ¬(m = 0 ∨ m = 1);% ⊦ i→n(i) = 0 ↔ i = 0;% ⊦ ¬ i < j → (i ≠ j ↔ j < i);% ⊦ i ≠ j → (i ≤ j ↔ i < j);%0 ≤ i ⊦ i→n(i) = (* m) ↔ i = n→i(m);% ⊦ # bits = 0 ↔ bits = [];% ⊦ int2bits(j) ≠ [];% ⊦ i < j ∧ 0 ≤ i → 0 < j; (forward)% ⊦ 0 ≤ i → (# int2bits(i) = 1 ↔ i = 0);%n ≠ 0 ⊦ mklist(false, (* n)) = false ' + mklist(false, n -1);% ⊦ mklist(boolvar, 0) = [];% ⊦ bits + [] = bits;% ⊦ i < j ∧ 0 < i → 0 < j ∧ 1 < j; (forward)% ⊦ int2bits(0) = false ';% ⊦ bits + boolvar = bits + boolvar ';% ⊦ boolvar ' + bits ≠ []; Used terms: i→n(j), i