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