| dups(fs[referenced-adrs(adr + ax0, ri)].keys), ri-cons(ri, fs), ∀ fs, ri. dups(fs[referenced-adrs(ax0, ri)].keys) ∧ ri-cons(ri, fs) → dups(ax0) ⊦ dups(adr + ax0) |
dups(fs[(adr ∈ ri ⊃ adr ';[])].keys + fs[referenced-adrs(ax0, ri)].keys), ri-cons(ri, fs), ∀ fs0, ri0. ¬ dups(fs0[referenced-adrs(ax0, ri0)].keys) ∨ ¬ ri-cons(ri0, fs0) ⊦ dups(ax0), adr ∈ ax0
Used simplifier rules: referenced-adrs-rec: ⊦ referenced-adrs(adr ' + ax, ri) = (adr ∈ ri ⊃ adr ';[]) + referenced-adrs(ax, ri);%keys-app: ⊦ (ndx0 + ndx1).keys = ndx0.keys + ndx1.keys;% ⊦ dups(adr ' + ax) ↔ dups(ax) ∨ adr ∈ ax; (ws)%a: ⊦ (ndx + ndx0) + ndx1 = ndx + ndx0 + ndx1; from specification list[node-list]% ⊦ fs[ax0 + ax1] = fs[ax0] + fs[ax1]; (s)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ adr + ax = adr ' + ax; (s)