| ino ∈ icache, ino ∈ files ⊦ ((files ⊕ pcache) ⊕ icache)[ino, mkfile(m, md, icache[ino].inode.nlink, files[ino].content ⊕ mkcontent(ino, pcache))] = (files[ino, (files[ino].meta:= md).size:= m] ⊕ pcache) ⊕ icache[ino, mkientry(false, (icache[ino].inode.meta:= md).size:= m)], icache[ino].inode.directory |
icache[ino].inode = mkinode(m0, md0, boolvar, m1, m2, m3), ¬ boolvar, ino ∈ files, ino ∈ icache ⊦ ((files ⊕ pcache) ⊕ icache)[ino, mkfile(m, md, m1, files[ino].content ⊕ mkcontent(ino, pcache))] = (files[ino, (files[ino].meta:= md).size:= m] ⊕ pcache) ⊕ icache[ino, mkientry(false, (icache[ino].inode.meta:= md).size:= m)]
Used simplifier rules: ⊦ ( ( ( (m = inode.ino ∧ md = inode.meta) ∧ (boolvar ↔ inode.directory)) ∧ m0 = inode.nlink) ∧ m1 = inode.nsubdirs) ∧ m2 = inode.size ↔ inode = mkinode(m, md, boolvar, m0, m1, m2); (elim) Used terms: icache[ino].inode, m0, md0, boolvar, m1, m2, m3