| ⊦ n + 1 < # x ∧ ¬ dups(x) ∧ a ∈ x → (x \ a ')[n] = (n < pos(a, x) ⊃ x[n];x[n + 1]) |
(x \ a ')[n] ≠ (n < pos(a, x) ⊃ x[n];x[n + 1]), n + 1 < # x, a ∈ x, ¬ dups(x) ⊦
| (x \ a ')[n] ≠ (n < pos(a, x) ⊃ x[n];x[n + 1]), n + 1 < # x, a ∈ x, ¬ dups(x) ⊦ |
(x \ a ')[n] ≠ (n < pos(a, x) ⊃ x[n];x[n + 1]), x ≠ [], n + 1 < # x, a ∈ x, ¬ dups(x) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| (x \ a ')[n] ≠ (n < pos(a, x) ⊃ x[n];x[n + 1]), x ≠ [], n + 1 < # x, a ∈ x, ¬ dups(x) ⊦ |
a0 + x0 ≠ [], ((a0 + x0) \ a ')[n] ≠ (n < pos(a, a0 + x0) ⊃ (a0 + x0)[n];(a0 + x0)[n + 1]), n + 1 < #(a0 + x0), a ∈ a0 + x0, ¬ dups(a0 + x0), ∀ a, n. ¬((x0 \ a ')[n] ≠ (n < pos(a, x0) ⊃ x0[n];x0[n + 1]) ∧ x0 ≠ [] ∧ n + 1 < # x0 ∧ a ∈ x0 ∧ ¬ dups(x0)) ⊦
Used simplifier rules: list('a) freely generated by [], +;;
| a0 + x0 ≠ [], ((a0 + x0) \ a ')[n] ≠ (n < pos(a, a0 + x0) ⊃ (a0 + x0)[n];(a0 + x0)[n + 1]), n + 1 < #(a0 + x0), a ∈ a0 + x0, ¬ dups(a0 + x0), ∀ a, n. ¬((x0 \ a ')[n] ≠ (n < pos(a, x0) ⊃ x0[n];x0[n + 1]) ∧ x0 ≠ [] ∧ n + 1 < # x0 ∧ a ∈ x0 ∧ ¬ dups(x0)) ⊦ |
((a0 ' + x0) \ a ')[n] ≠ (¬ pos(a, x0) < n ⊃ (a0 ' + x0)[n];x0[n]), a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: diff-firstofapp: ⊦ (x + y) \ x = y \ x; diff-onenonmember: ⊦ ¬ a ∈ x → x \ a ' = x; c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) a: ⊦ (x + y) + z = x + y + z; from specification polylist ⊦ a ≠ b → pos(a, b ' + x) = pos(a, x) + 1; (s) ⊦ m < # x ∧ n < # x ∧ ¬ dups(x) → (x[m] = x[n] ↔ m = n); (s) ⊦ ¬ n < 0; (s) ⊦ pos(a, a ' + x) = 0; (s) ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); (s) ⊦ a + x = a ' + x; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s) ⊦ a ∈ a0 ' + x ↔ a = a0 ∨ a ∈ x; (s) ⊦ (a ' + x)[n + 1] = x[n]; (s) ⊦ a ' + x ≠ []; (s)
| ((a0 ' + x0) \ a ')[n] ≠ (¬ pos(a, x0) < n ⊃ (a0 ' + x0)[n];x0[n]), a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
((a0 ' + x0) \ a ')[n] ≠ (¬ pos(a, x0) < n ⊃ (a0 ' + x0)[n];x0[n]), a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ a ', ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: diff-y: ⊦ a ∈ y → (a ' + x) \ y = x \ y; a: ⊦ (x + y) + z = x + y + z; from specification polylist ⊦ a ∈ a0 ' ↔ a = a0; (s) Used formulas: a0 ∈ a '
| ((a0 ' + x0) \ a ')[n] ≠ (¬ pos(a, x0) < n ⊃ (a0 ' + x0)[n];x0[n]), a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ a ', ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
(a0 ' + (x0 \ a '))[n] ≠ (¬ pos(a, x0) < n ⊃ (a0 ' + x0)[n];x0[n]), a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: diff-n: ⊦ ¬ a ∈ y → (a ' + x) \ y = a + (x \ y); ⊦ a ∈ a0 ' ↔ a = a0; (s) a: ⊦ (x + y) + z = x + y + z; from specification polylist ⊦ a + x = a ' + x; (s)
| (a0 ' + (x0 \ a '))[n] ≠ (¬ pos(a, x0) < n ⊃ (a0 ' + x0)[n];x0[n]), a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
(a0 ' + (x0 \ a '))[n] ≠ (¬ pos(a, x0) < n ⊃ (a0 ' + x0)[n];x0[n]), a ≠ a0, x0 ≠ [], n < # x0, pos(a, x0) < n, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
(a0 ' + (x0 \ a '))[n] ≠ (¬ pos(a, x0) < n ⊃ (a0 ' + x0)[n];x0[n]), a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, ¬ pos(a, x0) < n, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used formulas: pos(a, x0) < n
| (a0 ' + (x0 \ a '))[n] ≠ (¬ pos(a, x0) < n ⊃ (a0 ' + x0)[n];x0[n]), a ≠ a0, x0 ≠ [], n < # x0, pos(a, x0) < n, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
(a0 ' + (x0 \ a '))[n] ≠ x0[n], a ≠ a0, x0 ≠ [], n < # x0, pos(a, x0) < n, pos(a, x0) + 1 < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: ⊦ a ∈ x → pos(a, x) < # x; (s) ⊦ m +1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| (a0 ' + (x0 \ a '))[n] ≠ x0[n], a ≠ a0, x0 ≠ [], n < # x0, pos(a, x0) < n, pos(a, x0) + 1 < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
⊦ ¬ n < # x → (x + y)[n] = y[n - # x]
(x0 \ a ')[n - # a0 '] ≠ x0[n], a ≠ a0, x0 ≠ [], pos(a, x0) + 1 < # x0, pos(a, x0) < n, n < # x0, a ∈ x0, ¬ n < # a0 ', ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: ⊦ n < # x → (x + y)[n] = x[n]; (s) a: ⊦ (x + y) + z = x + y + z; from specification polylist ⊦ # a ' = 0 +1; (s) ⊦ m < 1 ↔ m = 0; (s) ⊦ m < n → n ≠ 0; (s) Used terms: n, x0 \ a ', a0 '
| ⊦ ¬ n < # x → (x + y)[n] = y[n - # x] |
| (x0 \ a ')[n - # a0 '] ≠ x0[n], a ≠ a0, x0 ≠ [], pos(a, x0) + 1 < # x0, pos(a, x0) < n, n < # x0, a ∈ x0, ¬ n < # a0 ', ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
(x0 \ a ')[n - 1] ≠ x0[n], a ≠ a0, x0 ≠ [], n < # x0, pos(a, x0) < n, pos(a, x0) + 1 < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) ⊦ m < 1 ↔ m = 0; (s) ⊦ # a ' = 0 +1; (s)
| (x0 \ a ')[n - 1] ≠ x0[n], a ≠ a0, x0 ≠ [], n < # x0, pos(a, x0) < n, pos(a, x0) + 1 < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
n = m + 1, (x0 \ a ')[m] ≠ x0[n], a ≠ a0, n ≠ 0, x0 ≠ [], pos(a, x0) + 1 < # x0, pos(a, x0) < n, n < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: ⊦ x ≠ [] → x[0] = x.head; (s) ⊦ 0 < m ↔ m ≠ 0; (s) ⊦ # x = 0 ↔ x = []; (s) ⊦ ¬ n < 0; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n, m
| n = m + 1, (x0 \ a ')[m] ≠ x0[n], a ≠ a0, n ≠ 0, x0 ≠ [], pos(a, x0) + 1 < # x0, pos(a, x0) < n, n < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
(x0 \ a ')[m] ≠ x0[m + 1], a ≠ a0, x0 ≠ [], pos(a, x0) + 1 < # x0, m + 1 < # x0, a ∈ x0, pos(a, x0) ≤ m, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m + 1 ≠ 0; (s)
| (x0 \ a ')[m] ≠ x0[m + 1], a ≠ a0, x0 ≠ [], pos(a, x0) + 1 < # x0, m + 1 < # x0, a ∈ x0, pos(a, x0) ≤ m, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
Used simplifier rules: ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: a, m
| (a0 ' + (x0 \ a '))[n] ≠ (¬ pos(a, x0) < n ⊃ (a0 ' + x0)[n];x0[n]), a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, ¬ pos(a, x0) < n, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
(a0 ' + (x0 \ a '))[n] ≠ (a0 ' + x0)[n], a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, n ≤ pos(a, x0), ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| (a0 ' + (x0 \ a '))[n] ≠ (a0 ' + x0)[n], a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, n ≤ pos(a, x0), ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
⊦ ¬ n < # x → (x + y)[n] = y[n - # x]
(x0 \ a ')[n - # a0 '] ≠ (a0 ' + x0)[n], a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, n ≤ pos(a, x0), ¬ n < # a0 ', ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: ⊦ n < # x → (x + y)[n] = x[n]; (s) a: ⊦ (x + y) + z = x + y + z; from specification polylist Used terms: n, x0 \ a ', a0 '
| ⊦ ¬ n < # x → (x + y)[n] = y[n - # x] |
| (x0 \ a ')[n - # a0 '] ≠ (a0 ' + x0)[n], a ≠ a0, x0 ≠ [], n < # x0, a ∈ x0, n ≤ pos(a, x0), ¬ n < # a0 ', ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
(x0 \ a ')[n - 1] ≠ x0[n - 1], a ≠ a0, n ≠ 0, x0 ≠ [], n < # x0, a ∈ x0, n ≤ pos(a, x0), ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: ⊦ m < 1 ↔ m = 0; (s) ⊦ # a ' = 0 +1; (s) a: ⊦ (x + y) + z = x + y + z; from specification polylist ⊦ ¬ n < # x → (x + y)[n] = y[n - # x]; (s)
| (x0 \ a ')[n - 1] ≠ x0[n - 1], a ≠ a0, n ≠ 0, x0 ≠ [], n < # x0, a ∈ x0, n ≤ pos(a, x0), ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
n = m + 1, (x0 \ a ')[m] ≠ x0[m], a ≠ a0, n ≠ 0, x0 ≠ [], n < # x0, a ∈ x0, n ≤ pos(a, x0), ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n, m
| n = m + 1, (x0 \ a ')[m] ≠ x0[m], a ≠ a0, n ≠ 0, x0 ≠ [], n < # x0, a ∈ x0, n ≤ pos(a, x0), ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
(x0 \ a ')[m] ≠ x0[m], a ≠ a0, x0 ≠ [], m < pos(a, x0), m + 1 < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m + 1 ≠ 0; (s)
| (x0 \ a ')[m] ≠ x0[m], a ≠ a0, x0 ≠ [], m < pos(a, x0), m + 1 < # x0, a ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ∨ ¬ n0 + 1 < # x0 ∨ ¬ a1 ∈ x0 ⊦ |
Used terms: a, m
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.