| 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), maxino2 ∈ istore, istore0 ⊑ istore, pstate.journal? → nx ≠ [] ∧ pstate.lnum = nx.last ∧ pstate.lnum ∈ gstore2, pstate.index? → pstate.lnum ∈ istore ⊦ remove-refsize0(crash(istore, istore0)) = remove-refsize0(crash(istore[maxino2, istore[maxino2].ref-size:= n], istore0)), dups(nx) |
⊦ istore = istore0 ↔ (∀ n. (n ∈ istore ↔ n ∈ istore0) ∧ (n ∈ istore → istore[n] = istore0[n]))
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), maxino2 ∈ istore, istore0 ⊑ istore, pstate.index? → pstate.lnum ∈ istore, pstate.journal? → nx ≠ [] ∧ pstate.lnum = nx.last ∧ pstate.lnum ∈ gstore2 ⊦ dups(nx), ∀ n0. (n0 ∈ remove-refsize0(crash(istore, istore0)) ↔ n0 ∈ remove-refsize0(crash(istore[maxino2, istore[maxino2].ref-size:= n], istore0))) ∧ ( n0 ∈ remove-refsize0(crash(istore, istore0)) → remove-refsize0(crash(istore, istore0))[n0] = remove-refsize0(crash(istore[maxino2, istore[maxino2].ref-size:= n], istore0))[n0])
Used terms: remove-refsize0 (crash(istore[maxino2, istore[maxino2].ref-size:= n], istore0)), remove-refsize0(crash(istore, istore0))