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