| afs-cons(dirs, files), ispath(p0, ROOT_INO, ino0, dirs, files), of-cons(of, dirs, files), px-parent(user, p0, ROOT_INO, dirs, files), ino0 ∈ dirs ∨ ino0 ∈ files ⊦ ⟪choose err0 with ⌊err0⌋ in err := err0; if err = ESUCCESS then if ¬ inode.directory then err := (inode.directory ⊃ EISDIR;ENOTDIR) else if ¬ pr(user, inode.meta) then err := EACCESS; if err = ESUCCESS then afs_readdir#(inode, dirs, files, asynced; strings, err)⟫ true |
afs-cons(dirs, files), ispath(p0, ROOT_INO, ino0, dirs, files), of-cons(of, dirs, files), px-parent(user, p0, ROOT_INO, dirs, files), ⌊err0⌋ , ino0 ∈ dirs ∨ ino0 ∈ files ⊦ ⟪err := err0; if err = ESUCCESS then if ¬ inode.directory then err := (inode.directory ⊃ EISDIR;ENOTDIR) else if ¬ pr(user, inode.meta) then err := EACCESS; if err = ESUCCESS then afs_readdir#(inode, dirs, files, asynced; strings, err)⟫ true
afs-cons(dirs, files), ispath(p0, ROOT_INO, ino0, dirs, files), of-cons(of, dirs, files), px-parent(user, p0, ROOT_INO, dirs, files), ino0 ∈ dirs ∨ ino0 ∈ files ⊦ ∃ err0. ⌊err0⌋