| true ∈ bits0 ∧ false ∈ bits0 → (∃ boolvar, n, boolvar0, bits1. bits0 = mklist(boolvar, n) + boolvar0 ' + bits1 ∧ sgn(mklist(boolvar, n) + boolvar0 ' + bits1) = boolvar ' + boolvar0 ' + bits1 ∧ ¬(boolvar ↔ boolvar0) ∧ n ≠ 0), true ∈ boolvar + bits0, false ∈ boolvar + bits0 ⊦ ∃ boolvar1, n, boolvar0, bits1. boolvar + bits0 = mklist(boolvar1, n) + boolvar0 ' + bits1 ∧ sgn(mklist(boolvar1, n) + boolvar0 ' + bits1) = boolvar1 ' + boolvar0 ' + bits1 ∧ ¬(boolvar1 ↔ boolvar0) ∧ n ≠ 0 |
true ∈ bits0 ∧ false ∈ bits0 → bits0 = mklist(boolvar0, n) + boolvar1 ' + bits ∧ sgn(mklist(boolvar0, n) + boolvar1 ' + bits) = boolvar0 ' + boolvar1 ' + bits ∧ ¬(boolvar0 ↔ boolvar1) ∧ n ≠ 0 ⊦ ¬ boolvar ∧ ¬ true ∈ bits0, boolvar ∧ ¬ false ∈ bits0, ∃ boolvar2, n0, boolvar3, bits1. boolvar ' + bits0 = mklist(boolvar2, n0) + boolvar3 ' + bits1 ∧ sgn(mklist(boolvar2, n0) + boolvar3 ' + bits1) = boolvar2 ' + boolvar3 ' + bits1 ∧ ¬(boolvar2 ↔ boolvar3) ∧ n0 ≠ 0
Used simplifier rules: ⊦ (bits + bits0) + bits1 = bits + bits0 + bits1;% ⊦ boolvar ∈ boolvar0 ' ↔ boolvar ↔ boolvar0;% ⊦ boolvar ∈ bits + bits0 ↔ ¬ ¬(boolvar ∈ bits ∨ boolvar ∈ bits0);% ⊦ boolvar + bits = boolvar ' + bits;