| # ax = # kx, new(ax, fs), key ∈ ri[kx, ax], kx.toSet ⊆ dom ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ dups(kx), dups(ax), (ri[kx, ax][key] ∈ fs ∨ ri[kx, ax][key] ∈ ax) ∧ key-cons(key, fs[ax, fs[ri[kx]]][ri[kx, ax][key]]) |
⊦ # kx = # ax → (key ∈ ri[kx, ax] ↔ key ∈ ri ∨ key ∈ kx)
# kx = # ax, new(ax, fs), kx.toSet ⊆ dom ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]), key ∈ ri ∨ key ∈ kx ⊦ dups(ax), dups(kx), (ri[kx, ax][key] ∈ fs ∨ ri[kx, ax][key] ∈ ax) ∧ key-cons(key, fs[ax, fs[ri[kx]]][ri[kx, ax][key]])
Used terms: ax, kx, ri, key