| (st0 \ (ns ++ n))[n0] = mkblock(x, lax, m), (st[n, ablock] \ (ns -- n))[n0] = mkblock(x0, lax0, m0), dom st0 \ ns ⊆ dom st \ ns, ∀ n. n ∈ st0 \ ns ∧ n ∈ st \ ns → (st0 \ ns)[n].list ⊑ (st \ ns)[n].list ∧ (st0 \ ns)[n].ladrlist ⊑ (st \ ns)[n].ladrlist ∧ # (st0 \ ns)[n].list = # (st0 \ ns)[n].ladrlist ∧ # (st \ ns)[n].list = # (st \ ns)[n].ladrlist ⊦ n ∈ st, ∀ n0. n0 ∈ (dom st0 \ ns) -- n → n0 ∈ (dom st ++ n) \ (ns -- n) |
(st[n, ablock] \ (ns -- n))[n0] = mkblock(x0, lax0, m0), (st0 \ (ns ++ n))[n0] = mkblock(x, lax, m), n1 ∈ st0, dom st0 \ ns ⊆ dom st \ ns, ∀ n. n ∈ st0 \ ns ∧ n ∈ st \ ns → (st0 \ ns)[n].list ⊑ (st \ ns)[n].list ∧ (st0 \ ns)[n].ladrlist ⊑ (st \ ns)[n].ladrlist ∧ # (st0 \ ns)[n].list = # (st0 \ ns)[n].ladrlist ∧ # (st \ ns)[n].list = # (st \ ns)[n].ladrlist ⊦ n1 = n, n1 ∈ (dom st ++ n) \ (ns -- n), n ∈ st, n1 ∈ ns
Used simplifier rules: ⊦ n ∈ dom st ↔ n ∈ st; (s)% ⊦ n ∈ ns \ ns0 ↔ n ∈ ns ∧ ¬ n ∈ ns0; (ws)% ⊦ n ∈ ns -- n0 ↔ n ≠ n0 ∧ n ∈ ns; (s)