| 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 = [] |
x = a + y, list2set(x) ∩ s = ∅, m + 1 < # x, ∀ x0, s0. ¬ # x0 ≤ m ∧ list2set(x0) ∩ s0 = ∅ → list2set(firstn(m, x0)) ∩ s0 = ∅ ⊦ #((list2set(firstn(m, y)) ++ a) ∩ s) = 0, (list2set(firstn(m, y)) ++ a) ∩ s = ∅, x = []
Used simplifier rules: x ≠ [] ⊦ a = x.first ∧ y = x.rest ↔ x = a + y; (elim) Used terms: x, a, y