| fs[ri[datakey(ino, ino0)]] = datanode(datakey(ino, ino0), buf), ro.inodes?, orphans-cons(fs, ri, ro), ri[datakey(ino, ino0)] ∈ fs, datakey(ino, ino0) ∈ ri, datakey(ino, ino0) ∈ ri → ri[datakey(ino, ino0)] ∈ fs ∧ node-closed(fs[ri[datakey(ino, ino0)]], ri, fs, ro), ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ (inodekey(ino) ∈ ri ⊖ ro ⊃ (ri ⊖ ro)[datakey(ino, ino0), adr];ri ⊖ ro) = ri[datakey(ino, ino0), adr] ⊖ ro |
# buf = VFS_PAGE_SIZE, fs[ri[datakey(ino, ino0)]] = datanode(datakey(ino, ino0), buf), ro.inodes?, orphans-cons(fs, ri, ro), ri[datakey(ino, ino0)] ∈ fs, datakey(ino, ino0) ∈ ri, inodekey(ino) ∈ ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ (¬ inodekey(ino) ∈ ro ⊃ (ri ⊖ ro)[datakey(ino, ino0), adr];ri ⊖ ro) = ri[datakey(ino, ino0), adr] ⊖ ro, fs[ri[inodekey(ino)]].directory
Used simplifier rules: ⊦ inodekey(ino) ∈ ri → (inodekey(ino) ∈ ri ⊖ ro ↔ ¬ inodekey(ino) ∈ ro); (s)% ⊦ datakey(m, m0).ino = m; (s)%⊦ node-closed(datanode(key, buf), ri, fs, ro) ↔ inodekey(key.ino) ∈ ri ∧ ¬ fs[ri[inodekey(key.ino)]].directory ∧ # buf = VFS_PAGE_SIZE; (s)