| asynced0 ↔ asynced2, dirs = afs_dirs, files = afs_files, afs-cons(cache_dirs0, (cache_files0 ⊕ cache_pcache0) ⊕ cache_icache0), afs-cons(cache_dirs0, cache_files0), dcache-cons(cache_dcache0, cache_dirs0, cache_files0), icache-cons(cache_icache0, cache_dirs0, cache_files0), pcache-cons(cache_pcache0, cache_dirs0, cache_files0), synced(cache_dirs0, cache_icache0, cache_pcache0), ⌊err0⌋ , cache_sync0 → synced(cache_files0, cache_icache0, cache_pcache0) ⊦ ⟨asynced := true, err := ESUCCESS or {dirs := ?, files := ?, asynced := ?; fail#(; ; err)}⟩ (dirs0 = dirs ∧ files0 = files ∧ (asynced1 ↔ asynced) ∧ err0 = err) |
asynced0 ↔ asynced2, dirs = afs_dirs, files = afs_files, afs-cons(cache_dirs0, cache_files0), afs-cons(cache_dirs0, (cache_files0 ⊕ cache_pcache0) ⊕ cache_icache0), dcache-cons(cache_dcache0, cache_dirs0, cache_files0), icache-cons(cache_icache0, cache_dirs0, cache_files0), pcache-cons(cache_pcache0, cache_dirs0, cache_files0), synced(cache_dirs0, cache_icache0, cache_pcache0), ⌊err0⌋ , cache_sync0 → synced(cache_files0, cache_icache0, cache_pcache0) ⊦ ⟨dirs := ?, files := ?, asynced := ?; fail#(; ; err)⟩ (dirs0 = dirs ∧ files0 = files ∧ (asynced1 ↔ asynced) ∧ err0 = err), ⟨asynced := true, err := ESUCCESS⟩ (dirs0 = dirs ∧ files0 = files ∧ (asynced1 ↔ asynced) ∧ err0 = err)