| err = ESUCCESS, 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), cache_sync0 → synced(cache_files0, cache_icache0, cache_pcache0) ⊦ ⟪if err = ESUCCESS then dcache_recovery#(; ; dcache, err); if err = ESUCCESS then pcache_recovery#(; ; pcache, err)⟫ ( ( err = ESUCCESS → ⟨afs_dirs0 := cache_dirs0 \ orphans(cache_dirs0, (cache_files0 ⊕ cache_pcache0) ⊕ cache_icache0), afs_files0 := ((cache_files0 ⊕ cache_pcache0) ⊕ cache_icache0) \ orphans(cache_dirs0, (cache_files0 ⊕ cache_pcache0) ⊕ cache_icache0); afs_recovery#(asynced2; afs_dirs0, afs_files0; afs_asynced, err0)⟩ ( afs_dirs0 = cache_dirs0 \ orphans(cache_dirs0, cache_files0) ∧ afs_files0 = ((cache_files0 \ orphans(cache_dirs0, cache_files0)) ⊕ pcache) ⊕ ∅ ∧ afs_asynced ∧ ESUCCESS = err0)) ∧ ( err ≠ ESUCCESS → (∀ dirs, files, asynced. ⟨afs_recovery#(asynced2; afs_dirs, afs_files; afs_asynced, err0)⟩ (dirs = afs_dirs ∧ files = afs_files ∧ (asynced ↔ afs_asynced) ∧ err = err0)))) |
err = ESUCCESS, 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), cache_sync0 → synced(cache_files0, cache_icache0, cache_pcache0) ⊦ ⟪dcache_recovery#(; ; dcache, err); if err = ESUCCESS then pcache_recovery#(; ; pcache, err)⟫ ( ( err = ESUCCESS → ⟨afs_dirs0 := cache_dirs0 \ orphans(cache_dirs0, (cache_files0 ⊕ cache_pcache0) ⊕ cache_icache0), afs_files0 := ((cache_files0 ⊕ cache_pcache0) ⊕ cache_icache0) \ orphans(cache_dirs0, (cache_files0 ⊕ cache_pcache0) ⊕ cache_icache0); afs_recovery#(asynced2; afs_dirs0, afs_files0; afs_asynced, err0)⟩ ( afs_dirs0 = cache_dirs0 \ orphans(cache_dirs0, cache_files0) ∧ afs_files0 = ((cache_files0 \ orphans(cache_dirs0, cache_files0)) ⊕ pcache) ⊕ ∅ ∧ afs_asynced ∧ ESUCCESS = err0)) ∧ ( err ≠ ESUCCESS → (∀ dirs, files, asynced. ⟨afs_recovery#(asynced2; afs_dirs, afs_files; afs_asynced, err0)⟩ (dirs = afs_dirs ∧ files = afs_files ∧ (asynced ↔ afs_asynced) ∧ err = err0))))