| icache[m] = mkientry(boolvar, mkinode(m1, md1, boolvar0, m3, m4, m5)), dirs[m] = mkdir(m0, md0, # links(m, dirs), m2, entries), afs-cons(dirs[m, mkdir(m0, md, # links(m, dirs), m2, entries)], files), afs-cons(dirs, files), synced(files, icache, pcache), m ∈ icache, m ∈ dirs ⊦ ∀ ino. (ino ∈ files → synced(ino, icache, pcache)) → ino ∈ files → synced(ino, icache[m1, mkientry(false, mkinode(m1, md, boolvar0, m3, m4, m5))], pcache) |
dirs[m] = mkdir(m0, md0, # links(m, dirs), m2, entries), icache[m] = mkientry(boolvar, mkinode(m1, md1, boolvar0, m3, m4, m5)), afs-cons(dirs, files), afs-cons(dirs[m, mkdir(m0, md, # links(m, dirs), m2, entries)], files), synced(files, icache, pcache), ino ∈ files, m ∈ dirs, m ∈ icache, ino ∈ icache → ¬ icache[ino].dirty, ∀ n. datakey(ino, n) ∈ pcache → ¬ pcache[datakey(ino, n)].dirty ⊦ ( ino ∈ icache[m1, mkientry(false, mkinode(m1, md, boolvar0, m3, m4, m5))] → ¬ icache[m1, mkientry(false, mkinode(m1, md, boolvar0, m3, m4, m5))][ino].dirty) ∧ (datakey(ino, n) ∈ pcache → ¬ pcache[datakey(ino, n)].dirty)
Used simplifier rules: ⊦ synced(ino, icache, pcache) ↔ (ino ∈ icache → ¬ icache[ino].dirty) ∧ (∀ n. datakey(ino, n) ∈ pcache → ¬ pcache[datakey(ino, n)].dirty); (s)