| 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 |
⊦ str ∈ sdt ↔ (∃ tree, sdt0. sdt = sdt0[str, tree] ∧ ¬ str ∈ sdt0)
dnode(md, sdt)[parent(str ' + p0)].dir?, p0 ∈ sdt[str], ∀ tree0, tree1. tree0[parent(p0)].dir? ∧ p0 ∈ tree0 → tree0[p0, tree1].fids = (tree0.fids ∪ tree1.fids) \ tree0[p0].fids ∨ p0 = ε, ∃ tree, sdt0. sdt = sdt0[str, tree] ∧ ¬ str ∈ sdt0 ⊦ dnode(md, sdt)[str ' + p0, tree1].fids = (sdt.fids ∪ tree1.fids) \ sdt[str][p0].fids
Used terms: sdt, str