| tree[str ' + p0] = dnode(md0, sdt), tree = dnode(md, sdt0), p0 ∈ tree[str '], str ' ∈ tree, ∀ tree, md0, sdt, md1. tree[p0] = dnode(md0, sdt) ∧ p0 ∈ tree → tree[p0, dnode(md1, sdt)].fids = tree.fids ⊦ tree[str ' + p0, dnode(md1, sdt)].fids = tree.fids |
⊦ dnode(md, sdt).fids = sdt.fids
sdt0[str][p0] = dnode(md0, sdt), str ∈ sdt0, p0 ∈ sdt0[str], ∀ tree, md0, sdt, md1. tree[p0] = dnode(md0, sdt) ∧ p0 ∈ tree → tree[p0, dnode(md1, sdt)].fids = tree.fids ⊦ dnode(md, sdt0)[str ' + p0, dnode(md1, sdt)].fids = sdt0.fids
Used simplifier rules: fids-dnode: ⊦ dnode(md, sdt).fids = sdt.fids;%str ∈ sdt ⊦ dnode(md, sdt)[str '] = sdt[str]; (s)%a: ⊦ (p + p0) + p1 = p + p0 + p1; from specification list[path]% ⊦ str ∈ sdt → dnode(md, sdt)[str ' + p] = sdt[str][p]; (s)% ⊦ str ' ∈ dnode(md, sdt) ↔ str ∈ sdt; (s)