| err = ESUCCESS, dom of < ino, afs-cons(dirs, files), of-cons(of, dirs, files) ⊦ ⟪if ¬ fd ∈ of then err := EBADFD else {if whence = SEEK_CUR then n := of[fd].pos + n else if whence = SEEK_END then choose inode with true in {afs_iget#(of[fd].ino, dirs, files, asynced; inode, err); if err = ESUCCESS then n := inode.size + n}; if err = ESUCCESS then of[fd].pos := n}⟫ (of-cons(of, dirs, files) ∧ dom of < ino) |
err = ESUCCESS, dom of < ino, afs-cons(dirs, files), of-cons(of, dirs, files) ⊦ ⟪err := EBADFD⟫ (of-cons(of, dirs, files) ∧ dom of < ino), fd ∈ of
err = ESUCCESS, dom of < ino, afs-cons(dirs, files), of-cons(of, dirs, files), fd ∈ of ⊦ ⟪if whence = SEEK_CUR then n := of[fd].pos + n else if whence = SEEK_END then choose inode with true in {afs_iget#(of[fd].ino, dirs, files, asynced; inode, err); if err = ESUCCESS then n := inode.size + n}; if err = ESUCCESS then of[fd].pos := n⟫ (of-cons(of, dirs, files) ∧ dom of < ino)