| # ax2 = # gndx2, # lax = # gndx0 + # gndx2 + 1, lax.to-adr(lnum) = ax1 + adr1 ' + ax2, jvalid ↔ nd.key ∈ ri, gstore2[lnum] = groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax, m), ax = adr1 ' + ax2, err = ESUCCESS, err = err0, gndx = mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, jvalid, ndx = nodes(gstore2 ↓, ginval)[referenced-adrs(ax1, ri)], inv(gstore2 \ ginval), inv(groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax, m)), ri-cons(ri, nodes(gstore2 ↓, ginval)), lnum ∈ gstore2, nd.key ∈ ri, err = ESUCCESS → jvalid → nd.key ∈ ri, ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ax = [], gndx = [], lnum ∈ ginval, err = ESUCCESS ∧ jvalid ∧ ri[nd.key] = adr1, (err = ESUCCESS ∨ ⌊err⌋ ) ∧ ( err = ESUCCESS → (∃ ax0, gndx3. lax.to-adr(lnum) = ax0 + ax.tail ∧ gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2 = gndx3 + gndx.tail ∧ # ax.tail = # gndx.tail ∧ ndx = nodes(gstore2 ↓, ginval)[referenced-adrs(ax0, ri)])) ∧ ¬ # ax2 < (err = ESUCCESS ⊃ # ax.tail;0) |
# lax = # gndx0 + # gndx2 + 1, # ax2 = # gndx2, lax.to-adr(lnum) = ax1 + adr1 ' + ax2, gstore2[lnum] = groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax, m), inv(groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax, m)), inv(gstore2 \ ginval), ri-cons(ri, nodes(gstore2 ↓, ginval)), nd.key ∈ ri, lnum ∈ gstore2, adr1 ∈ ri ⊦ ri[nd.key] = adr1, lnum ∈ ginval
Used simplifier rules: abs-log-simp0: ⊦ ax0 = ax + ax2 → (ax0 = ax1 + ax2 ↔ ax = ax1);% ⊦ ¬ n < n; (s)%a: ⊦ (ndx + ndx0) + ndx1 = ndx + ndx0 + ndx1; from specification list[node-list]% ⊦ adr ' ≠ []; (s)% ⊦ fs[ax] = [] ↔ ax = []; (s)% ⊦ ndx = ndx + ndx0 ↔ ndx0 = []; (s)% ⊦ fs[ax0 + ax1] = fs[ax0] + fs[ax1]; (s)% ⊦ referenced-adrs(adr ', ri) = (adr ∈ ri ⊃ adr ';[]); (s)%⊦ referenced-adrs(ax0 + ax1, ri) = referenced-adrs(ax0, ri) + referenced-adrs(ax1, ri); (s)% ⊦ gndx + gndx0 = gndx1 + gndx0 ↔ gndx = gndx1; (s)% ⊦ (gnd ' + gndx).tail = gndx; (s)% ⊦ (adr ' + ax).tail = ax; (s)% ⊦ ¬ ⌊ESUCCESS⌋ ; (s)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ adr ' + ax ≠ []; (s)%a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store]% ⊦ gnd ' + gndx ≠ []; (s)