| # kx0 = # ax1, adr ∈ ri[key, adr1] \ kx0.toSet, adr ∈ ri[key, adr1][kx0, ax1] ⊦ adr = adr1, dups(kx0), key ∈ kx0, adr ∈ ax1, ∃ key0. key0 ∈ (ri \ kx0.toSet) -- key ∧ ((ri \ kx0.toSet) -- key)[key0] = adr |
# kx0 = # ax1, adr ∈ ri[key, adr1][kx0, ax1], adr ∈ ri[key, adr1] \ kx0.toSet ⊦ adr = adr1, dups(kx0), adr ∈ ax1, key ∈ kx0, ∃ key0. key0 ≠ key ∧ key0 ∈ ri \ kx0.toSet ∧ (ri \ kx0.toSet)[key0] = adr
Used simplifier rules: ⊦ key ≠ key0 → (ri -- key0)[key] = ri[key]; (s)% ⊦ key ∈ ri -- key0 ↔ key ≠ key0 ∧ key ∈ ri; (s)