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