| # kx1 = # ax1, # kx = # ax0, key-cons(key0, fs[ri[key0]]), key0 ∈ ri, ri[key0] ∈ fs, kx1.toSet ⊆ dom ri, kx.toSet ⊆ dom ri ⊦ dups(ax0), dups(ax1), dups(ax1 + ax0), dups(kx1 + kx), dups(kx1), dups(kx), key-cons(fs[ri[key0]].key, fs[ri[key0]]), node-cons(fs[ri[key0]].key, fs[ri[key0]]), adr ∈ ax0, adr ∈ ax1, key0 ∈ kx1, key0 ∈ kx |
⊦ key-cons(key, nd) ↔ nd.key = key ∧ (key.inode? → nd.inode? ∧ key.ino ≠ 0) ∧ (key.dentry? → nd.dentry?) ∧ (key.data? → nd.data?)
# kx = # ax0, # kx1 = # ax1, fs[ri[key0]].key = key0, ri[key0] ∈ fs, key0 ∈ ri, kx.toSet ⊆ dom ri, kx1.toSet ⊆ dom ri, key0.inode? → fs[ri[key0]].inode? ∧ key0.ino ≠ 0, key0.dentry? → fs[ri[key0]].dentry?, key0.data? → fs[ri[key0]].data? ⊦ dups(kx), dups(kx1), dups(kx1 + kx), dups(ax1 + ax0), dups(ax1), dups(ax0), key-cons(fs[ri[key0]].key, fs[ri[key0]]), node-cons(fs[ri[key0]].key, fs[ri[key0]]), key0 ∈ kx, key0 ∈ kx1, adr ∈ ax1, adr ∈ ax0
Used terms: fs[ri[key0]], key0