| tree0 = dnode(md, sdt), tree0[parent(str ' + p0)].dir?, p0 ∈ tree0[str '], str ' ∈ tree0, ∀ tree0, tree1. tree0[parent(p0)].dir? ∧ p0 ∈ tree0 → tree0[p0, tree1].fids = (tree0.fids ∪ tree1.fids) \ tree0[p0].fids ∨ p0 = ε ⊦ tree0[str ' + p0, tree1].fids = (tree0.fids ∪ tree1.fids) \ tree0[str ' + p0].fids |
⊦ dnode(md, sdt).fids = sdt.fids
dnode(md, sdt)[parent(str ' + p0)].dir?, str ∈ sdt, p0 ∈ sdt[str], ∀ tree0, tree1. tree0[parent(p0)].dir? ∧ p0 ∈ tree0 → tree0[p0, tree1].fids = (tree0.fids ∪ tree1.fids) \ tree0[p0].fids ∨ p0 = ε ⊦ dnode(md, sdt)[str ' + p0, tree1].fids = (sdt.fids ∪ tree1.fids) \ sdt[str][p0].fids
Used simplifier rules: fids-dnode: ⊦ dnode(md, sdt).fids = sdt.fids;%str ∈ sdt ⊦ dnode(md, sdt)[str '] = sdt[str]; (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]% ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p] = sdt[str][p]; (s)% ⊦ str ' ∈ dnode(md, sdt) ↔ str ∈ sdt; (s)