| files[m] = mkfile(m1, md, m2, content), of0[fd] = mkfile(m, mode, m0), err0 = ESUCCESS, fid = ofh0[fd].fid, fs = abs-files(files), ofh = ofh0 -- fd, ofh0 = abs-of(of0), root.dir?, dom of0 < ino0, abs(root, ROOT_INO)(dirs), afs-cons(dirs, files), fids-cons(root, abs-files(files), abs-of(of0)), is-open(m, of0 -- fd), of-cons(of0 -- fd, dirs, files), of-cons(of0, dirs, files), fd ∈ ofh0, fd ∈ of0, psynced → asynced ⊦ ⟨fs := fs -- fid⟩ (ofh = abs-of(of0 -- fd) ∧ fs = abs-files(files) ∧ (psynced → asynced) ∧ ESUCCESS = err0), fid ∈ root.fids, fid ∈ ofh.fids |
⊦ ⌜ino⌝ ∈ abs-of(of).fids ↔ is-open(ino, of)
Used simplifier rules: of: ⊦ ⌜ino⌝ ∈ abs-of(of).fids ↔ is-open(ino, of);% ⊦ fd ∈ abs-of(of) ↔ fd ∈ of; (s)%fd ∈ of ⊦ abs-of(of)[fd] = mkfh(⌜of[fd].ino⌝ , of[fd].mode, of[fd].pos); (s)% ⊦ mkfh(fid, mode, m).fid = fid; (s)% ⊦ abs-of(of) -- fd = abs-of(of -- fd); (s)% ⊦ abs-files(files) -- ⌜ino⌝ = abs-files(files -- ino); (s)% ⊦ mkfile(m, mode, m0).ino = m; (s)