| fid ∈ fs ↔ fid ∈ root0.fids ∨ fid ∈ ofh.fids, root0[parent(path')].dir?, fids-cons(root0, fs, ofh), py(user, parent(path'), root0, fs), py(user, parent(path), root0, fs), parent(path') ∈ root0, path ∈ root0, root0[path].dir? → pw(user, path, root0, fs) ⊦ fid ∈ fs ↔ fid ∈ (root0 -- path)[path', root0[path]].fids ∨ fid ∈ ofh.fids, path' = ε, path' ∈ root0, path ⊑ path', path' ≠ ε ∧ parent(path') ∈ root0 -- path ∧ (root0 -- path)[parent(path')].dir? ∧ ¬ path' ∈ root0 -- path |
fid ∈ fs ↔ fid ∈ root0.fids ∨ fid ∈ ofh.fids, root0[parent(path')].dir?, fids-cons(root0, fs, ofh), py(user, parent(path), root0, fs), py(user, parent(path'), root0, fs), path ∈ root0, parent(path') ∈ root0, root0[path].dir? → pw(user, path, root0, fs) ⊦ fid ∈ fs ↔ fid ∈ (root0 -- path)[path', root0[path]].fids ∨ fid ∈ ofh.fids, path' = ε, path' ∈ root0, path ⊑ path', ¬ path ⊑ parent(path') ∧ (parent(path') ⊑ path ⊃ root0[parent(path')] -- restn(# path' - 1, path);root0[parent(path')]).dir?
Used simplifier rules: ⊦ p ≠ ε → (parent(p) = ε ↔ p = p.head '); (s)% ⊦ p ⊑ ε ↔ p = ε; (s)% ⊦ p ≠ ε → # parent(p) = # p - 1; (s)%p ≠ ε, q ∈ tree -- p ⊦ p ∈ tree → (tree -- p)[q] = (q ⊑ p ⊃ tree[q] -- restn(# q, p);tree[q]); (s)%p ≠ ε ⊦ p ∈ tree → (q ∈ tree -- p ↔ ¬ p ⊑ q ∧ q ∈ tree); (s)% ⊦ ε ⊑ p; (s)% ⊦ ε ∈ tree; (s)% ⊦ tree[ε] = tree; (s)