| # buf = VFS_PAGE_SIZE, files[m0] = mkfile(m1, md0, # links(m0, dirs), content), afs-cons(dirs, files), m0 ∈ files, ∃ content. ((m0 => mkfile(n0, md, m, content) * F))(files) ∧ content.stream = σ ⊦ ⌜zeropage⌝ = (σ from n * VFS_PAGE_SIZE) to VFS_PAGE_SIZE, n ∈ content |
# buf = VFS_PAGE_SIZE, ((m0 => mkfile(n0, md, # links(m0, dirs), content) * F))(files), afs-cons(dirs, files) ⊦ ⌜zeropage⌝ = (content.stream from n * VFS_PAGE_SIZE) to VFS_PAGE_SIZE, n ∈ content
Used simplifier rules: ⊦ ((ino => af * F))(files) → ino ∈ files; (s)%⊦ mkfile(m, md, m0, content) = mkfile(m1, md0, m2, content0) ↔ m = m1 ∧ md = md0 ∧ m0 = m2 ∧ content = content0; (ws)% ⊦ ((ino => af * F))(files) → (files[ino] = af0 ↔ af = af0); (s)%sep-com: ⊦ F * F0 = F0 * F; from specification heap-sep[file-heap]%sep-ass: ⊦ (F * F0) * F1 = F * F0 * F1; from specification heap-sep[file-heap]