| # 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[ax1, fs[ri[kx1]]][adr, fs[ri[key0]]][ax0, fs[ri[kx]]][adr].key, fs[ax1, fs[ri[kx1]]][adr, fs[ri[key0]]][ax0, fs[ri[kx]]][adr]), adr ∈ ax0, adr ∈ ax1, key0 ∈ kx1, key0 ∈ kx |
⊦ # ax = # ndx ∧ ¬ adr ∈ ax → fs[ax, ndx][adr] = fs[adr]
# 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
Used simplifier rules: ⊦ # fs[ax] = # ax; (s)% ⊦ # ri[kx] = # kx; (s) Used terms: adr, fs[ri[kx]], ax0, fs[ax1, fs[ri[kx1]]][adr, fs[ri[key0]]]