| root.dir?, fids-cons(root, fs, ofh), posix-crash(root, fs, ofh, tree, fs0, ofh0) ⊦ pre-open(path, mode, EFAIL, user, root, fs, ofh) ∧ ⟨err0 := EFAIL; if err0 = ESUCCESS then let fid = root[path].fid in choose n with ¬ n ∈ ofh in {ofh[n] := mkfh(fid, mode, 0); fd := n}⟩ posix-crash(root, fs, ofh, tree, fs0, ofh0), ∃ err. pre-open(path, mode, err, user, root, fs, ofh) ∧ ⟨err0 := err; if err0 = ESUCCESS then let fid = root[path].fid in choose n with ¬ n ∈ ofh in {ofh[n] := mkfh(fid, mode, 0); fd := n}⟩ 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-open(path, mode, err, user, root, fs, ofh) ∧ ⟨err0 := err; if err0 = ESUCCESS then let fid = root[path].fid in choose n with ¬ n ∈ ofh in {ofh[n] := mkfh(fid, mode, 0); fd := n}⟩ posix-crash(root, fs, ofh, tree, fs0, ofh0), ⟨err0 := EFAIL; if err0 = ESUCCESS then let fid = root[path].fid in choose n with ¬ n ∈ ofh in {ofh[n] := mkfh(fid, mode, 0); fd := n}⟩ posix-crash(root, fs, ofh, tree, fs0, ofh0)
Used simplifier rules: ⊦ pre-open(p, mode, EFAIL, user, root, fs, ofh); (s)