| st1[n, mkblock([], [], 0)] ⊑ st0 ⊦ n ∈ st1, st1 ⊑ st0 |
n ∈ st0, n0 ∈ st1, n0 ∈ st0, dom st1 ⊆ dom st0, ∀ n0. n0 ∈ st1[n, mkblock([], [], 0)] ∧ n0 ∈ st0 → st1[n, mkblock([], [], 0)][n0].list ⊑ st0[n0].list ∧ st1[n, mkblock([], [], 0)][n0].ladrlist ⊑ st0[n0].ladrlist ∧ # st1[n, mkblock([], [], 0)][n0].list = # st1[n, mkblock([], [], 0)][n0].ladrlist ∧ # st0[n0].list = # st0[n0].ladrlist ⊦ n ∈ st1, st1[n0].list ⊑ st0[n0].list ∧ st1[n0].ladrlist ⊑ st0[n0].ladrlist ∧ # st1[n0].list = # st1[n0].ladrlist ∧ # st0[n0].list = # st0[n0].ladrlist
Used simplifier rules: blockstore-prefix: ⊦ st0 ⊑ st ↔ dom st0 ⊆ dom st ∧ (∀ n. n ∈ st0 ∧ n ∈ st → st0[n].list ⊑ st[n].list ∧ st0[n].ladrlist ⊑ st[n].ladrlist ∧ # st0[n].list = # st0[n].ladrlist ∧ # st[n].list = # st[n].ladrlist);% ⊦ n ∈ dom st ↔ n ∈ st; (s)% ⊦ ns ++ n ⊆ ns0 ↔ ns ⊆ ns0 ∧ n ∈ ns0; (ws)% ⊦ dom st[n, ablock] = dom st ++ n; (s)