| ∀ x, s. list2set(x) ∩ s = ∅ ∧ m < # x → list2set(firstn(m, x)) ∩ s = ∅ ⊦ list2set(x) ∩ s = ∅ ∧ m +1 < # x → list2set(firstn(m +1, x)) ∩ s = ∅ |
list2set(x) ∩ s = ∅, m + 1 < # x, ∀ x0, s0. ¬ # x0 ≤ m ∧ list2set(x0) ∩ s0 = ∅ → list2set(firstn(m, x0)) ∩ s0 = ∅ ⊦ #((list2set(firstn(m, x.rest)) ++ x.first) ∩ s) = 0, (list2set(firstn(m, x.rest)) ++ x.first) ∩ s = ∅, x = []
Used simplifier rules: list2set-rec: ⊦ list2set(a ' + x) = list2set(x) ++ a;% ⊦ # s ≠ 0 → s ≠ ∅; (forward)% ⊦ # x = 0 ↔ x = [];% ⊦ s ≠ ∅ → # s ≠ 0; (forward)% ⊦ m < n → n ≠ 0; (forward)% ⊦ ¬ m < n ↔ n ≤ m;% ⊦ (x + y) + z = x + y + z;% ⊦ m + n = n + m;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ a + x = a ' + x;% ⊦ firstn(n + 1, x) = x.first + firstn(n, x.rest);% ⊦ m +1 = m + 1;