| icache[m] = mkientry(true, mkinode(m0, md, false, m2, 0, m3)), files[m0] = mkfile(m1, md0, m2, content), icache-cons(icache, dirs, files), ino ∈ files, m0 ∈ files, m ∈ icache, ino ∈ icache[m, mkientry(false, mkinode(m0, md, false, m2, 0, m3))] ⊦ ((files ⊕ pcache) ⊕ icache)[ino] = mkfile (icache[m, mkientry(false, mkinode(m0, md, false, m2, 0, m3))][ino].inode.size, icache[m, mkientry(false, mkinode(m0, md, false, m2, 0, m3))][ino].inode.meta, icache[m, mkientry(false, mkinode(m0, md, false, m2, 0, m3))][ino].inode.nlink, (files[m0, mkfile(m3, md, m2, content)] ⊕ pcache)[ino].content), icache[m, mkientry(false, mkinode(m0, md, false, m2, 0, m3))][ino].inode.directory |
files[m0] = mkfile(m1, md0, m2, content), icache[m] = mkientry(true, mkinode(m0, md, false, m2, 0, m3)), icache-cons(icache, dirs, files), ino ∈ icache[m, mkientry(false, mkinode(m0, md, false, m2, 0, m3))], m ∈ icache, m0 ∈ files, ino ∈ files ⊦ ((files ⊕ pcache) ⊕ icache)[ino] = mkfile (icache[m, mkientry(false, mkinode(m0, md, false, m2, 0, m3))][ino].inode.size, icache[m, mkientry(false, mkinode(m0, md, false, m2, 0, m3))][ino].inode.meta, icache[m, mkientry(false, mkinode(m0, md, false, m2, 0, m3))][ino].inode.nlink, (ino = m0 ⊃ mkfile(m3, md, m2, content);files[ino]).content ⊕ mkcontent(ino, pcache)), icache[m, mkientry(false, mkinode(m0, md, false, m2, 0, m3))][ino].inode.directory
Used simplifier rules: ⊦ mkfile(m, md, m0, content).content = content; (s)% ⊦ files[ino, af][ino0] = (ino0 = ino ∧ ino ∈ files ⊃ af;files[ino0]); (s)%⊦ (files ⊕ pcache)[ino] = mkfile (files[ino].size, files[ino].meta, files[ino].nlink, files[ino].content ⊕ mkcontent(ino, pcache)); (s)