| st[n] = mkblock(x, lax, m), n ∈ st, as ⊆ dom nodes(st), ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ m + m1 = ((as | n) ++ @(n, m0, m1)).size, @(m0, m1) ∈ lax |
⊦ ¬ adr ∈ as → (as ++ adr).size = as.size + adr.size
st[n] = mkblock(x, lax, m), n ∈ st, as ⊆ dom nodes(st), ∀ n. n ∈ st → st[n].ref-size = (as | n).size ⊦ m + m1 = (as | n).size + @(n, m0, m1).size, @(m0, m1) ∈ lax, @(n, m0, m1) ∈ as | n
Used simplifier rules: restrict-in: ⊦ @(m, m0, m1) ∈ as | m ↔ @(m, m0, m1) ∈ as;% ⊦ adr ∈ as → as ++ adr = as; (s)%sub-in: ⊦ adr ∈ as ∧ as ⊆ as0 → adr ∈ as0; (forward) from specification set-basic[address-store]%ne-01: ⊦ adr ∈ as → as ≠ ∅; (forward) from specification set-basic[address-store]% ⊦ adr ∈ dom ast ↔ adr ∈ ast; (s)% ⊦ adr ∈ nodes(st) ↔ adr ∈ st; (s)% ⊦ st[n] = mkblock(x, lax, m0) ∧ @(n, n0, n1) ∈ st → @(n0, n1) ∈ lax; (ss) Used terms: @(n, m0, m1), as | n