| sdt[str][p0] = fnode(fid), p0 ∈ sdt[str], str ∈ sdt, sdt[str][p0] = fnode(fid) ∧ p0 ∈ sdt[str] → fid ∈ sdt[str].fids ⊦ fid ∈ sdt.fids |
⊦ str ∈ sdt ↔ (∃ tree, sdt0. sdt = sdt0[str, tree] ∧ ¬ str ∈ sdt0)
⊦ ¬ str ∈ sdt → sdt[str, tree].fids = sdt.fids ∪ tree.fids
Used simplifier rules: fids-ins: ⊦ ¬ str ∈ sdt → sdt[str, tree].fids = sdt.fids ∪ tree.fids;% ⊦ sdt[str, tree][str] = tree; (s)% ⊦ fid ∈ fidb ∪ fidb0 ↔ fid ∈ fidb ∨ fid ∈ fidb0; (ws)%union-ass: ⊦ fidb ∪ fidb0 ∪ fidb1 = (fidb ∪ fidb0) ∪ fidb1; from specification bag-union[fidbag]%union-com: ⊦ fidb ∪ fidb0 = fidb0 ∪ fidb; from specification bag-union[fidbag] Used terms: sdt, str