| err0 = err1, psynced, root.dir?, fids-cons(root, fs, ofh), posix-crash(root, fs, ofh, tree, fs0, ofh0) ⊦ ∃ err. pre-renam(path, path', err, user, root, fs, ofh) ∧ ⟨err0 := err; if err0 = ESUCCESS then let tree0 = root[path], psynced0 = path' ∈ root, tree = root[path'] in {root := (root -- path)[path', tree0]; if psynced0 ∧ ¬ tree.dir? ∧ ¬ tree.fid ∈ ofh.fids ∧ ¬ tree.fid ∈ root.fids then fs := fs -- tree.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) ⊦ ∃ err. pre-renam(path, path', err, user, root, fs, ofh) ∧ ⟨err0 := err; if err0 = ESUCCESS then let tree0 = root[path], psynced0 = path' ∈ root, tree = root[path'] in {root := (root -- path)[path', tree0]; if psynced0 ∧ ¬ tree.dir? ∧ ¬ tree.fid ∈ ofh.fids ∧ ¬ tree.fid ∈ root.fids then fs := fs -- tree.fid}; psynced := ?⟩ (psynced ∧ posix-crash(root, fs, ofh, tree, fs0, ofh0))