| mklist(false, # bits0) = bits0 → bits0 = [] ∨ bitsinvert(bits0).last ⊦ mklist(false, #(boolvar + bits0)) = boolvar + bits0 → boolvar + bits0 = [] ∨ bitsinvert(boolvar + bits0).last |
mklist(false, # bits0) = bits0, bitsinvert(bits0).last ⊦ bits0 = [], (true ' + bitsinvert(bits0)).last
Used simplifier rules: invert-zero: ⊦ bitsinvert(false ' + bits) = true + bitsinvert(bits);%invert-base: ⊦ bitsinvert([]) = [];% ⊦ boolvar '.last ↔ boolvar;% ⊦ bits + [] = bits;% ⊦ mklist(boolvar, 0) = [];% ⊦ # [] = 0;% ⊦ boolvar ' + bits ≠ [];%⊦ boolvar ' + bits = boolvar0 ' + bits0 ↔ (boolvar ↔ boolvar0) ∧ bits = bits0;% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ mklist(boolvar, 1) = boolvar ';% ⊦ mklist(boolvar, m + n) = mklist(boolvar, m) + mklist(boolvar, n);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ # boolvar ' = 0 +1;% ⊦ #(bits + bits0) = # bits + # bits0;% ⊦ boolvar + bits = boolvar ' + bits;