| istore0 = remove-refsize0(istore0), istore0 ⊑ istore ⊦ dom istore0 ⊆ dom remove-refsize0(crash(istore, istore0)) ∧ (∀ n. n ∈ istore0 ∧ n ∈ remove-refsize0(crash(istore, istore0)) → istore0[n].indlist ⊑ remove-refsize0(crash(istore, istore0))[n].indlist ∧ istore0[n].ladrlist ⊑ remove-refsize0(crash(istore, istore0))[n].ladrlist ∧ # istore0[n].indlist = # istore0[n].ladrlist ∧ # remove-refsize0(crash(istore, istore0))[n].indlist = # remove-refsize0(crash(istore, istore0))[n].ladrlist) |
istore0 = remove-refsize0(istore0), n ∈ istore0, n ∈ istore, istore0 ⊑ istore ⊦ crash(istore, istore0)[n].ref-size = 0, istore0[n].indlist ⊑ remove-refsize0(crash(istore, istore0))[n].indlist ∧ istore0[n].ladrlist ⊑ remove-refsize0(crash(istore, istore0))[n].ladrlist ∧ # istore0[n].indlist = # istore0[n].ladrlist ∧ # remove-refsize0(crash(istore, istore0))[n].indlist = # remove-refsize0(crash(istore, istore0))[n].ladrlist
Used simplifier rules: dom-istore-crash-refm-refsize0: ⊦ remove-refsize0(istore0) = istore0 → dom remove-refsize0(crash(istore, istore0)) = dom istore0;%crash-index-in: ⊦ n ∈ crash(istore, istore0) ↔ n ∈ istore0;%prefix-fwd-in: ⊦ istore ⊑ istore0 ∧ n ∈ istore → n ∈ istore0; (forward) from specification ablock-store-inv[index-store]% ⊦ n ∈ remove-refsize0(istore) ↔ n ∈ istore ∧ istore[n].ref-size ≠ 0; (ws)% ⊦ ns ⊆ ns; (s)