| # ax0 = # kx0, ri[kx0, ax0][key] = ri[kx0, ax0][key1, adr][key0], range ri ∩ ax0.toSet = ∅, ri-inj(ri), key0 ∈ ri[kx0, ax0][key1, adr], key ∈ ri[kx0, ax0], ∀ kx1, ax, ri, key, key0. # kx1 < #(kx0 + key1 ') → # ax = # kx1 ∧ ri[kx1, ax][key] = ri[kx1, ax][key0] ∧ ax.toSet ∩ range ri = ∅ ∧ ri-inj(ri) ∧ key ∈ ri[kx1, ax] ∧ key0 ∈ ri[kx1, ax] → key = key0 ∨ dups(ax) ∨ key ∈ ri ∧ key0 ∈ ri ∧ ri[key] = ri[key0] ⊦ key = key1, key = key0, dups(ax0), adr ∈ ri, adr ∈ ax0, key ∈ ri ∧ key0 ∈ ri ∧ ri[key] = ri[key0] |
⊦ key ≠ key0 → ri[key0, adr][key] = ri[key]
# ax0 = # kx0, ri[kx0, ax0][key] = ri[kx0, ax0][key1, adr][key0], key0 = key1, range ri ∩ ax0.toSet = ∅, ri-inj(ri), key ∈ ri[kx0, ax0], key0 ∈ ri[kx0, ax0][key1, adr], ∀ kx1, ax, ri, key, key0. # kx1 < #(kx0 + key1 ') → # ax = # kx1 ∧ ri[kx1, ax][key] = ri[kx1, ax][key0] ∧ ax.toSet ∩ range ri = ∅ ∧ ri-inj(ri) ∧ key ∈ ri[kx1, ax] ∧ key0 ∈ ri[kx1, ax] → key = key0 ∨ dups(ax) ∨ key ∈ ri ∧ key0 ∈ ri ∧ ri[key] = ri[key0] ⊦ key = key0, key = key1, dups(ax0), adr ∈ ax0, adr ∈ ri, key ∈ ri ∧ key0 ∈ ri ∧ ri[key] = ri[key0]
# ax0 = # kx0, ri[kx0, ax0][key] = ri[kx0, ax0][key0], range ri ∩ ax0.toSet = ∅, ri-inj(ri), key ∈ ri[kx0, ax0], key0 ∈ ri[kx0, ax0][key1, adr], ∀ kx1, ax, ri, key, key0. # kx1 < #(kx0 + key1 ') → # ax = # kx1 ∧ ri[kx1, ax][key] = ri[kx1, ax][key0] ∧ ax.toSet ∩ range ri = ∅ ∧ ri-inj(ri) ∧ key ∈ ri[kx1, ax] ∧ key0 ∈ ri[kx1, ax] → key = key0 ∨ dups(ax) ∨ key ∈ ri ∧ key0 ∈ ri ∧ ri[key] = ri[key0] ⊦ key = key0, key = key1, key0 = key1, dups(ax0), adr ∈ ax0, adr ∈ ri, key ∈ ri ∧ key0 ∈ ri ∧ ri[key] = ri[key0]
Used terms: key0, adr, key1, ri[kx0, ax0]