| afs-cons(dirs0, files1), dcache-cons(dcache1, dirs0, files1), icache-cons(icache1, dirs0, files1), pcache-cons(pcache1, dirs0, files1), synced(dirs0, icache1, pcache1), asynced4 → synced(files1, icache1, pcache1) ⊦ ⟪icache_recovery#(; ; icache, err); if err = ESUCCESS then dcache_recovery#(; ; dcache, err); if err = ESUCCESS then pcache_recovery#(; ; pcache, err)⟫ ( err = ESUCCESS → icache-cons(icache, dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1)) ∧ dcache-cons(dcache, dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1)) ∧ pcache-cons(pcache, dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1)) ∧ synced(dirs0 \ orphans(dirs0, files1), icache, pcache) ∧ (asynced1 → synced(files1 \ orphans(dirs0, files1), icache, pcache)) ∧ afs-cons(dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1))) |
afs-cons(dirs0, files1), dcache-cons(dcache1, dirs0, files1), icache-cons(icache1, dirs0, files1), pcache-cons(pcache1, dirs0, files1), synced(dirs0, icache1, pcache1), asynced4 → synced(files1, icache1, pcache1) ⊦ ⟪icache := ∅; err := ESUCCESS; if err = ESUCCESS then dcache_recovery#(; ; dcache, err); if err = ESUCCESS then pcache_recovery#(; ; pcache, err)⟫ ( err = ESUCCESS → icache-cons(icache, dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1)) ∧ dcache-cons(dcache, dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1)) ∧ pcache-cons(pcache, dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1)) ∧ synced(dirs0 \ orphans(dirs0, files1), icache, pcache) ∧ (asynced1 → synced(files1 \ orphans(dirs0, files1), icache, pcache)) ∧ afs-cons(dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1)))
Used simplifier rules: icache_recovery#(; ; ICACHE, ERR){ICACHE := ∅; ERR := ESUCCESS};