| ri-cons(ri, fs), adr ∈ ri, ∃ kx0, kx1. fs[referenced-adrs(ax0, ri)].keys = kx0 + (fs[adr].key + kx1) ⊦ dups(fs[referenced-adrs(ax0, ri)].keys), dups(ax0), adr ∈ ax0 |
nd.key = fs[adr].key, fs[referenced-adrs(ax0, ri)] = ndx + nd ' + ndx2, ri-cons(ri, fs), adr ∈ ri ⊦ dups(fs[referenced-adrs(ax0, ri)].keys), dups(ax0), adr ∈ ax0
Used simplifier rules: keys-split: ⊦ ndx.keys = kx0 + kx1 ↔ (∃ ndx0, ndx1. ndx = ndx0 + ndx1 ∧ ndx0.keys = kx0 ∧ ndx1.keys = kx1);%keys-eq-one: ⊦ ndx.keys = key ' ↔ (∃ nd. ndx = nd ' ∧ nd.key = key);% ⊦ nd ∈ nd0 ' + ndx ↔ nd = nd0 ∨ nd ∈ ndx; (s)%a: ⊦ (ndx + ndx0) + ndx1 = ndx + ndx0 + ndx1; from specification list[node-list]%in-14: ⊦ nd ' + ndx = ndx0 → nd ∈ ndx0; (forward) from specification list[node-list]%a: ⊦ (kx + kx0) + kx1 = kx + kx0 + kx1; from specification list[key-list-set]% ⊦ key + kx = key ' + kx; (s)