| (st[n, ablock] \ (ns -- n))[n0] = mkblock(x0, lax0, m0), (st0 \ (ns ++ n))[n0] = mkblock(x, lax, m), n0 ∈ st0 \ (ns ++ n), n0 ∈ st[n, ablock] \ (ns -- n), 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, x ⊑ x0 ∧ lax ⊑ lax0 ∧ # x = # lax ∧ # x0 = # lax0 |
(st[n, ablock] \ (ns -- n))[n0] = mkblock(x0, lax0, m0), st0[n0] = mkblock(x, lax, m), n0 ∈ st0, n0 ∈ st, 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 ∈ ns, x ⊑ x0 ∧ lax ⊑ lax0 ∧ # x = # lax ∧ # x0 = # lax0
Used simplifier rules: ⊦ n ≠ n0 → (n ∈ st[n0, ablock] ↔ n ∈ st); (s)% ⊦ n ≠ n0 ∧ ¬ n0 ∈ ns → (st \ (ns ++ n))[n0] = st[n0]; (s)% ⊦ n ∈ ns ++ n0 ↔ n = n0 ∨ n ∈ ns; (s)% ⊦ n ∈ ns -- n0 ↔ n ≠ n0 ∧ n ∈ ns; (s)% ⊦ n ∈ st \ ns ↔ n ∈ st ∧ ¬ n ∈ ns; (ws)