| icache[ino] = mkientry(boolvar, mkinode(m, md0, true, m0, m1, m2)), files[ino] = mkfile(m7, md2, m8, content), ino ∈ icache, ino ∈ dirs, ino ∈ files ⊦ ((files ⊕ pcache) ⊕ icache)[ino] = mkfile(m7, md2, m8, content ⊕ mkcontent(ino, pcache)) |
⊦ ino ∈ icache ∧ ¬ icache[ino].inode.directory → (files ⊕ icache)[ino] = mkfile(icache[ino].inode.size, icache[ino].inode.meta, icache[ino].inode.nlink, files[ino].content)
Used simplifier rules: at-icache-overwrite-no-file: ⊦ ino ∈ icache ∧ icache[ino].inode.directory → (files ⊕ icache)[ino] = files[ino];%at-pcache-overwrite: ⊦ (files ⊕ pcache)[ino] = mkfile (files[ino].size, files[ino].meta, files[ino].nlink, files[ino].content ⊕ mkcontent(ino, pcache));%at-pcache-overwrite: ⊦ (files ⊕ pcache)[ino] = mkfile (files[ino].size, files[ino].meta, files[ino].nlink, files[ino].content ⊕ mkcontent(ino, pcache));% ⊦ mkfile(m, md, m0, content).content = content; (s)% ⊦ mkientry(boolvar, inode).inode = inode; (s)% ⊦ mkinode(m, md, boolvar, m0, m1, m2).size = m2; (s)% ⊦ mkinode(m, md, boolvar, m0, m1, m2).meta = md; (s)% ⊦ mkinode(m, md, boolvar, m0, m1, m2).nlink = m0; (s)% ⊦ mkinode(m, md, boolvar, m0, m1, m2).directory ↔ boolvar; (s)% ⊦ mkfile(m, md, m0, content).size = m; (s)% ⊦ mkfile(m, md, m0, content).meta = md; (s)% ⊦ mkfile(m, md, m0, content).nlink = m0; (s) Used terms: ino, icache, files ⊕ pcache