| sdt[str][parent(p0)].dir?, str ∈ sdt, parent(p0) ∈ sdt[str], ∀ tree, tree0. tree[parent(p0)].dir? ∧ parent(p0) ∈ tree → tree[p0, tree0].fids = tree.fids ∪ tree0.fids ∨ p0 ∈ tree ⊦ sdt[str, sdt[str][p0, tree1]].fids = sdt.fids ∪ tree1.fids, p0 = ε, p0 ∈ sdt[str] |
⊦ str ∈ sdt ↔ (∃ tree, sdt0. sdt = sdt0[str, tree] ∧ ¬ str ∈ sdt0)
sdt[str][parent(p0)].dir?, parent(p0) ∈ sdt[str], ∀ tree, tree0. tree[parent(p0)].dir? ∧ parent(p0) ∈ tree → tree[p0, tree0].fids = tree.fids ∪ tree0.fids ∨ p0 ∈ tree, ∃ tree, sdt0. sdt = sdt0[str, tree] ∧ ¬ str ∈ sdt0 ⊦ sdt[str, sdt[str][p0, tree1]].fids = sdt.fids ∪ tree1.fids, p0 = ε, p0 ∈ sdt[str]
Used terms: sdt, str