| # ax = # ndx, gstore[@(m, m0, m1)] = mkgnode(nd, m2, boolvar, boolvar0), (@(m, m0, m1) ' + ax)[n] = @(m3, m4, m5), gstore[@(m3, m4, m5)] = mkgnode(nd0, m6, boolvar1, boolvar2), @(m, m0, m1) ∈ gstore, n ≤ # ndx, ∀ n. n < # ndx → ax[n] ∈ gstore ∧ ¬ ax[n].lnum ∈ ginval ∧ gstore[ax[n]].nd = ndx[n] ⊦ m ∈ ginval, @(m3, m4, m5) ∈ gstore ∧ ¬ m3 ∈ ginval ∧ nd0 = (nd ' + ndx)[n] |
⊦ ¬ n < # ax → (ax + ax0)[n] = ax0[n - # ax]
# ax = # ndx, gstore[@(m3, m4, m5)] = mkgnode(nd0, m6, boolvar1, boolvar2), ax[n - # @(m, m0, m1) '] = @(m3, m4, m5), 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] ⊦ n < # @(m, m0, m1) ', m ∈ ginval, @(m3, m4, m5) ∈ gstore ∧ ¬ m3 ∈ ginval ∧ nd0 = (nd ' + ndx)[n]
Used simplifier rules: ⊦ n < # ax → (ax + ax0)[n] = ax[n]; (s)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ # adr ' = 0 +1; (s)% ⊦ m < 1 ↔ m = 0; (s)% ⊦ adr '[0] = adr; (s)% ⊦ @(m, m0, m1) = @(m2, m3, m4) ↔ m = m2 ∧ m0 = m3 ∧ m1 = m4; (ws)% ⊦ 0 ≤ m; (s)% ⊦ (nd ' + ndx)[0] = nd; (s)%a: ⊦ (ndx + ndx0) + ndx1 = ndx + ndx0 + ndx1; from specification list[node-list]%⊦ mkgnode(nd, m, boolvar, boolvar0) = mkgnode(nd0, m0, boolvar1, boolvar2) ↔ nd = nd0 ∧ m = m0 ∧ (boolvar ↔ boolvar1) ∧ (boolvar0 ↔ boolvar2); (ws) Used terms: n, ax, @(m, m0, m1) '