| ∀ sdt0, fid. # sdt0 < # sdt → true → (fid ∈ sdt0.fids ↔ (∃ str, p. str ∈ sdt0 ∧ p ∈ sdt0[str] ∧ sdt0[str][p] = fnode(fid))) ⊦ fid ∈ sdt.fids ↔ (∃ str, p. str ∈ sdt ∧ p ∈ sdt[str] ∧ sdt[str][p] = fnode(fid)), ∀ str, tree, sdt0. ¬(sdt = sdt0[str, tree] ∧ ¬ str ∈ sdt0) |
⊦ ¬ str ∈ sdt → sdt[str, tree].fids = sdt.fids ∪ tree.fids
∀ sdt1, fid. # sdt1 < # sdt0[str, tree] → true → (fid ∈ sdt1.fids ↔ (∃ str, p. str ∈ sdt1 ∧ p ∈ sdt1[str] ∧ sdt1[str][p] = fnode(fid))) ⊦ fid ∈ sdt0.fids ∪ tree.fids ↔ (∃ str0, p. str0 ∈ sdt0[str, tree] ∧ p ∈ sdt0[str, tree][str0] ∧ sdt0[str, tree][str0][p] = fnode(fid)), str ∈ sdt0
Used simplifier rules: fids-ins: ⊦ ¬ str ∈ sdt → sdt[str, tree].fids = sdt.fids ∪ tree.fids;