| adr = @(m, m0, m1), adr ∈ st, adr ∈ as, as ⊆ dom nodes(st), ∀ adr. adr ∈ as → adr.size ≠ 0, ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ # as = 0, as = ∅, m ∈ remove-refsize0(st) ∧ @(m0, m1) ∈ remove-refsize0(st)[m].ladrlist ∧ (nodes(st) | as)[adr] = remove-refsize0(st)[adr] |
@(m, m0, m1) ∈ as, @(m, m0, m1) ∈ st, as ⊆ dom nodes(st), ∀ adr. adr ∈ as → adr.size ≠ 0, ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ # as = 0, as = ∅, m ∈ remove-refsize0(st) ∧ @(m0, m1) ∈ remove-refsize0(st)[m].ladrlist ∧ (nodes(st) | as)[@(m, m0, m1)] = remove-refsize0(st)[@(m, m0, m1)]
Used simplifier rules: ⊦ adr ∈ nodes(st) ↔ adr ∈ st; (s)% ⊦ adr ∈ dom ast ↔ adr ∈ ast; (s)%sub-in: ⊦ adr ∈ as ∧ as ⊆ as0 → adr ∈ as0; (forward) from specification set-basic[address-store]