| 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]) ∧ dom istore0 ⊆ dom istore[maxino2, istore[maxino2].ref-size:= n] ∧ (∀ n0. 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) |
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)
Used simplifier rules: ⊦ istore ⊑ istore0 → dom istore ⊆ dom istore0; (ss)% ⊦ n ∈ istore → dom istore ++ n = dom istore; (s)% ⊦ dom istore[n, iblock] = dom istore ++ n; (s)