| adr = @(m, m0, m1), inv(st), adr ∈ st, adr ∈ as, as ⊆ dom nodes(st), ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ # as = 0, as = ∅, adr ∈ remove-refsize0(st), dom nodes(st) ⊆ dom nodes(remove-refsize0(st)) |
inv(st), @(m, m0, m1) ∈ as, @(m, m0, m1) ∈ st, as ⊆ dom nodes(st), ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ # as = 0, as = ∅, @(m, m0, m1) ∈ remove-refsize0(st), dom nodes(st) ⊆ dom nodes(remove-refsize0(st))
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]