| ro.inodes?, fo.inodes?, log-cons(log, fs), ri[datakey(m, m0)] ∈ fs, datakey(m, m0) ∈ ri, ro ⊆ dom ri, fo ⊆ dom fi, fs[ri[datakey(m, m0)]].dentry? → inodekey(m) ∈ ri ∧ ¬ inodekey(m) ∈ ro ∧ fs[ri[inodekey(m)]].directory ∧ inodekey(fs[ri[datakey(m, m0)]].ino) ∈ ri ∧ ¬ inodekey(fs[ri[datakey(m, m0)]].ino) ∈ ro, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ node-closed(fs[ri[key]], ri, fs, ro), ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ # fs[ri[datakey(m, m0)]].data = VFS_PAGE_SIZE, fs[ri[datakey(m, m0)]].data?, dups(log), inodekey(0) ∈ ri |
Used simplifier rules: ⊦ key-cons(datakey(ino, n), nd) ↔ nd.data? ∧ nd.key = datakey(ino, n); (s) Used terms: datakey(m, m0)