| fid0 ∈ fs ↔ fid0 ∈ root0.fids ∨ fid0 ∈ ofh.fids, root0[path'] = fnode(fid), path' = q + str ', root0[q].dir?, fids-cons(root0, fs, ofh), py(user, q, root0, fs), py(user, parent(path), root0, fs), q ∈ root0, path ∈ root0, path' ∈ root0 ⊦ fid0 ≠ fid ∧ fid0 ∈ fs ↔ fid0 ∈ (root0 -- path)[path', root0[path]].fids ∨ fid0 ∈ ofh.fids, path' = ε, (root0 -- path)[q].dir?, root0[path].dir?, fid ∈ (root0 -- path)[path', root0[path]].fids, fid ∈ ofh.fids, path ⊑ path' |
fid0 ∈ fs ↔ fid0 ∈ root0.fids ∨ fid0 ∈ ofh.fids, root0[q + str '] = fnode(fid), root0[q].dir?, fids-cons(root0, fs, ofh), py(user, parent(path), root0, fs), py(user, q, root0, fs), path ∈ root0, q ∈ root0, str ' ∈ root0[q] ⊦ fid0 ≠ fid ∧ fid0 ∈ fs ↔ fid0 ∈ (root0 -- path)[q + str ', root0[path]].fids ∨ fid0 ∈ ofh.fids, root0[path].dir?, (q ⊑ path ⊃ root0[q] -- restn(# q, path);root0[q]).dir?, fid ∈ ofh.fids, fid ∈ (root0 -- path)[q + str ', root0[path]].fids, path ⊑ q + str '
Used simplifier rules: p ≠ ε, q ∈ tree -- p ⊦ p ∈ tree → (tree -- p)[q] = (q ⊑ p ⊃ tree[q] -- restn(# q, p);tree[q]); (s)% ⊦ ε ⊑ p; (s)% ⊦ ¬ tree.dir? → (p ∈ tree ↔ p = ε); (s)% ⊦ ε ∈ tree; (s)% ⊦ tree[ε] = tree; (s)% ⊦ ¬ p ⊑ p0 + p1 → ¬ p ⊑ p0; (s)%p ≠ ε ⊦ p ∈ tree → (q ∈ tree -- p ↔ ¬ p ⊑ q ∧ q ∈ tree); (s)% ⊦ p + q ∈ tree ↔ p ∈ tree ∧ q ∈ tree[p]; (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]% ⊦ p + str ' ≠ ε; (s)