| # bits ≤ (n - # bits) + m, n ≤ (n - # bits) + m, m ≤ n, # bits ≤ m, # bits ≤ n ⊦ restn(n - m, mklist(bits.first, n - # bits)) = mklist(bits.first, m - # bits), bits = [] |
Used simplifier rules: ⊦ n ≤ m → m + n0 - n = (m - n) + n0;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m;% ⊦ mklist(boolvar, m + n) = mklist(boolvar, m) + mklist(boolvar, n);%⊦ restn(m, mklist(boolvar, n) + mklist(boolvar, m)) = mklist(boolvar, n);% ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ mklist(boolvar, m) = mklist(boolvar, n) ↔ m = n;%n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: n, m, n0