| fid ∈ fs ↔ fid ∈ root0.fids ∨ fid ∈ ofh.fids, path' = p0 + str ', root0[p0].dir?, fids-cons(root0, fs, ofh), py(user, p0, root0, fs), py(user, parent(path), root0, fs), p0 ∈ 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 ⊑ p0 ∧ (p0 ⊑ path ⊃ root0[p0] -- restn(# path' - 1, path);root0[p0]).dir? |
fid ∈ fs ↔ fid ∈ root0.fids ∨ fid ∈ ofh.fids, root0[p0].dir?, fids-cons(root0, fs, ofh), py(user, parent(path), root0, fs), py(user, p0, root0, fs), path ∈ root0, p0 ∈ root0, root0[path].dir? → pw(user, path, root0, fs) ⊦ fid ∈ fs ↔ fid ∈ (root0 -- path)[p0 + str ', root0[path]].fids ∨ fid ∈ ofh.fids, (p0 ⊑ path ⊃ root0[p0] -- restn(# p0, path);root0[p0]).dir?, str ' ∈ root0[p0], path ⊑ p0 + str '
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ n + 0 = n; (s)% ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s)% ⊦ # str ' = 0 +1; (s)% ⊦ #(p + p0) = # p + # p0; (s)% ⊦ ¬ p ⊑ p0 + p1 → ¬ p ⊑ p0; (s)% ⊦ p + q ∈ tree ↔ p ∈ tree ∧ q ∈ tree[p]; (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]% ⊦ p + str ' ≠ ε; (s)