| tree[p] = dnode(md0, sdt), tree.dir?, p ∈ tree ⊦ q ∈ tree[p, dnode(md1, sdt)] ↔ q ∈ tree[p, dnode(md0, sdt)], p = ε |
p ≠ ε ⊦ p ∈ tree ∧ tree[p] = tree0 → tree[p, tree0] = tree
⊦ tree.dir? ↔ (∃ md, sdt. tree = dnode(md, sdt))
dnode(md, sdt0)[p] = dnode(md0, sdt), p ∈ dnode(md, sdt0) ⊦ q ∈ dnode(md, sdt0)[p, dnode(md1, sdt)] ↔ q ∈ dnode(md, sdt0), p = ε
Used simplifier rules: again-put: p ≠ ε ⊦ p ∈ tree ∧ tree[p] = tree0 → tree[p, tree0] = tree;%dnode-elim-strong: ⊦ tree.dir? ↔ (∃ md, sdt. tree = dnode(md, sdt));