| files1 ~ files2, files0 ~ files1 ⊦ (ino ∈ files0 ↔ ino ∈ files2) ∧ ( ino ∈ files0 → files0[ino].size = files2[ino].size ∧ files0[ino].meta = files2[ino].meta ∧ files0[ino].nlink = files2[ino].nlink ∧ (λ n. (n / VFS_PAGE_SIZE ∈ files0[ino].content ⊃ files0[ino].content[n / VFS_PAGE_SIZE];zeropage)[n % VFS_PAGE_SIZE]) to files0[ino].size = (λ n. (n / VFS_PAGE_SIZE ∈ files2[ino].content ⊃ files2[ino].content[n / VFS_PAGE_SIZE];zeropage)[n % VFS_PAGE_SIZE]) to files2[ino].size) |
files0[ino] = mkfile(m, md, m0, content), files0 ~ files1, files1 ~ files2 ⊦ (ino ∈ files0 ↔ ino ∈ files2) ∧ ( ino ∈ files0 → m = files2[ino].size ∧ md = files2[ino].meta ∧ m0 = files2[ino].nlink ∧ (λ n. (n / VFS_PAGE_SIZE ∈ content ⊃ content[n / VFS_PAGE_SIZE];zeropage)[n % VFS_PAGE_SIZE]) to m = (λ n. (n / VFS_PAGE_SIZE ∈ files2[ino].content ⊃ files2[ino].content[n / VFS_PAGE_SIZE];zeropage)[n % VFS_PAGE_SIZE]) to files2[ino].size)
Used simplifier rules: ⊦ ((m = af.size ∧ md = af.meta) ∧ m0 = af.nlink) ∧ content = af.content ↔ af = mkfile(m, md, m0, content); (elim) Used terms: files0[ino], m, md, m0, content