| tree0[parent(str ' + p0)].dir?, parent(str ' + p0) ∈ tree0, ∀ tree0, tree1. tree0[parent(p0)].dir? ∧ parent(p0) ∈ tree0 → tree0[p0, tree1].fids = tree0.fids ∪ tree1.fids ∨ p0 = ε ∨ p0 ∈ tree0 ⊦ tree0[str ' + p0, tree1].fids = tree0.fids ∪ tree1.fids, str ' ∈ tree0 ∧ p0 ∈ tree0[str '] |
tree0 = dnode(md, sdt), tree0[parent(str ' + p0)].dir?, parent(str ' + p0) ∈ tree0, ∀ tree0, tree1. tree0[parent(p0)].dir? ∧ parent(p0) ∈ tree0 → tree0[p0, tree1].fids = tree0.fids ∪ tree1.fids ∨ p0 = ε ∨ p0 ∈ tree0 ⊦ tree0[str ' + p0, tree1].fids = tree0.fids ∪ tree1.fids, str ' ∈ tree0 ∧ p0 ∈ tree0[str ']
⊦ fnode(fid).fids = {fid}
Used simplifier rules: fids-fnode: ⊦ fnode(fid).fids = {fid} ;%directory-tree, entries-tree generated by ∅, dnode, fnode, [ ];;% ⊦ p ∈ fnode(fid) ↔ p = ε; (s)% ⊦ parent(str ' + p) = ε ↔ p = ε; (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]% ⊦ str ' ∈ fnode(fid) ↔ false; (s)% ⊦ p + ε = p; (s)% ⊦ parent(str ') = ε; (s)% ⊦ tree[ε] = tree; (s)% ⊦ ¬ fnode(fid).dir?; (s)