| # fs[ri[key]].data = VFS_PAGE_SIZE, fs[ri[key]].data?, fs[ri[key]].directory, key ∈ ri, ri[key] ∈ fs, inodekey(fs[ri[key]].key.ino) ∈ ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ inodekey(fs[ri[key]].key.ino) = key, fs[ri[key]].dentry?, (∅)[ri[inodekey(fs[ri[key]].key.ino)]].directory, ri[inodekey(fs[ri[key]].key.ino)] ∈ fs |
# buf = VFS_PAGE_SIZE, fs[ri[key]] = datanode(key0, buf), fs[ri[key]].data?, fs[ri[key]].directory, inodekey(key0.ino) ∈ ri, ri[key] ∈ fs, key ∈ ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ inodekey(key0.ino) = key, fs[ri[key]].dentry?, (∅)[ri[inodekey(key0.ino)]].directory, ri[inodekey(key0.ino)] ∈ fs
Used simplifier rules: ⊦ nd.data? → (key = nd.key ∧ buf = nd.data ↔ nd = datanode(key, buf)); (elim) Used terms: fs[ri[key]], key0, buf