| @(n, m, m0) ' + lax0.to-adr(n) = ax0 + ax1, ax0 = adr + ax, ∀ n, ax0, ax1. lax0.to-adr(n) = ax0 + ax1 → (∃ lax2, lax1. lax0 = lax2 + lax1 ∧ ax0 = lax2.to-adr(n) ∧ ax1 = lax1.to-adr(n)), @(n, m, m0) ∈ ax0 ∨ @(n, m, m0) ∈ ax1 ⊦ ∃ lax, lax1. @(m, m0) ' + lax0 = lax + lax1 ∧ ax0 = lax.to-adr(n) ∧ ax1 = lax1.to-adr(n) |
lax0.to-adr(n) = ax + ax1, ∀ n, ax0, ax1. lax0.to-adr(n) = ax0 + ax1 → (∃ lax2, lax1. lax0 = lax2 + lax1 ∧ ax0 = lax2.to-adr(n) ∧ ax1 = lax1.to-adr(n)) ⊦ ∃ lax, lax1. @(m, m0) ' + lax0 = lax + lax1 ∧ @(n, m, m0) ' + ax = lax.to-adr(n) ∧ ax1 = lax1.to-adr(n)
Used simplifier rules: ⊦ adr ∈ adr0 ' + ax ↔ adr = adr0 ∨ adr ∈ ax; (s)% ⊦ adr ' + ax = adr0 ' + ax0 ↔ adr = adr0 ∧ ax = ax0; (ws)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ adr + ax = adr ' + ax; (s)