| err0 = ESUCCESS ↔ # lax = # gndx, fi = fi1, fi0 = fi2, ginval = ginval1, ginval0 = ginval2, remove-refsize0(gstore0) = gstore0, elems nx ∩ ginval2 = ∅, dom gstore0 ∪ elems nx = dom gstore ∪ ginval2, inv(gstore[nx.last]), inv(gstore0), inv(gstore \ ginval2), inv-flashsize(prefixn(# lax, gndx), lax), ri-inj(fi1), ri-inj(fi2), nx.last ∈ gstore, # lax ≤ # gndx, ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟪gstore := gstore[nx.last, gstore[nx.last].gndlist:= (gstore[nx.last].gndlist + prefixn(# lax, gndx))] [nx.last, gstore[nx.last, gstore[nx.last].gndlist:= (gstore[nx.last].gndlist + prefixn(# lax, gndx))][nx.last] .ladrlist:= (gstore[nx.last, gstore[nx.last].gndlist:= (gstore[nx.last].gndlist + prefixn(# lax, gndx))][nx.last].ladrlist + lax) ]; if err0 ≠ ESUCCESS then ax := ?; syn := ?⟫ (inv(gstore \ ginval2) ∧ dom gstore0 ∪ elems nx = dom gstore ∪ ginval2), nx = [], dups(nx), dups(gstore[nx.last].ladrlist + lax) |
err0 = ESUCCESS ↔ # lax = # gndx, fi = fi1, fi0 = fi2, ginval = ginval1, ginval0 = ginval2, remove-refsize0(gstore0) = gstore0, elems nx ∩ ginval2 = ∅, dom gstore0 ∪ elems nx = dom gstore ∪ ginval2, inv(gstore \ ginval2), inv(gstore0), inv(gstore[nx.last]), inv-flashsize(prefixn(# lax, gndx), lax), ri-inj(fi2), ri-inj(fi1), nx.last ∈ gstore[nx.last, gstore[nx.last].gndlist:= (gstore[nx.last].gndlist + prefixn(# lax, gndx))], nx.last ∈ gstore, # lax ≤ # gndx, ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟪if err0 ≠ ESUCCESS then ax := ?; syn := ?⟫ ( inv ( gstore[nx.last, gstore[nx.last].gndlist:= (gstore[nx.last].gndlist + prefixn(# lax, gndx))] [nx.last, gstore[nx.last, gstore[nx.last].gndlist:= (gstore[nx.last].gndlist + prefixn(# lax, gndx))][nx.last] .ladrlist:= (gstore[nx.last, gstore[nx.last].gndlist:= (gstore[nx.last].gndlist + prefixn(# lax, gndx))][nx.last].ladrlist + lax) ] \ ginval2) ∧ dom gstore0 ∪ elems nx = dom gstore[nx.last, gstore[nx.last].gndlist:= (gstore[nx.last].gndlist + prefixn(# lax, gndx))] [nx.last, gstore[nx.last, gstore[nx.last].gndlist:= (gstore[nx.last].gndlist + prefixn(# lax, gndx))][nx.last] .ladrlist:= (gstore[nx.last, gstore[nx.last].gndlist:= (gstore[nx.last].gndlist + prefixn(# lax, gndx))][nx.last].ladrlist + lax) ] ∪ ginval2), nx = [], dups(gstore[nx.last].ladrlist + lax), dups(nx)
Used simplifier rules: ⊦ n ∈ gstore[n, gblock]; (s)