| st[m] = mkblock(x, lax, 0), inv(st), m ∈ st, @(m, m0, m1) ∈ as, @(m, m0, m1) ∈ st, as ⊆ dom nodes(st), @(m, m0, m1) ∈ as | m → @(m, m0, m1).size = 0 ⊦ # as = 0, as = ∅, dom nodes(st) ⊆ dom nodes(remove-refsize0(st)) |
st[m] = mkblock(x, lax, 0), inv(st), @(m, m0, 0) ∈ as, m ∈ st, @(m, m0, 0) ∈ st, as ⊆ dom nodes(st) ⊦ # as = 0, as = ∅, dom nodes(st) ⊆ dom nodes(remove-refsize0(st))
Used simplifier rules: restrict-in: ⊦ @(m, m0, m1) ∈ as | m ↔ @(m, m0, m1) ∈ as;% ⊦ 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]% ⊦ @(m, m0, m1).size = m1; (s)