| icache[ino] = mkientry(boolvar0, mkinode(m4, md1, boolvar, m5, m6, m7)), 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 ⊦ ((files ⊕ pcache) ⊕ icache)[ino] = ((files[m0, mkfile(m3, md, m2, content)] ⊕ pcache) ⊕ icache)[ino], ino = m, ino ∈ icache ∧ ¬ boolvar |
⊦ icache-cons(icache, dirs, files) ↔ (∀ ino. ino ∈ icache → icache[ino].inode.ino = ino ∧ (icache[ino].dirty ⊃ valid-file-inode(icache[ino].inode, dirs, files) ;valid-ino(ino, dirs, files) ∧ valid-inode(icache[ino].inode, dirs, files) ))
files[m0] = mkfile(m1, md0, m2, content), icache[m] = mkientry(true, mkinode(m0, md, false, m2, 0, m3)), icache[ino] = mkientry(boolvar0, mkinode(m4, md1, boolvar, m5, m6, m7)), m ∈ icache, m0 ∈ files, ino ∈ files, ∀ ino. ino ∈ icache → icache[ino].inode.ino = ino ∧ (icache[ino].dirty ⊃ valid-file-inode(icache[ino].inode, dirs, files);valid-ino(ino, dirs, files) ∧ valid-inode(icache[ino].inode, dirs, files)) ⊦ ((files ⊕ pcache) ⊕ icache)[ino] = ((files[m0, mkfile(m3, md, m2, content)] ⊕ pcache) ⊕ icache)[ino], ino = m, ino ∈ icache ∧ ¬ boolvar
Used terms: files, dirs, icache