| VFS_PAGE_SIZE = n1 + n0, files2[ino4] = mkfile(m2 * VFS_PAGE_SIZE + n0, md, # links(ino4, dirs0), content0), n0 < VFS_PAGE_SIZE, afs-cons (dirs0, files2 [ino4, mkfile(m2 * VFS_PAGE_SIZE + n0, md, # links(ino4, dirs0), content0[m2, fill(content0[m2], zero, n0, n1)] upto (m2 * VFS_PAGE_SIZE + n0)) ]), afs-cons(dirs0, files2), files2 ~ files2 [ino4, mkfile(m2 * VFS_PAGE_SIZE + n0, md, # links(ino4, dirs0), content0[m2, fill(content0[m2], zero, n0, n1)] upto (m2 * VFS_PAGE_SIZE + n0)) ], m2 ∈ content0, ino4 ∈ files2 ⊦ (content0[m2, fill(content0[m2], zero, n0, n1)].stream to VFS_PAGE_SIZE * m2 + VFS_PAGE_SIZE) + σ⊥ from m2 * VFS_PAGE_SIZE + n0 = σ⊥, n0 = 0, n1 = 0 |
⊦ # buf = VFS_PAGE_SIZE → content[n, buf].stream = (content.stream to n * VFS_PAGE_SIZE) + ⌜buf⌝ + (content.stream from (n + 1) * VFS_PAGE_SIZE)
# fill(content0[m2], zero, n0, n1) = VFS_PAGE_SIZE, VFS_PAGE_SIZE = n1 + n0, files2[ino4] = mkfile(m2 * VFS_PAGE_SIZE + n0, md, # links(ino4, dirs0), content0), n0 < VFS_PAGE_SIZE, afs-cons(dirs0, files2), afs-cons (dirs0, files2 [ino4, mkfile(m2 * VFS_PAGE_SIZE + n0, md, # links(ino4, dirs0), content0[m2, fill(content0[m2], zero, n0, n1)] upto (m2 * VFS_PAGE_SIZE + n0)) ]), files2 ~ files2 [ino4, mkfile(m2 * VFS_PAGE_SIZE + n0, md, # links(ino4, dirs0), content0[m2, fill(content0[m2], zero, n0, n1)] upto (m2 * VFS_PAGE_SIZE + n0)) ], ino4 ∈ files2, m2 ∈ content0 ⊦ ( (content0.stream to m2 * VFS_PAGE_SIZE) + ⌜fill(content0[m2], zero, n0, n1)⌝ + (content0.stream from (m2 + 1) * VFS_PAGE_SIZE) to VFS_PAGE_SIZE * m2 + VFS_PAGE_SIZE) + σ⊥ from m2 * VFS_PAGE_SIZE + n0 = σ⊥, n0 = 0, n1 = 0
Used simplifier rules: ⊦ # fill(buf, d, m, n) = # buf; (s)%⊦ afs-cons(dirs, files) ∧ ino ∈ files ∧ files[ino] = mkfile(m, md, n0, content) ∧ n ∈ content → # content[n] = VFS_PAGE_SIZE; (s) Used terms: fill(content0[m2], zero, n0, n1), m2, content0