| ∀ str0. str0 ∈ sdt0[str, tree] → (∃ fids. ∀ fid. fid ∈ fids ↔ fid ∈ sdt0[str, tree][str0].fids), ∀ fid. fid ∈ fids ↔ fid ∈ tree.fids, ∀ sdt1. # sdt1 < # sdt0[str, tree] → (∀ str. str ∈ sdt1 → (∃ fids. ∀ fid. fid ∈ fids ↔ fid ∈ sdt1[str].fids)) → (∃ fids. ∀ fid0. fid0 ∈ fids ↔ fid0 ∈ sdt1.fids) ⊦ str ∈ sdt0, ∃ fids. ∀ fid. fid ∈ fids ↔ fid ∈ sdt0.fids ∪ tree.fids |
∀ fid. fid ∈ fids ↔ fid ∈ tree.fids, ∀ str0. str0 ∈ sdt0[str, tree] → (∃ fids. ∀ fid. fid ∈ fids ↔ fid ∈ sdt0[str, tree][str0].fids), ∀ sdt1. # sdt1 < # sdt0[str, tree] → (∀ str. str ∈ sdt1 → (∃ fids. ∀ fid. fid ∈ fids ↔ fid ∈ sdt1[str].fids)) → (∃ fids. ∀ fid0. fid0 ∈ fids ↔ fid0 ∈ sdt1.fids) ⊦ str ∈ sdt0, ∀ str. str ∈ sdt0 → (∃ fids. ∀ fid. fid ∈ fids ↔ fid ∈ sdt0[str].fids), ∃ fids. ∀ fid. fid ∈ fids ↔ fid ∈ sdt0.fids ∪ tree.fids
∀ fid. fid ∈ fids ↔ fid ∈ tree.fids, ∀ str0. str0 ∈ sdt0[str, tree] → (∃ fids. ∀ fid. fid ∈ fids ↔ fid ∈ sdt0[str, tree][str0].fids), ∃ fids. ∀ fid0. fid0 ∈ fids ↔ fid0 ∈ sdt0.fids, ∀ sdt1. # sdt1 < # sdt0[str, tree] → (∀ str. str ∈ sdt1 → (∃ fids. ∀ fid. fid ∈ fids ↔ fid ∈ sdt1[str].fids)) → (∃ fids. ∀ fid0. fid0 ∈ fids ↔ fid0 ∈ sdt1.fids) ⊦ str ∈ sdt0, ∃ fids. ∀ fid. fid ∈ fids ↔ fid ∈ sdt0.fids ∪ tree.fids
Used simplifier rules: ⊦ ¬ str ∈ sdt → # sdt[str, tree] = # sdt + 1; (s)% ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ ¬ n < n; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic Used terms: sdt0