| ax0 = adr1 + ax3, referenced-adrs(ax0, ri) = adr ', adr ∈ ri, ∀ ri, adr. referenced-adrs(ax0, ri) = adr ' → (∃ ax2, ax1. ax0 = ax2 + referenced-adrs(ax0, ri) + ax1 ∧ referenced-adrs(ax2, ri) = [] ∧ referenced-adrs(ax1, ri) = [] ∧ adr ∈ ri) ⊦ adr0 ∈ ri, ∃ ax, ax1. adr0 ' + ax0 = ax + referenced-adrs(ax0, ri) + ax1 ∧ referenced-adrs(ax, ri) = [] ∧ referenced-adrs(ax1, ri) = [] |
(adr1 ∈ ri ⊃ adr1 ';[]) + referenced-adrs(ax3, ri) = adr ', adr ∈ ri, ∀ ri0, adr2. (adr1 ∈ ri0 ⊃ adr1 ';[]) + referenced-adrs(ax3, ri0) = adr2 ' → (∃ ax, ax0. adr1 ' + ax3 = ax + ((adr1 ∈ ri0 ⊃ adr1 ';[]) + referenced-adrs(ax3, ri0)) + ax0 ∧ referenced-adrs(ax, ri0) = [] ∧ referenced-adrs(ax0, ri0) = [] ∧ adr2 ∈ ri0) ⊦ adr0 ∈ ri, ∃ ax, ax0. adr0 ' + adr1 ' + ax3 = ax + adr ' + ax0 ∧ referenced-adrs(ax, ri) = [] ∧ referenced-adrs(ax0, ri) = []
Used simplifier rules: referenced-adrs-rec: ⊦ referenced-adrs(adr ' + ax, ri) = (adr ∈ ri ⊃ adr ';[]) + referenced-adrs(ax, ri);%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ adr + ax = adr ' + ax; (s)