| ⊦ (∀ fid. ∀ fid0, tree. fnode(fid) = tree ∧ fid0 ∈ tree.fids → (∃ p. p ∈ tree ∧ tree[p] = fnode(fid0))) ∧ (∀ md, sdt. (∀ str. str ∈ sdt → (∀ fid, tree. sdt[str] = tree ∧ fid ∈ tree.fids → (∃ p. p ∈ tree ∧ tree[p] = fnode(fid)))) → (∀ fid, tree. dnode(md, sdt) = tree ∧ fid ∈ tree.fids → (∃ p. p ∈ tree ∧ tree[p] = fnode(fid)))) |
⊦ fnode(fid).fids = {fid}
⊦ dnode(md, sdt).fids = sdt.fids
fid ∈ sdt.fids, ∀ str. str ∈ sdt → (∀ fid. fid ∈ sdt[str].fids → (∃ p. p ∈ sdt[str] ∧ sdt[str][p] = fnode(fid))) ⊦ ∃ p. p ∈ dnode(md, sdt) ∧ dnode(md, sdt)[p] = fnode(fid)
Used simplifier rules: fids-fnode: ⊦ fnode(fid).fids = {fid} ;%fids-dnode: ⊦ dnode(md, sdt).fids = sdt.fids;% ⊦ fnode(fid) = fnode(fid0) ↔ fid = fid0; (s)% ⊦ tree[ε] = tree; (s)% ⊦ p ∈ fnode(fid) ↔ p = ε; (s)% ⊦ fid ∈ {fid0} ↔ fid = fid0; (s)