| # ax2 = # gndx2, # lax = # gndx0 + # gndx2 + 1, gstore2[lnum] = groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax, m), inv(gstore2 \ ginval), inv(groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax, m)), ri-cons(ri, nodes(gstore2 ↓, ginval)), adr1 ∈ ri, lnum ∈ gstore2, nd.key ∈ ri, ∃ lax0, lax1. lax = lax0 + lax1 ∧ ax1 = lax0.to-adr(lnum) ∧ adr1 ' + ax2 = lax1.to-adr(lnum) ⊦ ri[nd.key] = adr1, lnum ∈ ginval |
# ax2 = # gndx2, adr1 ' + ax2 = lax0.to-adr(lnum), # lax1 + # lax0 = # gndx0 + # gndx2 + 1, gstore2[lnum] = groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax1 + lax0, m), inv(gstore2 \ ginval), inv(groupblock(gndx0 + mkgnode(nd, m0, boolvar, boolvar0) ' + gndx2, lax1 + lax0, m)), ri-cons(ri, nodes(gstore2 ↓, ginval)), nd.key ∈ ri, lnum ∈ gstore2, adr1 ∈ ri, adr1 ∈ lax0.to-adr(lnum) ⊦ ri[nd.key] = adr1, lnum ∈ ginval
Used simplifier rules: fwd-inv-gblock-rem: ⊦ inv(gstore \ ginval) ∧ n ∈ gstore ∧ ¬ n ∈ ginval ∧ gstore[n] = gblock → inv(gblock); (forward) from specification apersistence-base%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]%in-14: ⊦ adr ' + ax = ax0 → adr ∈ ax0; (forward) from specification list[address-list-set]%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]% ⊦ #(lax + lax0) = # lax + # lax0; (s)