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