| # ax = # ndx, gstore[@(m, m0, m1)] = mkgnode(nd, m2, boolvar, boolvar0), @(m, m0, m1) ∈ gstore, n ≤ # ndx, ∀ n. n < # ndx → ax[n] ∈ gstore ∧ ¬ ax[n].lnum ∈ ginval ∧ gstore[ax[n]].nd = ndx[n] ⊦ m ∈ ginval, (@(m, m0, m1) ' + ax)[n] ∈ gstore ∧ ¬ (@(m, m0, m1) ' + ax)[n].lnum ∈ ginval ∧ gstore[(@(m, m0, m1) ' + ax)[n]].nd = (nd ' + ndx)[n] |
# ax = # ndx, gstore[@(m, m0, m1)] = mkgnode(nd, m2, boolvar, boolvar0), (@(m, m0, m1) ' + ax)[n] = @(m3, m4, m5), @(m, m0, m1) ∈ gstore, n ≤ # ndx, ∀ n. n < # ndx → ax[n] ∈ gstore ∧ ¬ ax[n].lnum ∈ ginval ∧ gstore[ax[n]].nd = ndx[n] ⊦ m ∈ ginval, (@(m, m0, m1) ' + ax)[n] ∈ gstore ∧ ¬ m3 ∈ ginval ∧ gstore[(@(m, m0, m1) ' + ax)[n]].nd = (nd ' + ndx)[n]
Used simplifier rules: ⊦ (m = adr.lnum ∧ m0 = adr.pos) ∧ m1 = adr.size ↔ adr = @(m, m0, m1); (elim) Used terms: (@(m, m0, m1) ' + ax)[n], m3, m4, m5