| sdt0[str][p0] = dnode(md0, sdt), p0 ∈ sdt0[str], ∀ tree, md0, sdt, md1. tree[p0] = dnode(md0, sdt) ∧ p0 ∈ tree → tree[p0, dnode(md1, sdt)].fids = tree.fids, ∃ tree, sdt1. sdt0 = sdt1[str, tree] ∧ ¬ str ∈ sdt1 ⊦ dnode(md, sdt0)[str ' + p0, dnode(md1, sdt)].fids = sdt0.fids |
⊦ ¬ str ∈ sdt → sdt[str, tree].fids = sdt.fids ∪ tree.fids
tree[p0] = dnode(md0, sdt), p0 ∈ tree, ∀ tree, md0, sdt, md1. tree[p0] = dnode(md0, sdt) ∧ p0 ∈ tree → tree[p0, dnode(md1, sdt)].fids = tree.fids ⊦ dnode(md, sdt1[str, tree])[str ' + p0, dnode(md1, sdt)].fids = sdt1.fids ∪ tree.fids, str ∈ sdt1
Used simplifier rules: fids-ins: ⊦ ¬ str ∈ sdt → sdt[str, tree].fids = sdt.fids ∪ tree.fids;% ⊦ sdt[str, tree][str] = tree; (s)