| ofh0[n] = mkfh(fid0, mode0, m0), ofh0[fd] = mkfh(fid, mode, m), root.dir?, fids-cons(root, fs, ofh0), n ∈ ofh0, fd ∈ ofh0, fid0 ∈ fs ⊦ # ofh0.fids = 0, ofh0.fids = ∅, fid0 ∈ root.fids, ∃ n0. n0 ≠ fd ∧ n0 ∈ ofh0 ∧ ofh0[n0].fid = fid0, ¬ fid ∈ (ofh0 -- fd).fids ∧ ¬ fid ∈ root.fids, n ≠ fd ∧ n ∈ ofh0 ∧ ofh0[n].fid = fid0 |
ofh0[fd] = mkfh(fid, mode, m), root.dir?, fids-cons(root, fs, ofh0), fid ∈ (ofh0 -- fd).fids, fd ∈ ofh0, fid ∈ fs ⊦ # ofh0.fids = 0, # (ofh0 -- fd).fids = 0, (ofh0 -- fd).fids = ∅, ofh0.fids = ∅, fid ∈ root.fids, ∃ n0. n0 ≠ fd ∧ n0 ∈ ofh0 ∧ ofh0[n0].fid = fid
Used simplifier rules: size-zero-01: ⊦ fids ≠ ∅ → # fids ≠ 0; (forward) from specification set-basic[fidset]%ne-01: ⊦ fid ∈ fids → fids ≠ ∅; (forward) from specification set-basic[fidset]%⊦ mkfh(fid, mode, m) = mkfh(fid0, mode0, m0) ↔ fid = fid0 ∧ mode = mode0 ∧ m = m0; (ws)% ⊦ mkfh(fid, mode, m).fid = fid; (s)