| istore1 = remove-refsize0(crash(istore, istore0)), remove-refsize0(gstore1) = gstore1, remove-refsize0(istore0) = istore0, elems nx ∩ ginval1 = ∅, dom gstore1 ∪ elems nx = dom gstore2 ∪ ginval1, inv(gstore2 \ ginval1), inv(gstore1), inv(istore), inv(istore0), m ∈ istore, istore0 ⊑ istore, index(m).index? ∨ index(m).journal? ⊦ ⟨if EIO = ESUCCESS then {istore[index(m).lnum].indlist := istore[index(m).lnum].indlist + ind '; istore[index(m).lnum].ladrlist := istore[index(m).lnum].ladrlist + @(@(index(m).lnum, 0, ind.flashsize).pos, @(index(m).lnum, 0, ind.flashsize).size) '} else adr := ?, pstate := readonly; syn := ?⟩ (syn ∧ istore1 = remove-refsize0(crash(istore, istore0))), dups(nx) |
istore1 = remove-refsize0(crash(istore, istore0)), remove-refsize0(istore0) = istore0, remove-refsize0(gstore1) = gstore1, elems nx ∩ ginval1 = ∅, dom gstore1 ∪ elems nx = dom gstore2 ∪ ginval1, inv(istore0), inv(istore), inv(gstore1), inv(gstore2 \ ginval1), m ∈ istore, istore0 ⊑ istore, index(m).index? ∨ index(m).journal? ⊦ ⟨adr := ?, pstate := readonly; syn := ?⟩ (syn ∧ istore1 = remove-refsize0(crash(istore, istore0))), dups(nx)
Used simplifier rules: ⊦ ESUCCESS ≠ EIO; (s)