| # ax0 = # kx0, range ri ∩ ax0.toSet = ∅, ri-inj(ri), key0 ∈ 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] ⊦ key1 = key0, dups(ax0), ri[kx0, ax0][key0] ∈ ri, ri[kx0, ax0][key0] ∈ ax0, key1 ∈ ri ∧ key0 ∈ ri ∧ ri[key1] = ri[key0], # kx0 = # ax0 ∧ key0 ∈ ri ∧ ¬ key0 ∈ kx0 |
# ax0 = # kx0, range ri ∩ ax0.toSet = ∅, ri-inj(ri), key0 ∈ ri[kx0, ax0], key0 ∈ kx0, ∀ 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] ⊦ key1 = key0, dups(ax0), ri[kx0, ax0][key0] ∈ ri, ri[kx0, ax0][key0] ∈ ax0, key1 ∈ ri ∧ key0 ∈ ri ∧ ri[key1] = ri[key0]
Used simplifier rules: key ∈ ri ⊦ ri[key] ∈ ri; (s)% ⊦ # kx = # ax ∧ key ∈ ri ∧ ¬ key ∈ kx → ri[kx, ax][key] = ri[key]; (s)% ⊦ # kx = # ax → (key ∈ ri[kx, ax] ↔ key ∈ ri ∨ key ∈ kx); (ws)