| dnode(md, sdt)[str ' + p0, tree0] = fnode(fid), parent(str ' + p0) ∈ dnode(md, sdt) ⊦ |
p ≠ ε ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p, tree0] = dnode(md, sdt[str, sdt[str][p, tree0]])
⊦ str ' + p ∈ dnode(md, sdt) ↔ str ∈ sdt ∧ p ∈ sdt[str]
p ≠ ε ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p, tree0] = dnode(md, sdt[str, sdt[str][p, tree0]])
⊦ dnode(md, sdt)[str ', tree0] = dnode(md, sdt[str, tree0])
Used simplifier rules: in-dnode: ⊦ str ' + p ∈ dnode(md, sdt) ↔ str ∈ sdt ∧ p ∈ sdt[str];%put-rec: p ≠ ε ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p, tree0] = dnode(md, sdt[str, sdt[str][p, tree0]]);%put-here: ⊦ dnode(md, sdt)[str ', tree0] = dnode(md, sdt[str, tree0]);% ⊦ fnode(fid) ≠ dnode(md, sdt); (s)% ⊦ p ≠ ε → parent(str ' + p) = str ' + parent(p); (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]% ⊦ p + ε = p; (s) Used terms: tree0, p0, str, sdt, md