| # buf0 = VFS_PAGE_SIZE, pcache[datakey(m, n)] = mkpentry(true, buf0), files[ino] = mkfile(m0, md, m1, content), n * VFS_PAGE_SIZE < m2, datakey(m, n) ∈ pcache, m ∈ files, ino ∈ files0, ⌊err0⌋ , ∀ ino. ino ≠ m ∧ ino ∈ files0 → mkfile(files[ino].size, files[ino].meta, files[ino].nlink, files[ino].content ⊕ mkcontent(ino, pcache)) = mkfile(files0[ino].size, files0[ino].meta, files0[ino].nlink, files0[ino].content ⊕ mkcontent(ino, pcache0)) ∧ ino ∈ files ⊦ ino = m, mkfile(m0, md, m1, content ⊕ mkcontent(ino, pcache)) = mkfile(files0[ino].size, files0[ino].meta, files0[ino].nlink, files0[ino].content ⊕ mkcontent(ino, pcache0)) ∧ ino ∈ files |
# buf0 = VFS_PAGE_SIZE, files[ino] = mkfile(m0, md, m1, content), pcache[datakey(m, n)] = mkpentry(true, buf0), files0[ino] = mkfile(m3, md0, m4, content0), n * VFS_PAGE_SIZE < m2, ino ∈ files0, m ∈ files, datakey(m, n) ∈ pcache, ⌊err0⌋ , ∀ ino. ino ≠ m ∧ ino ∈ files0 → mkfile(files[ino].size, files[ino].meta, files[ino].nlink, files[ino].content ⊕ mkcontent(ino, pcache)) = mkfile(files0[ino].size, files0[ino].meta, files0[ino].nlink, files0[ino].content ⊕ mkcontent(ino, pcache0)) ∧ ino ∈ files ⊦ ino = m, mkfile(m0, md, m1, content ⊕ mkcontent(ino, pcache)) = mkfile(m3, md0, m4, content0 ⊕ mkcontent(ino, pcache0)) ∧ ino ∈ files
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], m3, md0, m4, content0