| key ∈ ri, ri[key] ∈ fs, fs[ri[key]].dentry? → inodekey(fs[ri[key]].key.ino) ∈ ri ∧ ¬ inodekey(fs[ri[key]].key.ino) ∈ ro ∧ (∅)[ri[inodekey(fs[ri[key]].key.ino)]].directory ∧ inodekey(fs[ri[key]].ino) ∈ ri ∧ ¬ inodekey(fs[ri[key]].ino) ∈ ro, fs[ri[key]].data? → inodekey(fs[ri[key]].key.ino) ∈ ri ∧ ¬ (∅)[ri[inodekey(fs[ri[key]].key.ino)]].directory ∧ # fs[ri[key]].data = VFS_PAGE_SIZE, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ inodekey(fs[ri[key]].key.ino) = key, ri[inodekey(fs[ri[key]].key.ino)] ∈ fs, ( fs[ri[key]].dentry? → inodekey(fs[ri[key]].key.ino) ∈ ri ∧ ¬ inodekey(fs[ri[key]].key.ino) ∈ ro ∧ fs[ri[key]].directory ∧ inodekey(fs[ri[key]].ino) ∈ ri[key, ri[inodekey(fs[ri[key]].key.ino)]] ∧ ¬ inodekey(fs[ri[key]].ino) ∈ ro) ∧ (fs[ri[key]].data? → inodekey(fs[ri[key]].key.ino) ∈ ri ∧ ¬ fs[ri[key]].directory ∧ # fs[ri[key]].data = VFS_PAGE_SIZE) |
fs[ri[key]].dentry?, ri[key] ∈ fs, key ∈ ri, fs[ri[key]].data? → inodekey(fs[ri[key]].key.ino) ∈ ri ∧ ¬ (∅)[ri[inodekey(fs[ri[key]].key.ino)]].directory ∧ # fs[ri[key]].data = VFS_PAGE_SIZE, fs[ri[key]].dentry? → inodekey(fs[ri[key]].key.ino) ∈ ri ∧ ¬ inodekey(fs[ri[key]].key.ino) ∈ ro ∧ (∅)[ri[inodekey(fs[ri[key]].key.ino)]].directory ∧ inodekey(fs[ri[key]].ino) ∈ ri ∧ ¬ inodekey(fs[ri[key]].ino) ∈ ro, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ inodekey(fs[ri[key]].key.ino) = key, ri[inodekey(fs[ri[key]].key.ino)] ∈ fs, inodekey(fs[ri[key]].key.ino) ∈ ri ∧ ¬ inodekey(fs[ri[key]].key.ino) ∈ ro ∧ fs[ri[key]].directory ∧ inodekey(fs[ri[key]].ino) ∈ ri[key, ri[inodekey(fs[ri[key]].key.ino)]] ∧ ¬ inodekey(fs[ri[key]].ino) ∈ ro
fs[ri[key]].data?, ri[key] ∈ fs, key ∈ ri, fs[ri[key]].data? → inodekey(fs[ri[key]].key.ino) ∈ ri ∧ ¬ (∅)[ri[inodekey(fs[ri[key]].key.ino)]].directory ∧ # fs[ri[key]].data = VFS_PAGE_SIZE, fs[ri[key]].dentry? → inodekey(fs[ri[key]].key.ino) ∈ ri ∧ ¬ inodekey(fs[ri[key]].key.ino) ∈ ro ∧ (∅)[ri[inodekey(fs[ri[key]].key.ino)]].directory ∧ inodekey(fs[ri[key]].ino) ∈ ri ∧ ¬ inodekey(fs[ri[key]].ino) ∈ ro, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ inodekey(fs[ri[key]].key.ino) = key, ri[inodekey(fs[ri[key]].key.ino)] ∈ fs, inodekey(fs[ri[key]].key.ino) ∈ ri ∧ ¬ fs[ri[key]].directory ∧ # fs[ri[key]].data = VFS_PAGE_SIZE