| istore[maxino2, istore[maxino2].ref-size:= n][n0] = indexblock(indx1, lax1, m1), istore0[n0] = indexblock(indx, lax, m), indexblock(istore[n0].indlist, istore[n0].ladrlist, istore0[n0].ref-size) = indexblock(indx0, lax0, m0), remove-refsize0(istore0) = istore0, remove-refsize0(gstore1) = gstore1, elems nx ∩ ginval1 = ∅, dom gstore1 ∪ elems nx = dom gstore2 ∪ ginval1, inv(indexblock(indx, lax, m)), inv(istore0), inv(istore), inv(gstore1), inv(gstore2 \ ginval1), maxino2 ∈ istore, n0 ∈ istore, n0 ∈ istore0, istore0 ⊑ istore, pstate.index? → pstate.lnum ∈ istore, pstate.journal? → nx ≠ [] ∧ pstate.lnum = nx.last ∧ pstate.lnum ∈ gstore2 ⊦ indexblock(indx0, lax0, m0) = indexblock(indx1, lax1, m), m = 0, m0 = 0, dups(nx) |
istore[maxino2, istore[maxino2].ref-size:= n][n0] = indexblock(indx1, lax1, m1), istore0[n0] = indexblock(indx, lax, m), remove-refsize0(istore0) = istore0, remove-refsize0(gstore1) = gstore1, elems nx ∩ ginval1 = ∅, dom gstore1 ∪ elems nx = dom gstore2 ∪ ginval1, inv(indexblock(indx, lax, m)), inv(istore0), inv(istore), inv(gstore1), inv(gstore2 \ ginval1), maxino2 ∈ istore, n0 ∈ istore, n0 ∈ istore0, istore0 ⊑ istore, pstate.index? → pstate.lnum ∈ istore, pstate.journal? → nx ≠ [] ∧ pstate.lnum = nx.last ∧ pstate.lnum ∈ gstore2 ⊦ indexblock(istore[n0].indlist, istore[n0].ladrlist, m) = indexblock(indx1, lax1, m), m = 0, dups(nx)
Used simplifier rules: ⊦ indexblock(indx, lax, m).ref-size = m; (s)%⊦ indexblock(indx, lax, m) = indexblock(indx0, lax0, m0) ↔ indx = indx0 ∧ lax = lax0 ∧ m = m0; (ws)