| syn ↔ true, fi = fi2, fi0 = fi3, fi1 = fi2, ginval = ginval2, ginval0 = ginval6, ginval1 = ginval3, ginval4 = ginval6, ginval5 = ginval2, gstore = gstore3, gstore0 = gstore4, gstore1 = crash(gstore4, gstore3, ginval6, nx), gstore2 = gstore3, maxino = maxino3, maxino0 = maxino1, maxino2 = maxino3, nx0 = nx, remove-refsize0(gstore3) = gstore3, elems nx ∩ ginval6 = ∅, dom remove-refsize0(gstore4) ∩ ginval6 = ∅, dom gstore3 ∪ elems nx = dom gstore4 ∪ ginval6, inv(gstore3), inv(gstore4 \ ginval6), ri-inj(fi2), ri-inj(fi3) ⊦ ⟨if syn ∧ dom remove-refsize0(gstore0) ∩ ginval0 = ∅ then {fail_or_success#(; ; err); if err = ESUCCESS then {gstore0 := remove-refsize0(gstore0); gstore := gstore0; ginval0 := ∅; ginval := ginval1; nx := []; maxino := maxino0; fi := fi0}; ginval1 := ?} else abort⟩ (ginval4 = ginval0 ∧ gstore1 = crash(gstore0, gstore, ginval0, nx) ∧ gstore2 = gstore ∧ nx0 = nx ∧ maxino2 = maxino ∧ ginval5 = ginval ∧ fi1 = fi), dups(nx) |
syn ↔ true, fi = fi2, fi0 = fi3, fi1 = fi2, ginval = ginval2, ginval0 = ginval6, ginval1 = ginval3, ginval4 = ginval6, ginval5 = ginval2, gstore = gstore3, gstore0 = gstore4, gstore1 = crash(gstore4, gstore3, ginval6, nx), gstore2 = gstore3, maxino = maxino3, maxino0 = maxino1, maxino2 = maxino3, nx0 = nx, remove-refsize0(gstore3) = gstore3, dom remove-refsize0(gstore4) ∩ ginval6 = ∅, elems nx ∩ ginval6 = ∅, dom gstore3 ∪ elems nx = dom gstore4 ∪ ginval6, inv(gstore4 \ ginval6), inv(gstore3), ri-inj(fi3), ri-inj(fi2) ⊦ ⟨fail_or_success#(; ; err); if err = ESUCCESS then {gstore0 := remove-refsize0(gstore0); gstore := gstore0; ginval0 := ∅; ginval := ginval1; nx := []; maxino := maxino0; fi := fi0}; ginval1 := ?⟩ (ginval4 = ginval0 ∧ gstore1 = crash(gstore0, gstore, ginval0, nx) ∧ gstore2 = gstore ∧ nx0 = nx ∧ maxino2 = maxino ∧ ginval5 = ginval ∧ fi1 = fi), dups(nx)