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