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