| dom of < ino, afs-cons(dirs, files), of-cons(of, dirs, files) ⊦ ⟪vfs_seek#(fd, whence, user, dirs, files, asynced; n, err, of)⟫ (of-cons(of, dirs, files) ∧ dom of < ino) |
⊦
dom of < ino, afs-cons(dirs, files), of-cons(of, dirs, files) ⊦ ⟪err := ESUCCESS; 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)
Used simplifier rules: seek: ⊦ ;