| 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: ⊦ (lax0 + lax1).to-adr(n) = lax0.to-adr(n) + lax1.to-adr(n); (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]% ⊦ ax + ax0 = ax + ax1 ↔ ax0 = ax1; (s)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ lax0.to-adr(n) = lax1.to-adr(n) ↔ lax0 = lax1; (s)% ⊦ lax + lax0 = lax1 + lax0 ↔ lax = lax1; (s)%⊦ (ladr ' + lax).to-adr(n) = @(n, ladr.off, ladr.size) + lax.to-adr(n); (s)% ⊦ @(m, m0).off = m; (s)% ⊦ @(m, m0).size = m0; (s)% ⊦ adr + ax = adr ' + ax; (s)% ⊦ adr ' + ax = adr ' + ax0 ↔ ax = ax0; (s) Used terms: n, ax, ax1