| lax.to-adr(n) = ax0 + ax1 ⊦ ∃ lax0, lax1. lax = lax0 + lax1 ∧ ax0 = lax0.to-adr(n) ∧ ax1 = lax1.to-adr(n) |
(ladr + lax0).to-adr(n) = ax0 + 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)) ⊦ ∃ lax2, lax1. ladr + lax0 = lax2 + lax1 ∧ ax0 = lax2.to-adr(n) ∧ ax1 = lax1.to-adr(n)
Used simplifier rules: laddress-list freely generated by [], +;;% ⊦ ([]).to-adr(n) = []; (s)% ⊦ ax + ax0 = [] ↔ ax = [] ∧ ax0 = []; (as)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ lax.to-adr(n) = [] ↔ lax = []; (s)% ⊦ [] + lax = lax; (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]