| 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-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) ⊦ ⟨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) ∧ afs_asynced ∧ ESUCCESS = err0) |
asynced0 ↔ asynced2, 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), dirs = afs_dirs0, files = afs_files0, 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) ⊦ ⟨asynced := true, err := ESUCCESS or {dirs := ?, files := ?, asynced := ?; fail#(; ; err)}⟩ (dirs = cache_dirs0 \ orphans(cache_dirs0, cache_files0) ∧ files = cache_files0 \ orphans(cache_dirs0, cache_files0) ∧ asynced ∧ ESUCCESS = err)
Used simplifier rules: afs_recovery#(DOSYNC; DIRS, FILES; ASYNCED, ERR) { ASYNCED := true, ERR := ESUCCESS or {DIRS := ?, FILES := ?, ASYNCED := ?; fail#(; ; ERR)} };