| remove-refsize0(gstore0) = gstore0, elems nx ∩ ginval2 = ∅, dom gstore0 ∪ elems nx = dom gstore ∪ ginval2, # lax < # gndx, inv(gstore[nx.last]), inv(gstore0), inv(gstore \ ginval2), inv-flashsize(prefixn(# lax, gndx), lax), ri-inj(fi1), ri-inj(fi2), nx.last ∈ gstore, ⌊err0⌋ ⊦ # lax = # gndx, gndx = [], nx = [], dups(lax), dups(gstore[nx.last].ladrlist), dups(nx), dups(gstore[nx.last].ladrlist + lax), inv((gstore[nx.last].gndlist:= (gstore[nx.last].gndlist + prefixn(# lax, gndx))).ladrlist:= (gstore[nx.last].ladrlist + lax)), nx.last ∈ ginval2 |
gstore[nx.last] = groupblock(gndx0, lax0, m), remove-refsize0(gstore0) = gstore0, elems nx ∩ ginval2 = ∅, dom gstore0 ∪ elems nx = dom gstore ∪ ginval2, # lax < # gndx, inv(gstore \ ginval2), inv(gstore0), inv(gstore[nx.last]), inv-flashsize(prefixn(# lax, gndx), lax), ri-inj(fi2), ri-inj(fi1), nx.last ∈ gstore, ⌊err0⌋ ⊦ # lax = # gndx, gndx = [], nx = [], dups(lax0 + lax), dups(nx), dups(lax0), dups(lax), inv((gstore[nx.last].gndlist:= (gndx0 + prefixn(# lax, gndx))).ladrlist:= (lax0 + lax)), nx.last ∈ ginval2
Used simplifier rules: ⊦ (gndx = gblock.gndlist ∧ lax = gblock.ladrlist) ∧ m = gblock.ref-size ↔ gblock = groupblock(gndx, lax, m); (elim) Used terms: gstore[nx.last], gndx0, lax0, m