| q1 ∈ (dnode(md, sdt) -- (str ' + p0))[str0 '], str0 ' ∈ dnode(md, sdt) -- (str ' + p0), p0 ∈ sdt[str], str ∈ sdt, ∀ tree0, q0. p0 ∈ tree0 ∧ ¬ p0 ⊑ q0 ∧ q0 ∈ tree0 → (tree0 -- p0)[q0] = (q0 ⊑ p0 ⊃ tree0[q0] -- restn(# q0, p0);tree0[q0]) ∨ p0 = ε ⊦ (dnode(md, sdt) -- (str ' + p0))[str0 '][q1] = (str0 ' + q1 ⊑ str ' + p0 ⊃ dnode(md, sdt)[str0 ' + q1] -- restn(# q1, p0);dnode(md, sdt)[str0 ' + q1]), p0 = ε |
p ≠ ε ⊦ str ∈ sdt → dnode(md, sdt) -- (str ' + p) = dnode(md, sdt[str, sdt[str] -- p])
⊦ str ' ∈ dnode(md, sdt) ↔ str ∈ sdt
str ∈ sdt, p0 ∈ sdt[str], str0 ∈ sdt[str, sdt[str] -- p0], q1 ∈ dnode(md, sdt[str, sdt[str] -- p0])[str0 '], ∀ tree, q. p0 ∈ tree ∧ ¬ p0 ⊑ q ∧ q ∈ tree → (tree -- p0)[q] = (q ⊑ p0 ⊃ tree[q] -- restn(# q, p0);tree[q]) ⊦ dnode(md, sdt[str, sdt[str] -- p0])[str0 '][q1] = (str0 ' + q1 ⊑ str ' + p0 ⊃ dnode(md, sdt)[str0 ' + q1] -- restn(# q1, p0);dnode(md, sdt)[str0 ' + q1]), p0 = ε
Used simplifier rules: del-recin: p ≠ ε ⊦ str ∈ sdt → dnode(md, sdt) -- (str ' + p) = dnode(md, sdt[str, sdt[str] -- p]);%one-ind: ⊦ str ' ∈ dnode(md, sdt) ↔ str ∈ sdt;%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]