| dirs = dirs0 \ orphans(dirs0, files1), files = files1 \ orphans(dirs0, files1), tree0.dir?, dom of1 < ino, abs(tree0, ROOT_INO)(dirs0), afs-cons(dirs0, files1), fids-cons(tree0, abs-files(files1), abs-of(of1)), of-cons(of1, dirs0, files1), posix-crash(tree0, abs-files(files1), abs-of(of1), tree, fs, ofh), ESUCCESS = ESUCCESS → true ∧ of-cons(∅, dirs, files) ∧ afs-cons(dirs, files) ⊦ ( ESUCCESS = ESUCCESS → (∃ root, fs, ofh. posix-crash(tree0, abs-files(files1), abs-of(of1), root, fs, ofh) ∧ ⟨posix_recover#(isdir2; root, fs, ofh; psynced, err0)⟩ (ofh = ∅ ∧ fs = abs-files(files) ∧ abs(root, ROOT_INO)(dirs) ∧ (psynced → true) ∧ ESUCCESS = err0))) ∧ ( ESUCCESS ≠ ESUCCESS → (∀ tree, fs, ofh, isdir. ⟨posix_recover#(isdir2; root0, fs1, ofh1; psynced0, err0)⟩ (tree = root0 ∧ fs = fs1 ∧ ofh = ofh1 ∧ (isdir ↔ psynced0) ∧ ESUCCESS = err0))) |
tree0.dir?, dom of1 < ino, abs(tree0, ROOT_INO)(dirs0), afs-cons(dirs0, files1), afs-cons(dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1)), fids-cons(tree0, abs-files(files1), abs-of(of1)), of-cons(of1, dirs0, files1), of-cons(∅, dirs0 \ orphans(dirs0, files1), files1 \ orphans(dirs0, files1)), posix-crash(tree0, abs-files(files1), abs-of(of1), tree, fs, ofh) ⊦ ∃ root, fs0, ofh0. posix-crash(tree0, abs-files(files1), abs-of(of1), root, fs0, ofh0) ∧ ⟨posix_recover#(isdir2; root, fs0, ofh0; psynced, err0)⟩ (ofh0 = ∅ ∧ fs0 = abs-files(files1 \ orphans(dirs0, files1)) ∧ abs(root, ROOT_INO)(dirs0 \ orphans(dirs0, files1)) ∧ ESUCCESS = err0)