| bitsand(boolvar ' + bits1.butlast, boolvar0 ' + bits.butlast) = boolvar1 ' + bits0.butlast, bits1.last ∧ bits.last ↔ bits0.last, ∀ bits2, boolvar, bits1, boolvar0, boolvar1, bits0. # bits2 < # bits → bitsand(boolvar ' + bits1, boolvar0 ' + bits2) = boolvar1 ' + bits0 → (boolvar1 ↔ boolvar ∧ boolvar0) ⊦ bits0 = [], bits = [], bits1 = [], boolvar1 ↔ boolvar ∧ boolvar0 |
Used simplifier rules: ⊦ bits ≠ [] → # bits.butlast = # bits - 1;% ⊦ ¬ m < n ↔ n ≤ m;% ⊦ m ≤ m - 1 → m = 0; (forward)% ⊦ # bits = 0 ↔ bits = [];% ⊦ m < 1 ↔ m = 0;% ⊦ ¬ m ≤ n ↔ n < m;%n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0;% ⊦ m < n + 1 ↔ ¬ n < m;% ⊦ ¬ n < n;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m; Used terms: bits.butlast, boolvar, bits1.butlast, boolvar0, boolvar1, bits0.butlast