| root.dir?, fids-cons(root, fs, ofh), posix-crash(root, fs, ofh, tree, fs0, ofh0) ⊦ pre-readmeta(path, EFAIL, user, root, fs, ofh) ∧ ⟨err0 := EFAIL; if err0 = ESUCCESS then if root[path].dir? then md := root[path].meta, m0 := # root[path].subdirs + 2, m := # root[path].entries else let fid = root[path].fid in md := fs[fid].meta, m0 := count(fid, root.fids), m := # fs[fid].content⟩ true, ∃ err. pre-readmeta(path, err, user, root, fs, ofh) ∧ ⟨err0 := err; if err0 = ESUCCESS then if root[path].dir? then md := root[path].meta, m0 := # root[path].subdirs + 2, m := # root[path].entries else let fid = root[path].fid in md := fs[fid].meta, m0 := count(fid, root.fids), m := # fs[fid].content⟩ true |
root.dir?, fids-cons(root, fs, ofh), posix-crash(root, fs, ofh, tree, fs0, ofh0) ⊦ ∃ err. pre-readmeta(path, err, user, root, fs, ofh) ∧ ⟨err0 := err; if err0 = ESUCCESS then if root[path].dir? then md := root[path].meta, m0 := # root[path].subdirs + 2, m := # root[path].entries else let fid = root[path].fid in md := fs[fid].meta, m0 := count(fid, root.fids), m := # fs[fid].content⟩ true, ⟨err0 := EFAIL; if err0 = ESUCCESS then if root[path].dir? then md := root[path].meta, m0 := # root[path].subdirs + 2, m := # root[path].entries else let fid = root[path].fid in md := fs[fid].meta, m0 := count(fid, root.fids), m := # fs[fid].content⟩ true
Used simplifier rules: ⊦ pre-readmeta(p, EFAIL, user, root, fs, ofh); (s)