| 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) ⊦ (⌊EIO⌋ ∨ EIO = ESUCCESS) ∧ ⟨err := EIO; nx0 := nx; maxino := maxino3; gstore1 := crash(gstore4, gstore3, ginval6, nx); gstore0 := gstore4; gstore := gstore3; ginval0 := ginval6; ginval := ginval2; fi := fi2; if err = ESUCCESS then {gstore0 := remove-refsize0(gstore0); gstore := gstore0; ginval0 := ∅; ginval := ginval1; nx := []; maxino := maxino0; fi := fi3}; ginval1 := ?⟩ ( ginval6 = ginval0 ∧ gstore1 = crash(gstore0, gstore, ginval0, nx) ∧ gstore3 = gstore ∧ nx0 = nx ∧ maxino3 = maxino ∧ ginval2 = ginval ∧ fi2 = fi), dups(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), ¬ dups(nx) ⊦ ⟨err := EIO; nx0 := nx; maxino := maxino3; gstore1 := crash(gstore4, gstore3, ginval6, nx); gstore0 := gstore4; gstore := gstore3; ginval0 := ginval6; ginval := ginval2; fi := fi2; if err = ESUCCESS then {gstore0 := remove-refsize0(gstore0); gstore := gstore0; ginval0 := ∅; ginval := ginval1; nx := []; maxino := maxino0; fi := fi3}; ginval1 := ?⟩ (ginval6 = ginval0 ∧ gstore1 = crash(gstore0, gstore, ginval0, nx) ∧ gstore3 = gstore ∧ nx0 = nx ∧ maxino3 = maxino ∧ ginval2 = ginval ∧ fi2 = fi)
Used simplifier rules: ⊦ ⌊EIO⌋ ; (s)