| (ino = ino0 ⊃ mkfile(m2, md0, # links(ino0, dirs), content0[m2 / VFS_PAGE_SIZE, fill(content0[m2 / VFS_PAGE_SIZE], zero, m2 % VFS_PAGE_SIZE, n0)] upto m2) ;mkfile(m, md, # links(ino, dirs), content) ) = mkfile(m0, md1, m1, content1), VFS_PAGE_SIZE = n0 + m2 % VFS_PAGE_SIZE, files0[ino0] = mkfile(m2, md0, # links(ino0, dirs), content0), files0[ino] = mkfile(m, md, # links(ino, dirs), content), ino = ino0, afs-cons(dirs, files0), ino ∈ files0, ino0 ∈ files0, m2 / VFS_PAGE_SIZE ∈ content0 ⊦ m2 % VFS_PAGE_SIZE = 0, m = m0 ∧ md = md1 ∧ # links(ino, dirs) = m1 ∧ content.stream to m0 = content1.stream to m0 |
VFS_PAGE_SIZE = n0 + m % VFS_PAGE_SIZE, files0[ino0] = mkfile(m, md, # links(ino0, dirs), content), afs-cons(dirs, files0), m / VFS_PAGE_SIZE ∈ content, ino0 ∈ files0 ⊦ m % VFS_PAGE_SIZE = 0, content.stream to m = content[m / VFS_PAGE_SIZE, fill(content[m / VFS_PAGE_SIZE], zero, m % VFS_PAGE_SIZE, n0)].stream to m
Used simplifier rules: ⊦ (content upto m).stream to m = content.stream to m; (s)%⊦ mkfile(m, md, m0, content) = mkfile(m1, md0, m2, content0) ↔ m = m1 ∧ md = md0 ∧ m0 = m2 ∧ content = content0; (ws)