| ⊦ ¬ dups(x) ∧ n < # x → (a ∈ x -p n ↔ a ≠ x[n] ∧ a ∈ x) |
¬(a ∈ x -p n ↔ a ≠ x[n] ∧ a ∈ x), n < # x, ¬ dups(x) ⊦
| ¬(a ∈ x -p n ↔ a ≠ x[n] ∧ a ∈ x), n < # x, ¬ dups(x) ⊦ |
¬(a ∈ x -p n ↔ a ≠ x[n] ∧ a ∈ x), x ≠ [], n < # x, ¬ dups(x) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| ¬(a ∈ x -p n ↔ a ≠ x[n] ∧ a ∈ x), x ≠ [], n < # x, ¬ dups(x) ⊦ |
a0 + x0 ≠ [], ¬(a ∈ (a0 + x0) -p n ↔ a ≠ (a0 + x0)[n] ∧ a ∈ a0 + x0), n < #(a0 + x0), ¬ dups(a0 + x0), ∀ a, n. ¬(¬(a ∈ x0 -p n ↔ a ≠ x0[n] ∧ a ∈ x0) ∧ x0 ≠ [] ∧ n < # x0 ∧ ¬ dups(x0)) ⊦
Used simplifier rules: list freely generated by [], +;;
| a0 + x0 ≠ [], ¬(a ∈ (a0 + x0) -p n ↔ a ≠ (a0 + x0)[n] ∧ a ∈ a0 + x0), n < #(a0 + x0), ¬ dups(a0 + x0), ∀ a, n. ¬(¬(a ∈ x0 -p n ↔ a ≠ x0[n] ∧ a ∈ x0) ∧ x0 ≠ [] ∧ n < # x0 ∧ ¬ dups(x0)) ⊦ |
¬(a ∈ (a0 ' + x0) -p n ↔ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)), n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ x0 = [] ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ dups(a ' + x) ↔ a ∈ x ∨ dups(x); (s) ⊦ a + x = a ' + x; (s) 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 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s) ⊦ a ∈ b ' + x ↔ a = b ∨ a ∈ x; (s) ⊦ a ' + x ≠ []; (s)
| ¬(a ∈ (a0 ' + x0) -p n ↔ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)), n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ x0 = [] ∨ ¬ n0 < # x0 ⊦ |
¬(a ∈ (a0 ' + x0) -p n ↔ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)), x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ x0 = [] ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: delnr-one: ⊦ a ' -p 0 = []; one-03: ⊦ a '[0] = a; ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ # [] = 0; (s) ⊦ m ≤ 0 ↔ m = 0; (s) ⊦ ¬ dups([]); (s) ⊦ ¬ a ∈ []; (s) Used formulas: x0 = []
| ¬(a ∈ (a0 ' + x0) -p n ↔ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)), x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ x0 = [] ∨ ¬ n0 < # x0 ⊦ |
¬(a ∈ (a0 ' + x0) -p n ↔ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)), x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
| ¬(a ∈ (a0 ' + x0) -p n ↔ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)), x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
¬(a ∈ (a0 ' + x0) -p n ↔ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)), x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
¬(a ∈ (a0 ' + x0) -p n ↔ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)), x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used formulas: a ∈ (a0 ' + x0) -p n
| ¬(a ∈ (a0 ' + x0) -p n ↔ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)), x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)
| x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0) |
a = a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)
a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)
Used formulas: a = a0
| a = a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0) |
a0 = (a0 ' + x0)[n], x0 ≠ [], a0 ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
| a0 = (a0 ' + x0)[n], x0 ≠ [], a0 ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
⊦ ¬ n < # x → (x + y)[n] = y[n - # x]
a0 = x0[n - # a0 '], x0 ≠ [], a0 ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ n < # a0 ', ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: get-zero-01: ⊦ (a ' + x)[0] = a; delpos-base: ⊦ (a ' + x) -p 0 = x; ⊦ # a ' = 0 +1; (s) ⊦ m < 1 ↔ m = 0; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: n, x0, a0 '
| ⊦ ¬ n < # x → (x + y)[n] = y[n - # x] |
| a0 = x0[n - # a0 '], x0 ≠ [], a0 ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ n < # a0 ', ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
n ≠ 0, x0 ≠ [], x0[n - 1] ∈ (x0[n - 1] ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ x0[n - 1] ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: ⊦ m < 1 ↔ m = 0; (s) ⊦ # a ' = 0 +1; (s)
| n ≠ 0, x0 ≠ [], x0[n - 1] ∈ (x0[n - 1] ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ x0[n - 1] ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
Used simplifier rules: delpos-rec: ⊦ (a ' + x) -p (n + 1) = a + (x -p n); get-in: ⊦ m < # x → (x[m] ∈ x ↔ true); ⊦ m + 1 ≠ 0; (s) ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ a + x = a ' + x; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ a ∈ b ' + x ↔ a = b ∨ a ∈ x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n, m
| a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0) |
a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ a ∈ x0
| a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ a ∈ x0 |
a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, a ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ a ∈ x0
a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a ∈ x0, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ a ∈ x0
Used formulas: a ∈ x0
| a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, a ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ a ∈ x0 |
(a0 ' + x0)[n] ≠ a0, x0 ≠ [], (a0 ' + x0)[n] ∈ (a0 ' + x0) -p n, (a0 ' + x0)[n] ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
| (a0 ' + x0)[n] ≠ a0, x0 ≠ [], (a0 ' + x0)[n] ∈ (a0 ' + x0) -p n, (a0 ' + x0)[n] ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
⊦ ¬ n < # x → (x + y)[n] = y[n - # x]
x0[n - # a0 '] ≠ a0, x0 ≠ [], x0[n - # a0 '] ∈ x0, x0[n - # a0 '] ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ n < # a0 ', ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: get-zero-01: ⊦ (a ' + x)[0] = a; ⊦ # a ' = 0 +1; (s) ⊦ m < 1 ↔ m = 0; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: n, x0, a0 '
| ⊦ ¬ n < # x → (x + y)[n] = y[n - # x] |
| x0[n - # a0 '] ≠ a0, x0 ≠ [], x0[n - # a0 '] ∈ x0, x0[n - # a0 '] ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ n < # a0 ', ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
x0[n - 1] ≠ a0, n ≠ 0, x0 ≠ [], x0[n - 1] ∈ (a0 ' + x0) -p n, x0[n - 1] ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: ⊦ m < 1 ↔ m = 0; (s) ⊦ # a ' = 0 +1; (s)
| x0[n - 1] ≠ a0, n ≠ 0, x0 ≠ [], x0[n - 1] ∈ (a0 ' + x0) -p n, x0[n - 1] ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
n = m + 1, x0[m] ≠ a0, n ≠ 0, x0 ≠ [], x0[m] ∈ x0, x0[m] ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n, m
| n = m + 1, x0[m] ≠ a0, n ≠ 0, x0 ≠ [], x0[m] ∈ x0, x0[m] ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
x0[m] ≠ a0, x0 ≠ [], m < # x0, x0[m] ∈ x0 -p m, x0[m] ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: delpos-rec: ⊦ (a ' + x) -p (n + 1) = a + (x -p n); ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ b ' + x ↔ a = b ∨ a ∈ x; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ a + x = a ' + x; (s) ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m + 1 ≠ 0; (s)
| x0[m] ≠ a0, x0 ≠ [], m < # x0, x0[m] ∈ x0 -p m, x0[m] ∈ x0, ¬ dups(x0), ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
Used terms: x0[m], m
| a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a ∈ x0, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ a ≠ (a0 ' + x0)[n] ∧ a ∈ x0 |
a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a ∈ x0, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
| a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a ∈ x0, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
n = n1 +1, a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a ∈ x0, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: delpos-base: ⊦ (a ' + x) -p 0 = x; nat freely generated by 0, +1;; ⊦ 0 ≤ m; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| n = n1 +1, a ≠ a0, x0 ≠ [], a ∈ (a0 ' + x0) -p n, n ≤ # x0, ¬ dups(x0), ¬ a ∈ x0, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
a ≠ a0, x0 ≠ [], n1 < # x0, a ∈ x0 -p n1, ¬ dups(x0), ¬ a0 ∈ x0, ¬ a ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: delpos-rec: ⊦ (a ' + x) -p (n + 1) = a + (x -p n); ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ≠ b → (a ∈ b ' + x ↔ a ∈ x); (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ a + x = a ' + x; (s) ⊦ m +1 = m + 1; (s) ⊦ m + 1 ≤ n ↔ m < n; (s)
| a ≠ a0, x0 ≠ [], n1 < # x0, a ∈ x0 -p n1, ¬ dups(x0), ¬ a0 ∈ x0, ¬ a ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
Used terms: a, n1
| ¬(a ∈ (a0 ' + x0) -p n ↔ a ≠ (a0 ' + x0)[n] ∧ (a = a0 ∨ a ∈ x0)), x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
a ≠ (a0 ' + x0)[n], x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0, a = a0 ∨ a ∈ x0 ⊦
| a ≠ (a0 ' + x0)[n], x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0, a = a0 ∨ a ∈ x0 ⊦ |
a ≠ (a0 ' + x0)[n], x0 ≠ [], a ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0, a = a0 ∨ a ∈ x0 ⊦
a ≠ (a0 ' + x0)[n], x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a ∈ x0, ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0, a = a0 ∨ a ∈ x0 ⊦
Used formulas: a ∈ x0
| a ≠ (a0 ' + x0)[n], x0 ≠ [], a ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0, a = a0 ∨ a ∈ x0 ⊦ |
a ≠ (a0 ' + x0)[n], x0 ≠ [], a ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
| a ≠ (a0 ' + x0)[n], x0 ≠ [], a ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
⊦ ¬ n < # x → (x + y)[n] = y[n - # x]
a ≠ x0[n - # a0 '], x0 ≠ [], a ∈ x0, n ≤ # x0, ¬ n < # a0 ', ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: get-zero-01: ⊦ (a ' + x)[0] = a; delpos-base: ⊦ (a ' + x) -p 0 = x; ⊦ # a ' = 0 +1; (s) ⊦ m < 1 ↔ m = 0; (s) ⊦ 0 ≤ m; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: n, x0, a0 '
| ⊦ ¬ n < # x → (x + y)[n] = y[n - # x] |
| a ≠ x0[n - # a0 '], x0 ≠ [], a ∈ x0, n ≤ # x0, ¬ n < # a0 ', ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
a ≠ x0[n - 1], n ≠ 0, x0 ≠ [], a ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: ⊦ m < 1 ↔ m = 0; (s) ⊦ # a ' = 0 +1; (s)
| a ≠ x0[n - 1], n ≠ 0, x0 ≠ [], a ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
n = m + 1, a ≠ x0[m], n ≠ 0, x0 ≠ [], a ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n, m
| n = m + 1, a ≠ x0[m], n ≠ 0, x0 ≠ [], a ∈ x0, n ≤ # x0, ¬ dups(x0), ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
a ≠ x0[m], x0 ≠ [], m < # x0, a ∈ x0, ¬ dups(x0), ¬ a ∈ x0 -p m, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: delpos-rec: ⊦ (a ' + x) -p (n + 1) = a + (x -p n); ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ a + x = a ' + x; (s) ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m + 1 ≠ 0; (s)
| a ≠ x0[m], x0 ≠ [], m < # x0, a ∈ x0, ¬ dups(x0), ¬ a ∈ x0 -p m, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
Used terms: a, m
| a ≠ (a0 ' + x0)[n], x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a ∈ x0, ¬ a ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0, a = a0 ∨ a ∈ x0 ⊦ |
a0 ≠ (a0 ' + x0)[n], x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
| a0 ≠ (a0 ' + x0)[n], x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
⊦ ¬ n < # x → (x + y)[n] = y[n - # x]
a0 ≠ x0[n - # a0 '], x0 ≠ [], n ≤ # x0, ¬ n < # a0 ', ¬ dups(x0), ¬ a0 ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: get-zero-01: ⊦ (a ' + x)[0] = a; ⊦ # a ' = 0 +1; (s) ⊦ m < 1 ↔ m = 0; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: n, x0, a0 '
| ⊦ ¬ n < # x → (x + y)[n] = y[n - # x] |
| a0 ≠ x0[n - # a0 '], x0 ≠ [], n ≤ # x0, ¬ n < # a0 ', ¬ dups(x0), ¬ a0 ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
a0 ≠ x0[n - 1], n ≠ 0, x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦
Used simplifier rules: ⊦ m < 1 ↔ m = 0; (s) ⊦ # a ' = 0 +1; (s)
| a0 ≠ x0[n - 1], n ≠ 0, x0 ≠ [], n ≤ # x0, ¬ dups(x0), ¬ a0 ∈ (a0 ' + x0) -p n, ¬ a0 ∈ x0, ∀ a1, n0. (a1 ∈ x0 -p n0 ↔ a1 ≠ x0[n0] ∧ a1 ∈ x0) ∨ ¬ n0 < # x0 ⊦ |
Used simplifier rules: delpos-rec: ⊦ (a ' + x) -p (n + 1) = a + (x -p n); ⊦ m + 1 ≠ 0; (s) ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ a + x = a ' + x; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ a ∈ b ' + x ↔ ¬(a ≠ b ∧ ¬ a ∈ x); (ss) a: ⊦ (x + y) + z = x + y + z; from specification list n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n, 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.