| afs-cons(dirs0, files1), pcache-cons(pcache1, dirs0, files1), synced(dirs0, icache1, pcache1), asynced4 → synced(files1, icache1, pcache1) ⊦ pcache-cons(∅, dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1)) |
⊦ pcache-cons(pcache, dirs, files) ↔ (∀ key. key ∈ pcache → key.data? ∧ # pcache[key].page = VFS_PAGE_SIZE ∧ valid-file-ino(key.ino, dirs, files) ∧ (¬ pcache[key].dirty → key.part ∈ files[key.ino].content ∧ pcache[key].page = files[key.ino].content[key.part]))
Used simplifier rules: ⊦ ¬ key ∈ ∅; (s) Used terms: ∅, dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1)