| tree = dnode(md, sdt), ∀ q, tree. p0 + q ∈ tree ↔ p0 ∈ tree ∧ q ∈ tree[p0] ⊦ (str ' + p0) + q ∈ tree ↔ str ' + p0 ∈ tree ∧ q ∈ tree[str ' + p0] |
⊦ str ' + p ∈ dnode(md, sdt) ↔ str ∈ sdt ∧ p ∈ sdt[str]
⊦ str ∈ sdt → dnode(md, sdt)[str ' + p] = sdt[str][p]
str ∈ sdt, ∀ q, tree. p0 + q ∈ tree ↔ p0 ∈ tree ∧ q ∈ tree[p0] ⊦ p0 + q ∈ sdt[str] ↔ p0 ∈ sdt[str] ∧ q ∈ sdt[str][p0]
Used simplifier rules: in-dnode: ⊦ str ' + p ∈ dnode(md, sdt) ↔ str ∈ sdt ∧ p ∈ sdt[str];%at-dnode: ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p] = sdt[str][p];%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]