| st[m] = mkblock(x, lax, n0), st[m, mkblock(x, lax, n0 - m1)][n] = mkblock(x0, lax0, m2), st[n] = mkblock(x1, lax1, m3), m ∈ st, @(m, m0, m1) ∈ as, n ∈ st[m, mkblock(x, lax, n0 - m1)], n ∈ st → m3 = (as | n).size ⊦ # as = 0, as = ∅, m2 = ((as -- @(m, m0, m1)) | n).size |
⊦ n ≠ n0 → st[n0, ablock][n] = st[n]
Used simplifier rules: restrict-del: ⊦ (as -- @(m, m0, m1)) | m = (as | m) -- @(m, m0, m1);%size-rem: ⊦ (as -- adr).size = as.size - (adr ∈ as ⊃ adr.size;0);%restrict-in: ⊦ @(m, m0, m1) ∈ as | m ↔ @(m, m0, m1) ∈ as;%restrict-del-other: ⊦ m ≠ n → (as -- @(m, m0, m1)) | n = as | n;% ⊦ n ≠ n0 → (n ∈ st[n0, ablock] ↔ n ∈ st); (s)%⊦ mkblock(x, lax, m) = mkblock(x0, lax0, m0) ↔ x = x0 ∧ lax = lax0 ∧ m = m0; (ws)% ⊦ st[n, ablock][n] = ablock; (s)% ⊦ @(m, m0, m1).size = m1; (s)% ⊦ n ∈ st[n, ablock]; (s) Used terms: n, mkblock(x, lax, n0 - m1), m, st