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