| adr ' + referenced-adrs(ax2, ri) = ax0 + ax1, ax0 = [], adr ∈ ri, ∀ ri, ax0, ax1. referenced-adrs(ax2, ri) = ax0 + ax1 → (∃ ax4, ax3. ax2 = ax4 + ax3 ∧ referenced-adrs(ax4, ri) = ax0 ∧ referenced-adrs(ax3, ri) = ax1), adr ∈ ax0 ∨ adr ∈ ax1 ⊦ ∃ ax, ax3. adr ' + ax2 = ax + ax3 ∧ referenced-adrs(ax, ri) = ax0 ∧ referenced-adrs(ax3, ri) = ax1 |
adr ∈ ri, ∀ ri, ax0, ax1. referenced-adrs(ax2, ri) = ax0 + ax1 → (∃ ax4, ax3. ax2 = ax4 + ax3 ∧ referenced-adrs(ax4, ri) = ax0 ∧ referenced-adrs(ax3, ri) = ax1) ⊦ ∃ ax, ax3. adr ' + ax2 = ax + ax3 ∧ referenced-adrs(ax, ri) = [] ∧ referenced-adrs(ax3, ri) = adr ' + referenced-adrs(ax2, ri)
Used simplifier rules: ⊦ adr ∈ adr0 ' + ax ↔ adr = adr0 ∨ adr ∈ ax; (s)%in-14: ⊦ adr ' + ax = ax0 → adr ∈ ax0; (forward) from specification list[address-list-set]% ⊦ ¬ adr ∈ []; (s)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ [] + ax = ax; (s)