| # kx0 + 1 = # ax, ax.toSet ∩ range ri = ∅, ri-inj(ri), key ∈ ri, kx0.toSet ⊆ dom ri, ∀ kx1, ax, ri. # kx1 < #(kx0 + key ') → # kx1 = # ax ∧ ax.toSet ∩ range ri = ∅ ∧ ri-inj(ri) ∧ kx1.toSet ⊆ dom ri → range ri[kx1, ax] = (range ri \ ri[kx1].toSet) ∪ ax.toSet ∨ dups(kx1) ∨ dups(ax) ⊦ ax = [], range ri[kx0 + key ', ax] = ((range ri \ ri[kx0].toSet) -- ri[key]) ∪ ax.toSet, dups(kx0), dups(ax), key ∈ kx0 |
⊦ ax = [] ↔ ¬(∃ ax0, adr. ax = ax0 + adr ')
# kx0 + 1 = # ax, ax.toSet ∩ range ri = ∅, ri-inj(ri), key ∈ ri, kx0.toSet ⊆ dom ri, ∀ kx1, ax, ri. # kx1 < #(kx0 + key ') → # kx1 = # ax ∧ ax.toSet ∩ range ri = ∅ ∧ ri-inj(ri) ∧ kx1.toSet ⊆ dom ri → range ri[kx1, ax] = (range ri \ ri[kx1].toSet) ∪ ax.toSet ∨ dups(kx1) ∨ dups(ax) ⊦ range ri[kx0 + key ', ax] = ((range ri \ ri[kx0].toSet) -- ri[key]) ∪ ax.toSet, dups(ax), dups(kx0), key ∈ kx0, ∀ ax0, adr. ax ≠ ax0 + adr '
Used terms: ax