| root[path] = dnode(md, sdt), dirs[m] = mkdir(# entries, md1, # links(m, dirs), m2, entries), ((abs|(root, ROOT_INO, path, m) * abs(dnode(md, sdt), m)))(dirs), root.dir?, dom of < ino6, afs-cons(dirs, files), fids-cons(root, abs-files(files), abs-of(of)), ispath(path, ROOT_INO, m, dirs, files), of-cons(of, dirs, files), pr(user, md1), px-parent(user, path, ROOT_INO, dirs, files), m ∈ dirs, path ∈ root, psynced → asynced ⊦ md1 = md ∧ m2 = # dnode(md, sdt).subdirs ∧ # entries = # sdt |
⊦ abs(dnode(md, sdt), ino) = _∃(λ ad. ino => ad * abs(sdt, ad.entries) ∧ ⌜ad.meta = md⌝ ∧ ⌜ad.size = # ad.entries⌝ )
dirs[m] = mkdir(# entries, md1, # links(m, dirs), m2, entries), root[path] = dnode(md, sdt), ((abs|(root, ROOT_INO, path, m) * _∃(λ ad. m => ad * abs(sdt, ad.entries) ∧ ⌜ad.meta = md⌝ ∧ ⌜ad.size = # ad.entries⌝ )))(dirs), root.dir?, dom of < ino6, afs-cons(dirs, files), fids-cons(root, abs-files(files), abs-of(of)), ispath(path, ROOT_INO, m, dirs, files), of-cons(of, dirs, files), pr(user, md1), px-parent(user, path, ROOT_INO, dirs, files), path ∈ root, m ∈ dirs, psynced → asynced ⊦ md1 = md ∧ m2 = # dnode(md, sdt).subdirs ∧ # entries = # sdt
Used terms: m, sdt, md