| afs_asynced ↔ cache_asynced, afs_dirs = cache_dirs, afs_files = (cache_files ⊕ cache_pcache) ⊕ cache_icache, c_inode = p_inode1, dent = dent0, err = err0, p_inode = p_inode0, afs-cons(cache_dirs, cache_files), afs-cons(afs_dirs, afs_files), dcache-cons(cache_dcache, cache_dirs, cache_files), icache-cons(cache_icache, cache_dirs, cache_files), pcache-cons(cache_pcache, cache_dirs, cache_files), pre-unlink(p_inode, c_inode, dent, afs_dirs, afs_files), synced(cache_dirs, cache_icache, cache_pcache), cache_sync → synced(cache_files, cache_icache, cache_pcache) ⊦ ⟪cache_unlink#(; p_inode, c_inode, dent, err, cache_dirs, cache_files, cache_icache, cache_dcache, cache_asynced)⟫ ⟨afs_unlink#(; p_inode0, p_inode1, dent0, err0, afs_dirs, afs_files; afs_asynced)⟩ ( (afs_dirs = cache_dirs ∧ afs_files = (cache_files ⊕ cache_pcache) ⊕ cache_icache ∧ (afs_asynced ↔ cache_asynced)) ∧ p_inode = p_inode0 ∧ c_inode = p_inode1 ∧ dent = dent0 ∧ err = err0) |
icache-cons(icache, dirs, files), dcache-cons(dcache, dirs, files), pcache-cons(pcache, dirs, files), synced(dirs, icache, pcache), asynced → synced(files, icache, pcache), afs-cons(dirs, files), pre-unlink(p_inode, c_inode, dent, dirs, files) ⊦ ⟪cache_unlink#(; p_inode, c_inode, dent, err, dirs, files, icache, dcache, asynced0)⟫ ( icache-cons(icache, dirs, files) ∧ dcache-cons(dcache, dirs, files) ∧ pcache-cons(pcache, dirs, files) ∧ synced(dirs, icache, pcache) ∧ (asynced → synced(files, icache, pcache)) ∧ afs-cons(dirs, files))
afs_asynced ↔ cache_asynced, afs_dirs = cache_dirs, afs_files = (cache_files ⊕ cache_pcache) ⊕ cache_icache, c_inode = p_inode1, dent = dent0, err = err0, p_inode = p_inode0, afs-cons(afs_dirs, afs_files), afs-cons(cache_dirs, cache_files), dcache-cons(cache_dcache, cache_dirs, cache_files), icache-cons(cache_icache, cache_dirs, cache_files), pcache-cons(cache_pcache, cache_dirs, cache_files), pre-unlink(p_inode, c_inode, dent, afs_dirs, afs_files), synced(cache_dirs, cache_icache, cache_pcache), cache_sync → synced(cache_files, cache_icache, cache_pcache) ⊦ icache-cons(cache_icache, cache_dirs, cache_files) ∧ dcache-cons(cache_dcache, cache_dirs, cache_files) ∧ pcache-cons(cache_pcache, cache_dirs, cache_files) ∧ synced(cache_dirs, cache_icache, cache_pcache) ∧ (cache_sync → synced(cache_files, cache_icache, cache_pcache)) ∧ afs-cons(cache_dirs, cache_files) ∧ pre-unlink(p_inode, c_inode, dent, cache_dirs, cache_files)
afs_asynced ↔ cache_asynced, asynced1 ↔ cache_sync, afs_dirs = cache_dirs, afs_files = (cache_files ⊕ cache_pcache) ⊕ cache_icache, c_inode = p_inode1, dent = dent0, err = err0, p_inode = p_inode0, pcache0 = cache_pcache, afs-cons(afs_dirs, afs_files), afs-cons(cache_dirs, cache_files), dcache-cons(cache_dcache, cache_dirs, cache_files), icache-cons(cache_icache, cache_dirs, cache_files), pcache-cons(cache_pcache, cache_dirs, cache_files), pre-unlink(p_inode, c_inode, dent, afs_dirs, afs_files), pre-unlink(p_inode, c_inode, dent, cache_dirs, cache_files), synced(cache_dirs, cache_icache, cache_pcache), cache_sync → synced(cache_files, cache_icache, cache_pcache) ⊦ [cache_unlink#(; p_inode, c_inode, dent, err, cache_dirs, cache_files, cache_icache, cache_dcache, cache_asynced)] ( icache-cons(cache_icache, cache_dirs, cache_files) ∧ dcache-cons(cache_dcache, cache_dirs, cache_files) ∧ pcache-cons(pcache0, cache_dirs, cache_files) ∧ synced(cache_dirs, cache_icache, pcache0) ∧ (asynced1 → synced(cache_files, cache_icache, pcache0)) ∧ afs-cons(cache_dirs, cache_files) → ⟨afs_unlink#(; p_inode0, p_inode1, dent0, err0, afs_dirs, afs_files; afs_asynced)⟩ ( (afs_dirs = cache_dirs ∧ afs_files = (cache_files ⊕ cache_pcache) ⊕ cache_icache ∧ (afs_asynced ↔ cache_asynced)) ∧ p_inode = p_inode0 ∧ c_inode = p_inode1 ∧ dent = dent0 ∧ err = err0))