| indhyp-list([]), ∀ a, x. indhyp-list(x) → indhyp-list(a + x) ⊦ indhyp-list(x) |
indhyp-list([]), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x) ⊦
| indhyp-list([]), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x) ⊦ |
indhyp-list([]), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x) ⊦
| indhyp-list([]), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x) ⊦ |
indhyp-list([]), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list([]) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used simplifier rules: <; (wellfounded) Used terms: # x
| indhyp-list([]), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list([]) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
⊦ [] = mkarray(0)
indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used terms:
| indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
indhyp-list(mkarray(0)), ¬ # x.rest < # x, ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x.rest) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x))
Used terms: x.rest, indhyp-list
| indhyp-list(mkarray(0)), ¬ # x.rest < # x, ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
indhyp-list(mkarray(0)), # x ≤ # x.rest, ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| indhyp-list(mkarray(0)), # x ≤ # x.rest, ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
⊦ ar.rest = subarray(ar, 1, # ar - 1)
indhyp-list(mkarray(0)), # x ≤ # subarray(x, 1, # x - 1), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used terms: x
| ⊦ ar.rest = subarray(ar, 1, # ar - 1) |
| indhyp-list(mkarray(0)), # x ≤ # subarray(x, 1, # x - 1), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
# x = 0, indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < 0 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used simplifier rules: ⊦ 0 ≤ m; (s) leprf: ⊦ m ≤ m - 1 → m = 0; (forward) from specification nat ⊦ # subarray(ar, m, n) = n; (s)
| # x = 0, indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < 0 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
Used simplifier rules: array('a) generated by mkarray, [ := ];; ⊦ # ar[n := a] = # ar; (s) ⊦ ar[n := a] = ar ↔ ¬ n < # ar ∨ ar[n] = a; (s) ⊦ m < n → n ≠ 0; (s) ⊦ # mkarray(n) = n; (s)
| indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x.rest) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) |
indhyp-list(mkarray(0)), indhyp-list(x.rest), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
| indhyp-list(mkarray(0)), indhyp-list(x.rest), ¬ indhyp-list(x), ∀ a, x. indhyp-list(x) → indhyp-list(a + x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
indhyp-list(x.rest), indhyp-list(mkarray(0)), ¬ indhyp-list(x), indhyp-list(x.rest) → indhyp-list(x.first + x.rest), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used terms: x.first, x.rest
| indhyp-list(x.rest), indhyp-list(mkarray(0)), ¬ indhyp-list(x), indhyp-list(x.rest) → indhyp-list(x.first + x.rest), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
indhyp-list(mkarray(0)), indhyp-list(x.rest), indhyp-list(x.first + x.rest), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
| indhyp-list(mkarray(0)), indhyp-list(x.rest), indhyp-list(x.first + x.rest), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
x.first + x.rest ≠ x, indhyp-list(x.first + x.rest), indhyp-list(x.rest), indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used formulas: x.first + x.rest = x
| x.first + x.rest ≠ x, indhyp-list(x.first + x.rest), indhyp-list(x.rest), indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
⊦ ar.rest = subarray(ar, 1, # ar - 1)
x.first + subarray(x, 1, # x - 1) ≠ x, indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x.first + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used terms: x
| ⊦ ar.rest = subarray(ar, 1, # ar - 1) |
| x.first + subarray(x, 1, # x - 1) ≠ x, indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x.first + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
⊦ ar.first = ar[0]
x[0] + subarray(x, 1, # x - 1) ≠ x, indhyp-list(x[0] + subarray(x, 1, # x - 1)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used terms: x
| x[0] + subarray(x, 1, # x - 1) ≠ x, indhyp-list(x[0] + subarray(x, 1, # x - 1)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
⊦ ar1 = ar2 ↔ # ar1 = # ar2 ∧ (∀ n. n < # ar1 → ar1[n] = ar2[n])
indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x[0] + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), #(x[0] + subarray(x, 1, # x - 1)) ≠ # x ∨ (∃ n. ¬(n < #(x[0] + subarray(x, 1, # x - 1)) → (x[0] + subarray(x, 1, # x - 1))[n] = x[n])), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used terms: x[0] + subarray(x, 1, # x - 1), x
| ⊦ ar1 = ar2 ↔ # ar1 = # ar2 ∧ (∀ n. n < # ar1 → ar1[n] = ar2[n]) |
| indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x[0] + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), #(x[0] + subarray(x, 1, # x - 1)) ≠ # x ∨ (∃ n. ¬(n < #(x[0] + subarray(x, 1, # x - 1)) → (x[0] + subarray(x, 1, # x - 1))[n] = x[n])), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
indhyp-list(x[0] + subarray(x, 1, # x - 1)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(mkarray(0)), ¬ indhyp-list(x), #(x[0] + subarray(x, 1, # x - 1)) ≠ # x ∨ ¬(n < #(x[0] + subarray(x, 1, # x - 1)) → (x[0] + subarray(x, 1, # x - 1))[n] = x[n]), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
| indhyp-list(x[0] + subarray(x, 1, # x - 1)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(mkarray(0)), ¬ indhyp-list(x), #(x[0] + subarray(x, 1, # x - 1)) ≠ # x ∨ ¬(n < #(x[0] + subarray(x, 1, # x - 1)) → (x[0] + subarray(x, 1, # x - 1))[n] = x[n]), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
⊦ #(a + x) = (# x)+1
indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x[0] + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), (# subarray(x, 1, # x - 1))+1 ≠ # x ∨ ¬(n < (# subarray(x, 1, # x - 1))+1 → (x[0] + subarray(x, 1, # x - 1))[n] = x[n]), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used terms: x[0], subarray(x, 1, # x - 1)
| ⊦ #(a + x) = (# x)+1 |
| indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x[0] + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), (# subarray(x, 1, # x - 1))+1 ≠ # x ∨ ¬(n < (# subarray(x, 1, # x - 1))+1 → (x[0] + subarray(x, 1, # x - 1))[n] = x[n]), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
indhyp-list(x[0] + subarray(x, 1, # x - 1)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(mkarray(0)), ¬ indhyp-list(x), (# x - 1) + 1 ≠ # x ∨ ¬(¬ # x - 1 < n → (x[0] + subarray(x, 1, # x - 1))[n] = x[n]), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used simplifier rules: 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) ⊦ # subarray(ar, m, n) = n; (s)
| indhyp-list(x[0] + subarray(x, 1, # x - 1)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(mkarray(0)), ¬ indhyp-list(x), (# x - 1) + 1 ≠ # x ∨ ¬(¬ # x - 1 < n → (x[0] + subarray(x, 1, # x - 1))[n] = x[n]), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
n ≠ 0 ⊦ (n - 1) + 1 = n
# x = 0, indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x[0] + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), (# x - 1) + 1 ≠ # x ∨ ¬(¬ # x - 1 < n → (x[0] + subarray(x, 1, # x - 1))[n] = x[n]), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
# x ≠ 0, indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x[0] + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), # x ≠ # x ∨ ¬(¬ # x - 1 < n → (x[0] + subarray(x, 1, # x - 1))[n] = x[n]), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used terms: # x
| n ≠ 0 ⊦ (n - 1) + 1 = n |
| # x = 0, indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x[0] + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), (# x - 1) + 1 ≠ # x ∨ ¬(¬ # x - 1 < n → (x[0] + subarray(x, 1, # x - 1))[n] = x[n]), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
# x = 0, indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, 0 - 1)), indhyp-list(x[0] + subarray(x, 1, 0 - 1)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < 0 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≠ 0; (s)
| # x = 0, indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, 0 - 1)), indhyp-list(x[0] + subarray(x, 1, 0 - 1)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < 0 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
Used simplifier rules: array('a) generated by mkarray, [ := ];; ⊦ # ar[n := a] = # ar; (s) ⊦ ar[n := a] = ar ↔ ¬ n < # ar ∨ ar[n] = a; (s) ⊦ m < n → n ≠ 0; (s) ⊦ # mkarray(n) = n; (s)
| # x ≠ 0, indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x[0] + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), # x ≠ # x ∨ ¬(¬ # x - 1 < n → (x[0] + subarray(x, 1, # x - 1))[n] = x[n]), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
(x[0] + subarray(x, 1, # x - 1))[n] ≠ x[n], n < # x, indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x[0] + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
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 < n + 1 ↔ ¬ n < m; (s) n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s) ⊦ m < 1 ↔ m = 0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss)
| (x[0] + subarray(x, 1, # x - 1))[n] ≠ x[n], n < # x, indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, # x - 1)), indhyp-list(x[0] + subarray(x, 1, # x - 1)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
# x = n0 + 1, # x ≠ 0, (x[0] + subarray(x, 1, n0))[n] ≠ x[n], n < # x, indhyp-list(x[0] + subarray(x, 1, n0)), indhyp-list(subarray(x, 1, n0)), indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: # x, n0
| # x = n0 + 1, # x ≠ 0, (x[0] + subarray(x, 1, n0))[n] ≠ x[n], n < # x, indhyp-list(x[0] + subarray(x, 1, n0)), indhyp-list(subarray(x, 1, n0)), indhyp-list(mkarray(0)), ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < # x → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
# x = n0 + 1, (x[0] + subarray(x, 1, n0))[n] ≠ x[n], indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, n0)), indhyp-list(x[0] + subarray(x, 1, n0)), n ≤ n0, ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < n0 + 1 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m + 1 ≠ 0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → n ≠ 0; (s)
| # x = n0 + 1, (x[0] + subarray(x, 1, n0))[n] ≠ x[n], indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, n0)), indhyp-list(x[0] + subarray(x, 1, n0)), n ≤ n0, ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < n0 + 1 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
⊦ a + ar = copy(ar, 0, mkarray(# ar + 1), 1, # ar)[0 := a]
# x = n0 + 1, (copy(subarray(x, 1, n0), 0, mkarray(# subarray(x, 1, n0) + 1), 1, # subarray(x, 1, n0))[0 := x[0]])[n] ≠ x[n], indhyp-list(copy(subarray(x, 1, n0), 0, mkarray(# subarray(x, 1, n0) + 1), 1, # subarray(x, 1, n0))[0 := x[0]]), indhyp-list(subarray(x, 1, n0)), indhyp-list(mkarray(0)), n ≤ n0, ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < n0 + 1 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used terms: x[0], subarray(x, 1, n0)
| ⊦ a + ar = copy(ar, 0, mkarray(# ar + 1), 1, # ar)[0 := a] |
| # x = n0 + 1, (copy(subarray(x, 1, n0), 0, mkarray(# subarray(x, 1, n0) + 1), 1, # subarray(x, 1, n0))[0 := x[0]])[n] ≠ x[n], indhyp-list(copy(subarray(x, 1, n0), 0, mkarray(# subarray(x, 1, n0) + 1), 1, # subarray(x, 1, n0))[0 := x[0]]), indhyp-list(subarray(x, 1, n0)), indhyp-list(mkarray(0)), n ≤ n0, ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < n0 + 1 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
# x = n0 + 1, (copy(x, 1, mkarray(n0 + 1), 1, n0)[0 := x[0]])[n] ≠ x[n], indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, n0)), indhyp-list(copy(x, 1, mkarray(n0 + 1), 1, n0)[0 := x[0]]), n ≤ n0, ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < n0 + 1 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic n0 + n1 ≤ # ar0, m + m1 ≤ n1 ⊦ copy(subarray(ar0, n0, n1), m, ar1, m0, m1) = copy(ar0, n0 + m, ar1, m0, m1); (s) ⊦ m ≤ m; (s) ⊦ n + 0 = n; (s) ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ # subarray(ar, m, n) = n; (s)
| # x = n0 + 1, (copy(x, 1, mkarray(n0 + 1), 1, n0)[0 := x[0]])[n] ≠ x[n], indhyp-list(mkarray(0)), indhyp-list(subarray(x, 1, n0)), indhyp-list(copy(x, 1, mkarray(n0 + 1), 1, n0)[0 := x[0]]), n ≤ n0, ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < n0 + 1 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
⊦ m ≠ n → (ar[n := a])[m] = ar[m]
# x = n0 + 1, copy(x, 1, mkarray(n0 + 1), 1, n0)[n] ≠ x[n], n ≠ 0, indhyp-list(copy(x, 1, mkarray(n0 + 1), 1, n0)[0 := x[0]]), indhyp-list(subarray(x, 1, n0)), indhyp-list(mkarray(0)), n ≤ n0, ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < n0 + 1 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦
Used simplifier rules: ⊦ # copy(ar, m, ar0, m0, n) = # ar0; (s) ⊦ # mkarray(n) = n; (s) ⊦ 0 < m ↔ m ≠ 0; (s) ⊦ m + 1 ≠ 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic m < # ar ⊦ (ar[m := a])[m] = a; (s) Used terms: copy(x, 1, mkarray(n0 + 1), 1, n0), 0, x[0], n
| ⊦ m ≠ n → (ar[n := a])[m] = ar[m] |
| # x = n0 + 1, copy(x, 1, mkarray(n0 + 1), 1, n0)[n] ≠ x[n], n ≠ 0, indhyp-list(copy(x, 1, mkarray(n0 + 1), 1, n0)[0 := x[0]]), indhyp-list(subarray(x, 1, n0)), indhyp-list(mkarray(0)), n ≤ n0, ¬ indhyp-list(x), ∀ x0, indhyp-list. # x0 < n0 + 1 → indhyp-list(mkarray(0)) ∧ ¬ indhyp-list(x0) ∧ (∀ a, x. indhyp-list(x) → indhyp-list(a + x)) → false ⊦ |
⊦ m0 < # ar1 → copy(ar0, n, ar1, n0, m)[m0] = (m0 < n0 ∨ n0 + m ≤ m0 ⊃ ar1[m0];ar0[m0 + n - n0])
Used simplifier rules: ⊦ m < 1 ↔ m = 0; (s) ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ n + 0 = n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ # mkarray(n) = n; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) Used terms: 1, 1, mkarray(n0 + 1), n0, n, x
| ⊦ m0 < # ar1 → copy(ar0, n, ar1, n0, m)[m0] = (m0 < n0 ∨ n0 + m ≤ m0 ⊃ ar1[m0];ar0[m0 + n - n0]) |
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.