| ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]) ⊦ ∀ ar. INDHYP-array(ar) |
∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ ∀ ar. INDHYP-array(ar)
| ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ ∀ ar. INDHYP-array(ar) |
¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]) ⊦
| ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]) ⊦ |
¬ INDHYP-array(ar), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)), ∃ n. n ≤ # ar ∧ (∀ m. m < # ar - n → ar[m] = c) ⊦
¬ INDHYP-array(ar), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ ∃ n. n ≤ # ar ∧ (∀ m. m < # ar - n → ar[m] = c)
Used formulas: ∃ n. n ≤ # ar ∧ (∀ m. m < # ar - n → ar[m] = c)
| ¬ INDHYP-array(ar), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)), ∃ n. n ≤ # ar ∧ (∀ m. m < # ar - n → ar[m] = c) ⊦ |
n ≤ # ar, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m + n < # ar → ar[m] = c ⊦
Used simplifier rules: n0 ≤ n ⊦ m < n - n0 ↔ m + n0 < n; (s) ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m ≤ n ↔ ¬ n < m; (ss)
| n ≤ # ar, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m + n < # ar → ar[m] = c ⊦ |
0 ≤ # ar, ¬ INDHYP-array(ar), ∀ m. m + 0 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦
n0 +1 ≤ # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 +1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, INDHYP-array. ¬ ( n0 ≤ # ar ∧ ¬ INDHYP-array(ar) ∧ (∀ m. INDHYP-array(mklist(c, m))) ∧ (∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a])) ∧ (∀ m. m + n0 < # ar → ar[m] = c)) ⊦
Used simplifier rules: nat freely generated by 0, +1;;
| 0 ≤ # ar, ¬ INDHYP-array(ar), ∀ m. m + 0 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ |
¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m < # ar → ar[m] = c ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ 0 ≤ m; (s)
| ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m < # ar → ar[m] = c ⊦ |
INDHYP-array(mklist(c, # ar)), ¬ INDHYP-array(ar), ∀ m. m < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]) ⊦
Used terms: # ar
| INDHYP-array(mklist(c, # ar)), ¬ INDHYP-array(ar), ∀ m. m < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]) ⊦ |
ar ≠ mklist(c, # ar), INDHYP-array(mklist(c, # ar)), ¬ INDHYP-array(ar), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m < # ar → ar[m] = c ⊦
Used formulas: ar = mklist(c, # ar)
| ar ≠ mklist(c, # ar), INDHYP-array(mklist(c, # ar)), ¬ INDHYP-array(ar), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m < # ar → ar[m] = c ⊦ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n])
INDHYP-array(mklist(c, # ar)), ¬ INDHYP-array(ar), ∀ m. m < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), # ar ≠ # mklist(c, # ar) ∨ (∃ n. ¬(n < # ar → ar[n] = mklist(c, # ar)[n])) ⊦
Used terms: ar, mklist(c, # ar)
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n]) |
| INDHYP-array(mklist(c, # ar)), ¬ INDHYP-array(ar), ∀ m. m < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), # ar ≠ # mklist(c, # ar) ∨ (∃ n. ¬(n < # ar → ar[n] = mklist(c, # ar)[n])) ⊦ |
ar[n] ≠ c, ar ≠ [], n < # ar, INDHYP-array(mklist(c, # ar)), ¬ INDHYP-array(ar), ∀ m. m < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → mklist(a, n)[m] = a; (s) ⊦ # mklist(a, n) = n; (s)
| ar[n] ≠ c, ar ≠ [], n < # ar, INDHYP-array(mklist(c, # ar)), ¬ INDHYP-array(ar), ∀ m. m < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]) ⊦ |
Used terms: n
| n0 +1 ≤ # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 +1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, INDHYP-array. ¬ ( n0 ≤ # ar ∧ ¬ INDHYP-array(ar) ∧ (∀ m. INDHYP-array(mklist(c, m))) ∧ (∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a])) ∧ (∀ m. m + n0 < # ar → ar[m] = c)) ⊦ |
ar ≠ [], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar0, INDHYP-array0. ¬ n0 ≤ # ar0 ∨ INDHYP-array0(ar0) ∨ ¬(∀ m. INDHYP-array0(mklist(c, m))) ∨ ¬(∀ ar, m, a. INDHYP-array0(ar) → INDHYP-array0(ar[m, a])) ∨ ¬(∀ m. m + n0 < # ar0 → ar0[m] = c), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m +1 = m + 1; (s) c: ⊦ m + n = n + m; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s)
| ar ≠ [], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar0, INDHYP-array0. ¬ n0 ≤ # ar0 ∨ INDHYP-array0(ar0) ∨ ¬(∀ m. INDHYP-array0(mklist(c, m))) ∨ ¬(∀ ar, m, a. INDHYP-array0(ar) → INDHYP-array0(ar[m, a])) ∨ ¬(∀ m. m + n0 < # ar0 → ar0[m] = c), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ |
ar ≠ [], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ¬ n0 ≤ # ar[# ar - n0 +1, c] ∨ INDHYP-array(ar[# ar - n0 +1, c]) ∨ ¬(∀ m. INDHYP-array(mklist(c, m))) ∨ ¬(∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a])) ∨ ¬(∀ m. m + n0 < # ar[# ar - n0 +1, c] → ar[# ar - n0 +1, c][m] = c) ⊦
Used terms: ar[# ar - n0 +1, c], INDHYP-array
| ar ≠ [], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ¬ n0 ≤ # ar[# ar - n0 +1, c] ∨ INDHYP-array(ar[# ar - n0 +1, c]) ∨ ¬(∀ m. INDHYP-array(mklist(c, m))) ∨ ¬(∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a])) ∨ ¬(∀ m. m + n0 < # ar[# ar - n0 +1, c] → ar[# ar - n0 +1, c][m] = c) ⊦ |
ar ≠ [], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)), ¬ n0 ≤ # ar[# ar - n0 + 1, c] ∨ INDHYP-array(ar[# ar - n0 + 1, c]) ∨ ¬(n + n0 < # ar[# ar - n0 + 1, c] → ar[# ar - n0 + 1, c][n] = c) ⊦
Used simplifier rules: ⊦ m +1 = m + 1; (s)
| ar ≠ [], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)), ¬ n0 ≤ # ar[# ar - n0 + 1, c] ∨ INDHYP-array(ar[# ar - n0 + 1, c]) ∨ ¬(n + n0 < # ar[# ar - n0 + 1, c] → ar[# ar - n0 + 1, c][n] = c) ⊦ |
# ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, n0 + 1 ≤ # ar, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ¬ n0 ≤ # ar[n1, c] ∨ INDHYP-array(ar[n1, c]) ∨ ¬(n + n0 < # ar[n1, c] → ar[n1, c][n] = c) ⊦
Used simplifier rules: ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: # ar, n0 + 1, n1
| # ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, n0 + 1 ≤ # ar, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ¬ n0 ≤ # ar[n1, c] ∨ INDHYP-array(ar[n1, c]) ∨ ¬(n + n0 < # ar[n1, c] → ar[n1, c][n] = c) ⊦ |
# ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ¬ n0 ≤ # ar[n1, c] ∨ INDHYP-array(ar[n1, c]) ∨ ¬(n + n0 < # ar[n1, c] → ar[n1, c][n] = c) ⊦
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 < m; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s)
| # ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ¬ n0 ≤ # ar[n1, c] ∨ INDHYP-array(ar[n1, c]) ∨ ¬(n + n0 < # ar[n1, c] → ar[n1, c][n] = c) ⊦ |
# ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, ¬ INDHYP-array(ar), ¬ n0 ≤ # ar[n1, c], ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦
# ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦
# ar = n1 + n0 + 1, ar[n1, c][n] ≠ c, ar ≠ [], n + n0 < # ar[n1, c], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦
| # ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, ¬ INDHYP-array(ar), ¬ n0 ≤ # ar[n1, c], ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ |
# ar = n1 + n0 + 1, ar ≠ [], # ar[n1, c] < n1 + n0, # ar[n1, c] < # ar, # ar[n1, c] < n0, n0 < # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦
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 = m0 + n0 ∧ n < n0 → m0 + n < m; (s) ⊦ m < n → ¬ n < m; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m +1 = m + 1; (s) trans: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| # ar = n1 + n0 + 1, ar ≠ [], # ar[n1, c] < n1 + n0, # ar[n1, c] < # ar, # ar[n1, c] < n0, n0 < # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ |
⊦ # x ≤ n → # x[n, a] = # x
Used simplifier rules: ⊦ ¬ n < n; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ n < # x → # x[n, a] = # x; (s) Used terms: ar, n1, c
| ⊦ # x ≤ n → # x[n, a] = # x |
| # ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ |
# ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), ¬ INDHYP-array(ar), INDHYP-array(ar[n1, c]) → INDHYP-array(ar[n1, c][n1, ar[n1]]), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c ⊦
Used terms: ar[n1, c], n1, ar[n1]
| # ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), ¬ INDHYP-array(ar), INDHYP-array(ar[n1, c]) → INDHYP-array(ar[n1, c][n1, ar[n1]]), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c ⊦ |
# ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)) ⊦
| # ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)) ⊦ |
# ar = n1 + n0 + 1, ar[n1, c][n1, ar[n1]] ≠ ar, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c][n1, ar[n1]]), INDHYP-array(ar[n1, c]), ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c ⊦
Used formulas: ar[n1, c][n1, ar[n1]] = ar
| # ar = n1 + n0 + 1, ar[n1, c][n1, ar[n1]] ≠ ar, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c][n1, ar[n1]]), INDHYP-array(ar[n1, c]), ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c ⊦ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n])
# ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)), # ar[n1, c][n1, ar[n1]] ≠ # ar ∨ (∃ n. ¬(n < # ar[n1, c][n1, ar[n1]] → ar[n1, c][n1, ar[n1]][n] = ar[n])) ⊦
Used terms: ar[n1, c][n1, ar[n1]], ar
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x[n] = y[n]) |
| # ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)), # ar[n1, c][n1, ar[n1]] ≠ # ar ∨ (∃ n. ¬(n < # ar[n1, c][n1, ar[n1]] → ar[n1, c][n1, ar[n1]][n] = ar[n])) ⊦ |
# ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c][n1, ar[n1]]), INDHYP-array(ar[n1, c]), ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c, # ar[n1, c][n1, ar[n1]] ≠ # ar ∨ ¬(n < # ar[n1, c][n1, ar[n1]] → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦
| # ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c][n1, ar[n1]]), INDHYP-array(ar[n1, c]), ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c, # ar[n1, c][n1, ar[n1]] ≠ # ar ∨ ¬(n < # ar[n1, c][n1, ar[n1]] → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦ |
⊦ # x ≤ n → # x[n, a] = # x
# ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), ¬ INDHYP-array(ar), ¬ # ar[n1, c] ≤ n1, ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)), # ar[n1, c][n1, ar[n1]] ≠ # ar ∨ ¬(n < # ar[n1, c][n1, ar[n1]] → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦
# ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), # ar[n1, c] ≤ n1, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)), # ar[n1, c] ≠ # ar ∨ ¬(n < # ar[n1, c] → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦
Used terms: ar[n1, c], n1, ar[n1]
| ⊦ # x ≤ n → # x[n, a] = # x |
| # ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), ¬ INDHYP-array(ar), ¬ # ar[n1, c] ≤ n1, ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)), # ar[n1, c][n1, ar[n1]] ≠ # ar ∨ ¬(n < # ar[n1, c][n1, ar[n1]] → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦ |
# ar = n1 + n0 + 1, ar[n1, c] ≠ [], ar ≠ [], n1 < # ar[n1, c], n0 < # ar, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)), # ar[n1, c] ≠ # ar ∨ ¬(n < # ar[n1, c] → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ n < # x → # x[n, a] = # x; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss)
| # ar = n1 + n0 + 1, ar[n1, c] ≠ [], ar ≠ [], n1 < # ar[n1, c], n0 < # ar, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)), # ar[n1, c] ≠ # ar ∨ ¬(n < # ar[n1, c] → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦ |
⊦ n < # x → # x[n, a] = # x
# ar = n1 + n0 + 1, ar[n1, c] ≠ [], ar ≠ [], n0 < # ar, n1 < # ar, INDHYP-array(ar[n1, c][n1, ar[n1]]), INDHYP-array(ar[n1, c]), ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c, # ar ≠ # ar ∨ ¬(n < # ar → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ # x ≤ n → # x[n, a] = # x; (s) ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: ar, n1, c
| ⊦ n < # x → # x[n, a] = # x |
| # ar = n1 + n0 + 1, ar[n1, c] ≠ [], ar ≠ [], n0 < # ar, n1 < # ar, INDHYP-array(ar[n1, c][n1, ar[n1]]), INDHYP-array(ar[n1, c]), ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c, # ar ≠ # ar ∨ ¬(n < # ar → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦ |
# ar = n1 + n0 + 1, ar[n1, c][n1, ar[n1]][n] ≠ ar[n], ar[n1, c] ≠ [], ar ≠ [], n < # ar, n0 < # ar, n1 < # ar, INDHYP-array(ar[n1, c][n1, ar[n1]]), INDHYP-array(ar[n1, c]), n ≤ n1 + n0, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c ⊦
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 < m; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic
| # ar = n1 + n0 + 1, ar[n1, c][n1, ar[n1]][n] ≠ ar[n], ar[n1, c] ≠ [], ar ≠ [], n < # ar, n0 < # ar, n1 < # ar, INDHYP-array(ar[n1, c][n1, ar[n1]]), INDHYP-array(ar[n1, c]), n ≤ n1 + n0, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c ⊦ |
⊦ m ≠ n → ar[n, a][m] = ar[m]
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) m < # x ⊦ m ≠ n → x[m, a][n] = x[n]; (s) ⊦ n < # x → # x[n, a] = # x; (s) m < # x ⊦ x[m, a][m] = a; (s) Used terms: ar[n1, c], n1, ar[n1], n
| ⊦ m ≠ n → ar[n, a][m] = ar[m] |
| # ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), # ar[n1, c] ≤ n1, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)), # ar[n1, c] ≠ # ar ∨ ¬(n < # ar[n1, c] → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦ |
⊦ n < # x → # x[n, a] = # x
# ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c][n1, ar[n1]]), INDHYP-array(ar[n1, c]), # ar[n1, c] ≤ n1, ¬ n1 < # ar, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c, # ar[n1, c] ≠ # ar ∨ ¬(n < # ar[n1, c] → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦
Used simplifier rules: ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: ar, n1, c
| ⊦ n < # x → # x[n, a] = # x |
| # ar = n1 + n0 + 1, ar ≠ [], n0 < # ar, INDHYP-array(ar[n1, c][n1, ar[n1]]), INDHYP-array(ar[n1, c]), # ar[n1, c] ≤ n1, ¬ n1 < # ar, ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ m. m + n0 + 1 < # ar → ar[m] = c, # ar[n1, c] ≠ # ar ∨ ¬(n < # ar[n1, c] → ar[n1, c][n1, ar[n1]][n] = ar[n]) ⊦ |
# ar = n1 + n0 + 1, ar[n1, c][n1, ar[n1]][n] ≠ ar[n], ar ≠ [], n0 < # ar, n < # ar, n0 < n1, n < n1, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), n ≤ n1 + n0, # ar ≤ n1, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ 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) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ # x ≤ n → # x[n, a] = # x; (s)
| # ar = n1 + n0 + 1, ar[n1, c][n1, ar[n1]][n] ≠ ar[n], ar ≠ [], n0 < # ar, n < # ar, n0 < n1, n < n1, INDHYP-array(ar[n1, c]), INDHYP-array(ar[n1, c][n1, ar[n1]]), n ≤ n1 + n0, # ar ≤ n1, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ m. INDHYP-array(mklist(c, m)) ⊦ |
⊦ m ≠ n → ar[n, a][m] = ar[m]
Used simplifier rules: ⊦ # x ≤ n ∧ m ≠ n → x[n, a][m] = x[m]; (s) ⊦ m ≤ m + n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: ar[n1, c], n1, ar[n1], n
| ⊦ m ≠ n → ar[n, a][m] = ar[m] |
| # ar = n1 + n0 + 1, ar[n1, c][n] ≠ c, ar ≠ [], n + n0 < # ar[n1, c], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ |
# ar = n1 + n0 + 1, ar[n1, c][n] ≠ c, ar[n1, c] ≠ [], ar ≠ [], n + n0 < # ar[n1, c], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # ar = n1 + n0 + 1, ar[n1, c][n] ≠ c, ar[n1, c] ≠ [], ar ≠ [], n + n0 < # ar[n1, c], n0 < # ar, ¬ INDHYP-array(ar), ∀ m. m + n0 + 1 < # ar → ar[m] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ |
⊦ m ≠ n → ar[n, a][m] = ar[m]
# ar = n1 + n0 + 1, ar[n] ≠ c, ar[n1, c] ≠ [], ar ≠ [], n ≠ n1, n0 < # ar, n + n0 < # ar[n1, c], ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m + n0 + 1 < # ar → ar[m] = c ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ # x ≤ n → # x[n, a] = # x; (s) eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m ≤ m; (s) ⊦ m + n < m0 → m + n < m0 + n0; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic m < # x ⊦ x[m, a][m] = a; (s) Used terms: ar, n1, c, n
| ⊦ m ≠ n → ar[n, a][m] = ar[m] |
| # ar = n1 + n0 + 1, ar[n] ≠ c, ar[n1, c] ≠ [], ar ≠ [], n ≠ n1, n0 < # ar, n + n0 < # ar[n1, c], ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. m + n0 + 1 < # ar → ar[m] = c ⊦ |
# ar = n1 + n0 + 1, ar[n] ≠ c, ar[n1, c] ≠ [], ar ≠ [], n ≠ n1, n + n0 < # ar[n1, c], n0 < # ar, ¬ INDHYP-array(ar), n + n0 + 1 < # ar → ar[n] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦
Used terms: n
| # ar = n1 + n0 + 1, ar[n] ≠ c, ar[n1, c] ≠ [], ar ≠ [], n ≠ n1, n + n0 < # ar[n1, c], n0 < # ar, ¬ INDHYP-array(ar), n + n0 + 1 < # ar → ar[n] = c, ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ |
# ar = n1 + n0 + 1, ar[n1, c] ≠ [], ar[n] ≠ c, ar ≠ [], n ≠ n1, n + n0 < # ar[n1, c], n0 < # ar, n0 < # ar[n1, c], # ar ≤ # ar[n1, c], # ar ≤ n + n0 + 1, ¬ INDHYP-array(ar), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦
Used simplifier rules: fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ¬ m + n < m; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) le-one: ⊦ m ≤ n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # ar = n1 + n0 + 1, ar[n1, c] ≠ [], ar[n] ≠ c, ar ≠ [], n ≠ n1, n + n0 < # ar[n1, c], n0 < # ar, n0 < # ar[n1, c], # ar ≤ # ar[n1, c], # ar ≤ n + n0 + 1, ¬ INDHYP-array(ar), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ |
⊦ # x ≤ n → # x[n, a] = # x
Used simplifier rules: ⊦ m ≤ m; (s) ⊦ m < n → (n ≤ m + 1 ↔ n = m + 1); (s) eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat eqs: ⊦ m = n + n0 ∧ m = n + n1 → n0 = n1; (forward) from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ n < # x → # x[n, a] = # x; (s) Used terms: ar, n1, c
| ⊦ # x ≤ n → # x[n, a] = # x |
| ¬ INDHYP-array(ar), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]), ∀ m. INDHYP-array(mklist(c, m)) ⊦ ∃ n. n ≤ # ar ∧ (∀ m. m < # ar - n → ar[m] = c) |
¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]) ⊦ ∃ n. n ≤ # ar ∧ (∀ n0. n0 + n < # ar → ar[n0] = c)
Used simplifier rules: n0 ≤ n ⊦ m < n - n0 ↔ m + n0 < n; (s) ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m ≤ n ↔ ¬ n < m; (ss)
| ¬ INDHYP-array(ar), ∀ m. INDHYP-array(mklist(c, m)), ∀ ar, m, a. INDHYP-array(ar) → INDHYP-array(ar[m, a]) ⊦ ∃ n. n ≤ # ar ∧ (∀ n0. n0 + n < # ar → ar[n0] = c) |
Used simplifier rules: ⊦ m ≤ m; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: # ar
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.