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