| VFS_PAGE_SIZE = n4 + (n0 + n3) % VFS_PAGE_SIZE, files[m] = mkfile(m3, md0, m4, content), err0 = ESUCCESS, n = min(n1 - n0 + n3, n4, m2 - n0 + n3), n0 + n3 < n1, n0 + n3 < m2, read-inv(n0, n1, mkinode(m, md, boolvar, m0, m1, m2), buf2, buf3, n2, dirs, files), read-inv(n0, n1, mkinode(m, md, boolvar, m0, m1, m2), buf2, buf1, n3, dirs, files), n3 + n ≤ # buf1, (n0 + n3) % VFS_PAGE_SIZE + n ≤ # buf0, m2 ≥ n0 + n3, n1 ≥ n0 + n3, err0 = ESUCCESS ∧ buf0 = getpage((n0 + n3) / VFS_PAGE_SIZE, content) ∨ ⌊err0⌋ ⊦ VFS_PAGE_SIZE = 0, m2 = n0 + n3, n1 = n0 + n3, n4 = 0, read-inv(n0, n1, mkinode(m, md, boolvar, m0, m1, m2), buf2, copy(buf0, (n0 + n3) % VFS_PAGE_SIZE, buf1, n3, n), n3 + n, dirs, files) |
VFS_PAGE_SIZE = n4 + (n0 + n3) % VFS_PAGE_SIZE, files[m] = mkfile(m3, md0, m4, content), n0 + n3 < n1, n0 + n3 < m2, read-inv(n0, n1, mkinode(m, md, boolvar, m0, m1, m2), buf2, buf3, n2, dirs, files), read-inv(n0, n1, mkinode(m, md, boolvar, m0, m1, m2), buf2, buf1, n3, dirs, files), n3 + min(n1 - n0 + n3, n4, m2 - n0 + n3) ≤ # buf1, (n0 + n3) % VFS_PAGE_SIZE + min(n1 - n0 + n3, n4, m2 - n0 + n3) ≤ # getpage((n0 + n3) / VFS_PAGE_SIZE, content) ⊦ m2 = n0 + n3, n1 = n0 + n3, n4 = 0, read-inv (n0, n1, mkinode(m, md, boolvar, m0, m1, m2), buf2, copy(getpage((n0 + n3) / VFS_PAGE_SIZE, content), (n0 + n3) % VFS_PAGE_SIZE, buf1, n3, min(n1 - n0 + n3, n4, m2 - n0 + n3)), n3 + min(n1 - n0 + n3, n4, m2 - n0 + n3), dirs, files)
Used simplifier rules: ⊦ ¬ ⌊ESUCCESS⌋ ; (s)% ⊦ m < n → m ≤ n; (s)% ⊦ n ≥ m ↔ m ≤ n; (s)% ⊦ VFS_PAGE_SIZE ≠ 0; (s)