| remove-refsize0(istore0) = istore0, remove-refsize0(gstore1) = gstore1, elems nx ∩ ginval2 = ∅, dom gstore1 ∪ elems nx = dom gstore2 ∪ ginval2, inv(istore0), inv(istore), inv(gstore1), inv(gstore2 \ ginval2), inv(istore[maxino2, istore[maxino2].ref-size:= n]), maxino2 ∈ istore, istore0 ⊑ istore, pstate = unbuffered → syn, pstate.index? → pstate.lnum ∈ istore, pstate.journal? → nx ≠ [] ∧ pstate.lnum = nx.last ∧ pstate.lnum ∈ gstore2 ⊦ dups(nx), (pstate.index? → pstate.lnum ∈ istore[maxino2, istore[maxino2].ref-size:= n]) ∧ ( n0 ∈ istore0 ∧ n0 ∈ istore[maxino2, istore[maxino2].ref-size:= n] → istore0[n0].indlist ⊑ istore[maxino2, istore[maxino2].ref-size:= n][n0].indlist ∧ istore0[n0].ladrlist ⊑ istore[maxino2, istore[maxino2].ref-size:= n][n0].ladrlist ∧ # istore0[n0].indlist = # istore0[n0].ladrlist ∧ # istore[maxino2, istore[maxino2].ref-size:= n][n0].indlist = # istore[maxino2, istore[maxino2].ref-size:= n][n0].ladrlist) |
istore0[n0] = indexblock(indx, lax, m), remove-refsize0(gstore1) = gstore1, remove-refsize0(istore0) = istore0, elems nx ∩ ginval2 = ∅, dom gstore1 ∪ elems nx = dom gstore2 ∪ ginval2, inv(istore[maxino2, istore[maxino2].ref-size:= n]), inv(gstore2 \ ginval2), inv(gstore1), inv(istore), inv(istore0), maxino2 ∈ istore, istore0 ⊑ istore, pstate.journal? → nx ≠ [] ∧ pstate.lnum = nx.last ∧ pstate.lnum ∈ gstore2, pstate.index? → pstate.lnum ∈ istore, pstate = unbuffered → syn ⊦ dups(nx), (pstate.index? → pstate.lnum ∈ istore[maxino2, istore[maxino2].ref-size:= n]) ∧ ( n0 ∈ istore0 ∧ n0 ∈ istore[maxino2, istore[maxino2].ref-size:= n] → indx ⊑ istore[maxino2, istore[maxino2].ref-size:= n][n0].indlist ∧ lax ⊑ istore[maxino2, istore[maxino2].ref-size:= n][n0].ladrlist ∧ # indx = # lax ∧ # istore[maxino2, istore[maxino2].ref-size:= n][n0].indlist = # istore[maxino2, istore[maxino2].ref-size:= n][n0].ladrlist)
Used simplifier rules: ⊦ (indx = iblock.indlist ∧ lax = iblock.ladrlist) ∧ m = iblock.ref-size ↔ iblock = indexblock(indx, lax, m); (elim) Used terms: istore0[n0], indx, lax, m