| dnode(md, sdt[str, tree])[p] = fnode(fid), p = str0 + p0, p ∈ dnode(md, sdt[str, tree]) ⊦ p = ε, p ∈ links(fid, dnode(md, sdt)), str ∈ sdt, p0 ∈ links(fid, tree) ∧ str0 = str |
sdt[str, tree][str0][p0] = fnode(fid), str0 ∈ sdt[str, tree], p0 ∈ sdt[str, tree][str0] ⊦ str ∈ sdt, str0 ' + p0 ∈ links(fid, dnode(md, sdt)), p0 ∈ links(fid, tree) ∧ str0 = str
Used simplifier rules: ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p] = sdt[str][p]; (s)% ⊦ str ' + p ∈ dnode(md, sdt) ↔ str ∈ sdt ∧ p ∈ sdt[str]; (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]% ⊦ str ' + p ≠ ε; (s)% ⊦ str + p = str ' + p; (s)