| root.dir?, fids-cons(root, fs, ofh), posix-crash(root, fs, ofh, tree, fs0, ofh0) ⊦ ∃ err. pre-unlink(path, err, user, root, fs, ofh) ∧ ⟨err0 := err; if err0 = ESUCCESS then let fid = root[path].fid in {root := root -- path; if ¬ fid ∈ ofh.fids ∧ ¬ fid ∈ root.fids then fs := fs -- fid}; psynced := ?⟩ (psynced ∧ posix-crash(root, fs, ofh, tree, fs0, ofh0)) |
root.dir?, fids-cons(root, fs, ofh), posix-crash(root, fs, ofh, tree, fs0, ofh0) ⊦ pre-unlink(path, EFAIL, user, root, fs, ofh) ∧ ⟨err0 := EFAIL; if err0 = ESUCCESS then let fid = root[path].fid in {root := root -- path; if ¬ fid ∈ ofh.fids ∧ ¬ fid ∈ root.fids then fs := fs -- fid}; psynced := ?⟩ (psynced ∧ posix-crash(root, fs, ofh, tree, fs0, ofh0)), ∃ err. pre-unlink(path, err, user, root, fs, ofh) ∧ ⟨err0 := err; if err0 = ESUCCESS then let fid = root[path].fid in {root := root -- path; if ¬ fid ∈ ofh.fids ∧ ¬ fid ∈ root.fids then fs := fs -- fid}; psynced := ?⟩ (psynced ∧ posix-crash(root, fs, ofh, tree, fs0, ofh0))
Used terms: EFAIL