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