| files2[ino] = mkfile(m1, md0, m2, content0), files0[ino] = mkfile(m, md, m0, content), files0 ~ files1, ∀ ino. (ino ∈ files1 ↔ ino ∈ files2) ∧ ( ino ∈ files1 → files1[ino].size = files2[ino].size ∧ files1[ino].meta = files2[ino].meta ∧ files1[ino].nlink = files2[ino].nlink ∧ files1[ino].content.stream to files1[ino].size = files2[ino].content.stream to files2[ino].size) ⊦ (ino ∈ files0 ↔ ino ∈ files2) ∧ ( ino ∈ files0 → m = m1 ∧ md = md0 ∧ m0 = m2 ∧ (λ n. (n / VFS_PAGE_SIZE ∈ content ⊃ content[n / VFS_PAGE_SIZE];zeropage)[n % VFS_PAGE_SIZE]) to m1 = (λ n. (n / VFS_PAGE_SIZE ∈ content0 ⊃ content0[n / VFS_PAGE_SIZE];zeropage)[n % VFS_PAGE_SIZE]) to m1) |
⊦ files0 ~ files1 ↔ (∀ ino. (ino ∈ files0 ↔ ino ∈ files1) ∧ ( ino ∈ files0 → files0[ino].size = files1[ino].size ∧ files0[ino].meta = files1[ino].meta ∧ files0[ino].nlink = files1[ino].nlink ∧ files0[ino].content.stream to files0[ino].size = files1[ino].content.stream to files1[ino].size))
files0[ino] = mkfile(m, md, m0, content), files2[ino] = mkfile(m1, md0, m2, content0), ∀ ino. (ino ∈ files1 ↔ ino ∈ files2) ∧ ( ino ∈ files1 → files1[ino].size = files2[ino].size ∧ files1[ino].meta = files2[ino].meta ∧ files1[ino].nlink = files2[ino].nlink ∧ files1[ino].content.stream to files1[ino].size = files2[ino].content.stream to files2[ino].size), ∀ ino. (ino ∈ files0 ↔ ino ∈ files1) ∧ ( ino ∈ files0 → files0[ino].size = files1[ino].size ∧ files0[ino].meta = files1[ino].meta ∧ files0[ino].nlink = files1[ino].nlink ∧ files0[ino].content.stream to files0[ino].size = files1[ino].content.stream to files1[ino].size) ⊦ (ino ∈ files0 ↔ ino ∈ files2) ∧ ( ino ∈ files0 → m = m1 ∧ md = md0 ∧ m0 = m2 ∧ (λ n. (n / VFS_PAGE_SIZE ∈ content ⊃ content[n / VFS_PAGE_SIZE];zeropage)[n % VFS_PAGE_SIZE]) to m1 = (λ n. (n / VFS_PAGE_SIZE ∈ content0 ⊃ content0[n / VFS_PAGE_SIZE];zeropage)[n % VFS_PAGE_SIZE]) to m1)
Used terms: files1, files0