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