| mklist(true, # bits0) = bits0 ∧ bitsinvert(bits0).last → bits0 = [] ⊦ mklist(true, #(boolvar + bits0)) = boolvar + bits0 ∧ bitsinvert(boolvar + bits0).last → boolvar + bits0 = [] |
mklist(true, # bits0) = bits0, (false ' + bitsinvert(bits0)).last ⊦ bits0 = [], bitsinvert(bits0).last
Used simplifier rules: invert-one: ⊦ bitsinvert(true ' + bits) = false + 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;