| inode.size = n, files0 = files, inode = getinode(ino, dirs, files), pageno = inode.size / VFS_PAGE_SIZE, buf-opt.none?, afs-cons(dirs, files) ⊦ [afs_truncate#(n, pageno; buf-opt, inode, bv, err, dirs, files, asynced)] (files0 ~ files ∧ (⌊err⌋ ∨ err = ESUCCESS)), inode.directory |
buf-opt = none, files0 = files, inode = mkinode(ino, files[ino].meta, false, files[ino].nlink, 0, files[ino].size), afs-cons(dirs, files), ¬ (ino ∈ dirs ⊃ mkinode(ino, dirs[ino].meta, true, dirs[ino].nlink, dirs[ino].nsubdirs, dirs[ino].size) ;mkinode(ino, files[ino].meta, false, files[ino].nlink, 0, files[ino].size) ) .directory ⊦ [afs_truncate#(files[ino].size, files[ino].size / VFS_PAGE_SIZE; buf-opt, inode, bv, err, dirs, files, asynced)] (files0 ~ files ∧ (⌊err⌋ ∨ err = ESUCCESS))
Used simplifier rules: ⊦ mkinode(m, md, boolvar, m0, m1, m2).size = m2; (s)% ⊦ mkinode(m, md, boolvar, m0, m1, m2).directory ↔ boolvar; (s)% ⊦ buf-opt.none? ↔ buf-opt = none; (s)%⊦ getinode(ino, dirs, files) = (ino ∈ dirs ⊃ mkinode (ino, dirs[ino].meta, true, dirs[ino].nlink, dirs[ino].nsubdirs, dirs[ino].size) ;mkinode (ino, files[ino].meta, false, files[ino].nlink, 0, files[ino].size) ); (s)