| sdt0[str0] = dnode(md, sdt), q0 ∈ dnode(md, sdt[str, tree0]), str0 ∈ sdt0, str ' ⊑ q0, ∀ md1, sdt1, md2, sdt2, q, str2, tree. dnode(md1, sdt1) = dnode(md2, sdt2) → (q ∈ dnode(md2, sdt2[str2, tree]) ↔ (str2 ' ⊑ q ⊃ q.tail ∈ tree;q ∈ dnode(md1, sdt1))) ⊦ q0.tail ∈ tree0 |
⊦ str ' + p ∈ dnode(md, sdt) ↔ str ∈ sdt ∧ p ∈ sdt[str]
Used simplifier rules: in-dnode: ⊦ str ' + p ∈ dnode(md, sdt) ↔ str ∈ sdt ∧ p ∈ sdt[str];% ⊦ str + p = str ' + p; (s)% ⊦ str ' + p ≠ ε; (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]% ⊦ str ' ⊑ str0 ' + p ↔ str = str0; (s)% ⊦ str = str0 → sdt[str0, tree][str] = tree; (s)% ⊦ p ⊑ ε ↔ p = ε; (s)% ⊦ str ' ≠ ε; (s)%p ≠ ε ⊦ str = p.head ∧ p0 = p.tail ↔ p = str + p0; (elim) Used terms: q0, str1, p