| # x = # lax2 + # lax1 + 1, # x + # z = # lax2 + (# lax1 + # lax) + 1, st0[m] = mkblock(x, lax2 + @(m0, m1) ' + lax1, m2), st1[m] = mkblock(x + z, (lax2 + @(m0, m1) ' + lax1) + lax, m3), m ∈ st0, m ∈ st1, ∀ n. n ∈ st0 → n ∈ st1 ⊦ x[# lax2] = (x + z)[# lax2], # lax2 < # x, @(m0, m1) ∈ lax2 |
# x = # lax2 + # lax1 + 1, # x + # z = # lax2 + (# lax1 + # lax) + 1, st1[m] = mkblock(x + z, (lax2 + @(m0, m1) ' + lax1) + lax, m3), st0[m] = mkblock(x, lax2 + @(m0, m1) ' + lax1, m2), m ∈ st1, m ∈ st0, # x ≤ # lax2, ∀ n. n ∈ st0 → n ∈ st1 ⊦ x[# lax2] = z[# lax2 - # x], @(m0, m1) ∈ lax2
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ ¬ n < # x → (x + y)[n] = y[n - # x]; (s)