| tree = dnode(md, sdt), p0 ∈ tree[str '], str ' ∈ tree, ∀ tree, tree0. p0 ∈ tree → tree[p0, tree0][p0] = tree0 ⊦ tree[str ', tree[str '][p0, tree0]][str ' + p0] = tree0 |
⊦ dnode(md, sdt)[str ', tree0] = dnode(md, sdt[str, tree0])
⊦ dnode(md, sdt[str, tree])[str ' + p] = tree[p]
⊦ str ' ∈ dnode(md, sdt) ↔ str ∈ sdt
str ∈ sdt ⊦ dnode(md, sdt)[str '] = sdt[str]
str ∈ sdt, p0 ∈ sdt[str], ∀ tree, tree0. p0 ∈ tree → tree[p0, tree0][p0] = tree0 ⊦ sdt[str][p0, tree0][p0] = tree0
Used simplifier rules: put-here: ⊦ dnode(md, sdt)[str ', tree0] = dnode(md, sdt[str, tree0]);%at-dnode-same: ⊦ dnode(md, sdt[str, tree])[str ' + p] = tree[p];%one-ind: ⊦ str ' ∈ dnode(md, sdt) ↔ str ∈ sdt;%one-at: str ∈ sdt ⊦ dnode(md, sdt)[str '] = sdt[str];%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]