| fs[adr0].key = fs[adr].key, referenced-adrs(ax2, ri) = [], referenced-adrs(ax, ri) = [], ri-cons(ri, fs), adr0 ∈ ri, ∃ key. key ∈ ri ∧ ri[key] = adr ⊦ adr = adr0, dups(ax0), dups(ax2), dups(ax), dups(ax3), dups(fs[referenced-adrs(ax3, ri)].keys + fs[referenced-adrs(ax0, ri)].keys), dups(fs[referenced-adrs(ax0, ri)].keys), dups(fs[referenced-adrs(ax3, ri)].keys), dups((ax3 + ax) + ax2), dups((ax3 + ax) + ax2 + ax0), dups(ax + ax2 + ax0), dups(ax3 + ax), dups(ax2 + ax0), dups(ax3 + ax + ax2), dups(ax + ax2), fs[adr].key ∈ fs[referenced-adrs(ax3, ri)].keys, fs[adr].key ∈ fs[referenced-adrs(ax0, ri)].keys, adr ∈ ax3, adr0 ∈ ax, adr0 ∈ ax2, adr0 ∈ ax3, adr0 ∈ ax0, adr ∈ ax0, adr ∈ ax, adr ∈ ax2 |
referenced-adrs(ax2, ri) = [], referenced-adrs(ax, ri) = [], ri-cons(ri, fs), adr0 ∈ ri, fs[adr0].key ∈ ri ⊦ ri[fs[adr0].key] = adr0, dups(ax0), dups(ax2), dups(ax), dups(ax3), dups(fs[referenced-adrs(ax3, ri)].keys + fs[referenced-adrs(ax0, ri)].keys), dups(fs[referenced-adrs(ax0, ri)].keys), dups(fs[referenced-adrs(ax3, ri)].keys), dups((ax3 + ax) + ax2), dups((ax3 + ax) + ax2 + ax0), dups(ax + ax2 + ax0), dups(ax3 + ax), dups(ax2 + ax0), dups(ax3 + ax + ax2), dups(ax + ax2), fs[adr0].key ∈ fs[referenced-adrs(ax3, ri)].keys, fs[adr0].key ∈ fs[referenced-adrs(ax0, ri)].keys, ri[fs[adr0].key] ∈ ax3, adr0 ∈ ax, adr0 ∈ ax2, adr0 ∈ ax3, adr0 ∈ ax0, ri[fs[adr0].key] ∈ ax0, ri[fs[adr0].key] ∈ ax, ri[fs[adr0].key] ∈ ax2
Used simplifier rules: ⊦ ri-cons(ri, fs) ∧ key ∈ ri → fs[ri[key]].key = key; (s)