| VFS_PAGE_SIZE = n0 + m2 % VFS_PAGE_SIZE, files0[ino0] = mkfile(m2, md0, # links(ino0, dirs), content0), afs-cons(dirs, files0), ino0 ∈ files0, m2 / VFS_PAGE_SIZE ∈ content0 ⊦ m2 % VFS_PAGE_SIZE = 0, ∀ ino. ( ino ∈ files0 ↔ ino ∈ files0 [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) ]) ∧ ( ino ∈ files0 → files0[ino].size = files0 [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) ] [ino ] .size ∧ files0[ino].meta = files0 [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) ] [ino ] .meta ∧ files0[ino].nlink = files0 [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) ] [ino ] .nlink ∧ files0[ino].content.stream to files0[ino].size = files0 [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) ] [ino ] .content .stream to files0 [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) ] [ino ] .size) |
VFS_PAGE_SIZE = n0 + m2 % VFS_PAGE_SIZE, files0[ino0] = mkfile(m2, md0, # links(ino0, dirs), content0), afs-cons(dirs, files0), m2 / VFS_PAGE_SIZE ∈ content0, ino0 ∈ files0, ino ∈ files0 ⊦ m2 % VFS_PAGE_SIZE = 0, files0[ino].size = (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) ;files0[ino] ) .size ∧ files0[ino].meta = (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) ;files0[ino] ) .meta ∧ files0[ino].nlink = (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) ;files0[ino] ) .nlink ∧ files0[ino].content.stream to files0[ino].size = (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) ;files0[ino] ) .content .stream to (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) ;files0[ino] ) .size
Used simplifier rules: ⊦ files[ino, af][ino0] = (ino0 = ino ∧ ino ∈ files ⊃ af;files[ino0]); (s)% ⊦ ino ∈ files[ino0, af] ↔ ino ∈ files; (s)