| # x0 = # lax0, # x = # lax2 + # lax1 + 1, st0[m] = mkblock(x, lax2 + @(m0, m1) ' + lax1, m2), st1[m] = mkblock(x0, lax0, m3), m ∈ st0, m ∈ st1, x ⊑ x0, lax2 + @(m0, m1) ' + lax1 ⊑ lax0, ∀ n. n ∈ st0 → n ∈ st1 ⊦ x[# lax2] = st1[@(m, m0, m1)], @(m, m0, m1) ∈ st1, @(m0, m1) ∈ lax2 |
⊦ adr ∈ st ↔ adr.lnum ∈ st ∧ @(adr.pos, adr.size) ∈ st[adr.lnum].ladrlist
Used simplifier rules: ⊦ @(m, m0, m1).lnum = m; (s)% ⊦ @(m, m0, m1).pos = m0; (s)% ⊦ @(m, m0, m1).size = m1; (s)% ⊦ mkblock(x, lax, m).ladrlist = lax; (s)% ⊦ ¬ ladr ∈ lax → ¬ lax0 + ladr ' + lax1 ⊑ lax; (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list] Used terms: st1, @(m, m0, m1)