| # kx = # ax, ri-cons(ri, fs), kx.toSet ⊆ dom ri ⊦ dups(ax), dups(kx), log-cons(ax, fs[ax, fs[ri[kx]]]) |
# kx = # ax, adr ∈ ax, kx.toSet ⊆ dom ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ dups(kx), dups(ax), node-cons(fs[ax, fs[ri[kx]]][adr].key, fs[ax, fs[ri[kx]]][adr])
Used simplifier rules: ri-cons: ⊦ ri-cons(ri, fs) ↔ (∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]));%log-cons: ⊦ log-cons(log, fs) ↔ (∀ adr. adr ∈ log → adr ∈ fs ∧ node-cons(fs[adr].key, fs[adr]));%# ax = # ndx ⊦ adr ∈ fs[ax, ndx] ↔ adr ∈ fs ∨ adr ∈ ax; (s)% ⊦ # ri[kx] = # kx; (s)% ⊦ # fs[ax] = # ax; (s)