| buf = copy(buf0, ino0, buf2, ino, n), err = err0, err0 = ESUCCESS, afs-cons(dirs, files), pre-writepage(inode, pageno, buf, dirs, files), ino + n ≤ # buf2, ino0 + n ≤ # buf0 ⊦ afs-cons(dirs, files[inode.ino, files[inode.ino].content:= files[inode.ino].content[pageno, buf]]) |
# buf2 = VFS_PAGE_SIZE, afs-cons(dirs, files), inode.ino ∈ files, ino0 + n ≤ # buf0, ino + n ≤ VFS_PAGE_SIZE ⊦ afs-cons(dirs, files[inode.ino, files[inode.ino].content:= files[inode.ino].content[pageno, copy(buf0, ino0, buf2, ino, n)]])
Used simplifier rules: ⊦ # copy(buf, m, buf0, m0, n) = # buf0; (s)% ⊦ valid-file-ino(ino, dirs, files) ↔ ino ∈ files; (s)%⊦ pre-writepage(inode, n, buf, dirs, files) ↔ valid-file-ino(inode.ino, dirs, files) ∧ # buf = VFS_PAGE_SIZE; (s)