| # ax = # ndx, ax[n] = @(m3, m4, m5), gstore[@(m, m0, m1)] = mkgnode(nd0, m2, boolvar, boolvar0), ∀ n. ¬ # ndx < n → (@(m, m0, m1) ' + ax)[n] ∈ gstore ∧ ¬ (@(m, m0, m1) ' + ax)[n].lnum ∈ ginval ∧ gstore[(@(m, m0, m1) ' + ax)[n]].nd = (nd ' + ndx)[n] ⊦ @(m, m0, m1) ∈ gstore ∧ ¬ m ∈ ginval ∧ nd0 = nd ∧ (n < # ndx → @(m3, m4, m5) ∈ gstore ∧ ¬ m3 ∈ ginval ∧ gstore[@(m3, m4, m5)].nd = ndx[n]) |
# ax = # ndx, gstore[@(m, m0, m1)] = mkgnode(nd0, m2, boolvar, boolvar0), ax[n] = @(m3, m4, m5), gstore[@(m3, m4, m5)] = mkgnode(nd1, m6, boolvar1, boolvar2), ∀ n. ¬ # ndx < n → (@(m, m0, m1) ' + ax)[n] ∈ gstore ∧ ¬ (@(m, m0, m1) ' + ax)[n].lnum ∈ ginval ∧ gstore[(@(m, m0, m1) ' + ax)[n]].nd = (nd ' + ndx)[n] ⊦ @(m, m0, m1) ∈ gstore ∧ ¬ m ∈ ginval ∧ nd0 = nd ∧ (n < # ndx → @(m3, m4, m5) ∈ gstore ∧ ¬ m3 ∈ ginval ∧ nd1 = ndx[n])
Used simplifier rules: ⊦ ((nd = gnd.nd ∧ m = gnd.sqnum) ∧ (boolvar ↔ gnd.start)) ∧ (boolvar0 ↔ gnd.end) ↔ gnd = mkgnode(nd, m, boolvar, boolvar0); (elim) Used terms: gstore[@(m3, m4, m5)], nd1, m6, boolvar1, boolvar2