| # kx = # ax0, # kx1 = # ax1, # ax0 = # fs[ri[kx]], key0 ∈ ri, kx.toSet ⊆ dom ri, kx1.toSet ⊆ dom ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ dups(kx), dups(kx1), dups(kx1 + kx), dups(ax1 + ax0), dups(ax1), dups(ax0), node-cons(fs[ax1, fs[ri[kx1]]][adr, fs[ri[key0]]][adr].key, fs[ax1, fs[ri[kx1]]][adr, fs[ri[key0]]][adr]), key0 ∈ kx, key0 ∈ kx1, adr ∈ ax1, adr ∈ ax0 |
# kx1 = # ax1, # kx = # ax0, key0 ∈ ri, kx1.toSet ⊆ dom ri, kx.toSet ⊆ dom ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ dups(ax0), dups(ax1), dups(ax1 + ax0), dups(kx1 + kx), dups(kx1), dups(kx), node-cons(fs[ri[key0]].key, fs[ri[key0]]), adr ∈ ax0, adr ∈ ax1, key0 ∈ kx1, key0 ∈ kx
Used simplifier rules: ⊦ fs[adr, nd][adr] = nd; (s)% ⊦ # ri[kx] = # kx; (s)% ⊦ # fs[ax] = # ax; (s)