| ⊦ m < #r mx ∧ n < #c mx ∧ r ≤ #r mx → #oc(i, toArr(mx[m, n, j], r)) = #oc(i, toArr(mx, r)) + (i = j ∧ m < r ⊃ 1;0) - (mx[m, n] = i ∧ m < r ⊃ 1;0) |
#oc(i, toArr(mx[m, n, j], r)) ≠ #oc(i, toArr(mx, r)) + (i = j ∧ m < r ⊃ 1;0) - (mx[m, n] = i ∧ m < r ⊃ 1;0), m < #r mx, n < #c mx, r ≤ #r mx ⊦
| #oc(i, toArr(mx[m, n, j], r)) ≠ #oc(i, toArr(mx, r)) + (i = j ∧ m < r ⊃ 1;0) - (mx[m, n] = i ∧ m < r ⊃ 1;0), m < #r mx, n < #c mx, r ≤ #r mx ⊦ |
#oc(i, toArr(mx[m, n, j], r0 +1)) ≠ #oc(i, toArr(mx, r0 +1)) + (i = j ∧ m < r0 +1 ⊃ 1;0) - (mx[m, n] = i ∧ m < r0 +1 ⊃ 1;0), n < #c mx, m < #r mx, r0 +1 ≤ #r mx, ∀ i, mx, m, n, j. ¬ ( #oc(i, toArr(mx[m, n, j], r0)) ≠ #oc(i, toArr(mx, r0)) + (i = j ∧ m < r0 ⊃ 1;0) - (mx[m, n] = i ∧ m < r0 ⊃ 1;0) ∧ m < #r mx ∧ n < #c mx ∧ r0 ≤ #r mx) ⊦
Used simplifier rules: toArr-base: ⊦ toArr(mx, 0) = []; nat freely generated by 0, +1;; ⊦ #oc(a, []) = 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ ¬ n < 0; (s)
| #oc(i, toArr(mx[m, n, j], r0 +1)) ≠ #oc(i, toArr(mx, r0 +1)) + (i = j ∧ m < r0 +1 ⊃ 1;0) - (mx[m, n] = i ∧ m < r0 +1 ⊃ 1;0), n < #c mx, m < #r mx, r0 +1 ≤ #r mx, ∀ i, mx, m, n, j. ¬ ( #oc(i, toArr(mx[m, n, j], r0)) ≠ #oc(i, toArr(mx, r0)) + (i = j ∧ m < r0 ⊃ 1;0) - (mx[m, n] = i ∧ m < r0 ⊃ 1;0) ∧ m < #r mx ∧ n < #c mx ∧ r0 ≤ #r mx) ⊦ |
#oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[m, n, j][r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), r0 < #r mx, n < #c mx, m < #r mx, ∀ i0, mx0, m0, n0, j0. #oc(i0, toArr(mx0[m0, n0, j0], r0)) = #oc(i0, toArr(mx0, r0)) + (i0 = j0 ∧ m0 < r0 ⊃ 1;0) - (mx0[m0, n0] = i0 ∧ m0 < r0 ⊃ 1;0) ∨ ¬ m0 < #r mx0 ∨ ¬ n0 < #c mx0 ∨ ¬ r0 ≤ #r mx0 ⊦
Used simplifier rules: toArr-rec: ⊦ toArr(mx, m + 1) = toArr(mx, m) + mx[m]r; ⊦ 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 = m + 1; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[list-as-arrayinstance-new] ⊦ #oc(a, x + y) = #oc(a, x) + #oc(a, y); (s)
| #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[m, n, j][r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), r0 < #r mx, n < #c mx, m < #r mx, ∀ i0, mx0, m0, n0, j0. #oc(i0, toArr(mx0[m0, n0, j0], r0)) = #oc(i0, toArr(mx0, r0)) + (i0 = j0 ∧ m0 < r0 ⊃ 1;0) - (mx0[m0, n0] = i0 ∧ m0 < r0 ⊃ 1;0) ∨ ¬ m0 < #r mx0 ∨ ¬ n0 < #c mx0 ∨ ¬ r0 ≤ #r mx0 ⊦ |
m < #r mx, n < #c mx, r < #r mx ⊦ mx[m, n, j][r]r = (m = r ⊃ mx[r]r[n, j];mx[r]r)
#oc(i, toArr(mx[m, n, j], r0)) + #oc(i, (m = r0 ⊃ mx[r0]r[n, j];mx[r0]r)) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m < #r mx, n < #c mx, r0 < #r mx, ∀ i0, mx0, m0, n0, j0. #oc(i0, toArr(mx0[m0, n0, j0], r0)) = #oc(i0, toArr(mx0, r0)) + (i0 = j0 ∧ m0 < r0 ⊃ 1;0) - (mx0[m0, n0] = i0 ∧ m0 < r0 ⊃ 1;0) ∨ ¬ m0 < #r mx0 ∨ ¬ n0 < #c mx0 ∨ ¬ r0 ≤ #r mx0 ⊦
Used terms: j, n, m, r0, mx
| m < #r mx, n < #c mx, r < #r mx ⊦ mx[m, n, j][r]r = (m = r ⊃ mx[r]r[n, j];mx[r]r) |
| #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, (m = r0 ⊃ mx[r0]r[n, j];mx[r0]r)) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m < #r mx, n < #c mx, r0 < #r mx, ∀ i0, mx0, m0, n0, j0. #oc(i0, toArr(mx0[m0, n0, j0], r0)) = #oc(i0, toArr(mx0, r0)) + (i0 = j0 ∧ m0 < r0 ⊃ 1;0) - (mx0[m0, n0] = i0 ∧ m0 < r0 ⊃ 1;0) ∨ ¬ m0 < #r mx0 ∨ ¬ n0 < #c mx0 ∨ ¬ r0 ≤ #r mx0 ⊦ |
m = r0, #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r[n, j]) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), r0 < #r mx, n < #c mx, m < #r mx, ∀ i0, mx0, m0, n0, j0. #oc(i0, toArr(mx0[m0, n0, j0], r0)) = #oc(i0, toArr(mx0, r0)) + (i0 = j0 ∧ m0 < r0 ⊃ 1;0) - (mx0[m0, n0] = i0 ∧ m0 < r0 ⊃ 1;0) ∨ ¬ m0 < #r mx0 ∨ ¬ n0 < #c mx0 ∨ ¬ r0 ≤ #r mx0 ⊦
#oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m ≠ r0, r0 < #r mx, n < #c mx, m < #r mx, ∀ i0, mx0, m0, n0, j0. #oc(i0, toArr(mx0[m0, n0, j0], r0)) = #oc(i0, toArr(mx0, r0)) + (i0 = j0 ∧ m0 < r0 ⊃ 1;0) - (mx0[m0, n0] = i0 ∧ m0 < r0 ⊃ 1;0) ∨ ¬ m0 < #r mx0 ∨ ¬ n0 < #c mx0 ∨ ¬ r0 ≤ #r mx0 ⊦
| m = r0, #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r[n, j]) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), r0 < #r mx, n < #c mx, m < #r mx, ∀ i0, mx0, m0, n0, j0. #oc(i0, toArr(mx0[m0, n0, j0], r0)) = #oc(i0, toArr(mx0, r0)) + (i0 = j0 ∧ m0 < r0 ⊃ 1;0) - (mx0[m0, n0] = i0 ∧ m0 < r0 ⊃ 1;0) ∨ ¬ m0 < #r mx0 ∨ ¬ n0 < #c mx0 ∨ ¬ r0 ≤ #r mx0 ⊦ |
#oc(i, toArr(mx[r0, n, j], r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), n < #c mx, r0 < #r mx, ∀ i0, mx0, m0, n0, j0. #oc(i0, toArr(mx0[m0, n0, j0], r0)) = #oc(i0, toArr(mx0, r0)) + (i0 = j0 ∧ m0 < r0 ⊃ 1;0) - (mx0[m0, n0] = i0 ∧ m0 < r0 ⊃ 1;0) ∨ ¬ m0 < #r mx0 ∨ ¬ n0 < #c mx0 ∨ ¬ r0 ≤ #r mx0 ⊦
Used simplifier rules: ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| #oc(i, toArr(mx[r0, n, j], r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), n < #c mx, r0 < #r mx, ∀ i0, mx0, m0, n0, j0. #oc(i0, toArr(mx0[m0, n0, j0], r0)) = #oc(i0, toArr(mx0, r0)) + (i0 = j0 ∧ m0 < r0 ⊃ 1;0) - (mx0[m0, n0] = i0 ∧ m0 < r0 ⊃ 1;0) ∨ ¬ m0 < #r mx0 ∨ ¬ n0 < #c mx0 ∨ ¬ r0 ≤ #r mx0 ⊦ |
#oc(i, toArr(mx[r0, n, j], r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), r0 < #r mx, n < #c mx, #oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)) + (i = j ∧ r0 < r0 ⊃ 1;0) - (mx[r0, n] = i ∧ r0 < r0 ⊃ 1;0) ∨ ¬ r0 < #r mx ∨ ¬ n < #c mx ∨ ¬ r0 ≤ #r mx ⊦
Used terms: i, mx, r0, n, j
| #oc(i, toArr(mx[r0, n, j], r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), r0 < #r mx, n < #c mx, #oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)) + (i = j ∧ r0 < r0 ⊃ 1;0) - (mx[r0, n] = i ∧ r0 < r0 ⊃ 1;0) ∨ ¬ r0 < #r mx ∨ ¬ n < #c mx ∨ ¬ r0 ≤ #r mx ⊦ |
#oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)), #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), n < #c mx, r0 < #r mx ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s) ⊦ m - 0 = m; (s) ⊦ ¬ n < n; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s)
| #oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)), #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), n < #c mx, r0 < #r mx ⊦ |
⊦ x[m] ≠ a ∧ a ≠ b ∧ m < # x → #oc(a, x[m, b]) = #oc(a, x)
#oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)), #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), r0 < #r mx, n < #c mx ⊦ mx[r0]r[n] ≠ i ∧ i ≠ j ∧ n < # mx[r0]r
Used simplifier rules: ⊦ n + 0 = n; (s) ⊦ mx[r]r[c] = mx[r, c]; (s) ⊦ m - 0 = m; (s) ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: i, mx[r0]r, n, j
| ⊦ x[m] ≠ a ∧ a ≠ b ∧ m < # x → #oc(a, x[m, b]) = #oc(a, x) |
| #oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)), #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), r0 < #r mx, n < #c mx ⊦ mx[r0]r[n] ≠ i ∧ i ≠ j ∧ n < # mx[r0]r |
#oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)), #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), n < #c mx, r0 < #r mx ⊦ mx[r0, n] ≠ i ∧ i ≠ j
Used simplifier rules: ⊦ # mx[r]r = #c mx; (s) ⊦ mx[r]r[c] = mx[r, c]; (s)
| #oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)), #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), n < #c mx, r0 < #r mx ⊦ mx[r0, n] ≠ i ∧ i ≠ j |
⊦ x[m] = a ∧ a ≠ b ∧ m < # x → #oc(a, x[m, b]) = #oc(a, x) -1
#oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)), #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), r0 < #r mx, n < #c mx ⊦ mx[r0, n] ≠ i ∧ i ≠ j, mx[r0]r[n] = i ∧ i ≠ j ∧ n < # mx[r0]r
#oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)), mx[r0]r[n] = i, #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) -1 ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), i ≠ j, r0 < #r mx, n < #c mx, n < # mx[r0]r ⊦ mx[r0, n] ≠ i ∧ i ≠ j
Used terms: i, mx[r0]r, n, j
| ⊦ x[m] = a ∧ a ≠ b ∧ m < # x → #oc(a, x[m, b]) = #oc(a, x) -1 |
| #oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)), #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r[n, j]) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), r0 < #r mx, n < #c mx ⊦ mx[r0, n] ≠ i ∧ i ≠ j, mx[r0]r[n] = i ∧ i ≠ j ∧ n < # mx[r0]r |
#oc(j, toArr(mx[r0, n, j], r0)) = #oc(j, toArr(mx, r0)), #oc(j, mx[r0]r[n, j]) ≠ #oc(j, mx[r0]r) + 1, mx[r0, n] ≠ j, n < #c mx, r0 < #r mx ⊦
Used simplifier rules: getrow-putsame: m < #r mx, n < #c mx ⊦ mx[m]r[n, mx[m, n]] = mx[m]r; c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ m - 0 = m; (s) ⊦ m + n - m = n; (s) ⊦ mx[r, c] = a → mx[r, c, a] = mx; (s) ⊦ # mx[r]r = #c mx; (s) ⊦ mx[r]r[c] = mx[r, c]; (s)
| #oc(j, toArr(mx[r0, n, j], r0)) = #oc(j, toArr(mx, r0)), #oc(j, mx[r0]r[n, j]) ≠ #oc(j, mx[r0]r) + 1, mx[r0, n] ≠ j, n < #c mx, r0 < #r mx ⊦ |
⊦ x[m] ≠ a ∧ m < # x → #oc(a, x[m, a]) = #oc(a, x) + 1
Used simplifier rules: ⊦ mx[r]r[c] = mx[r, c]; (s) ⊦ # mx[r]r = #c mx; (s) Used terms: j, mx[r0]r, n
| ⊦ x[m] ≠ a ∧ m < # x → #oc(a, x[m, a]) = #oc(a, x) + 1 |
| #oc(i, toArr(mx[r0, n, j], r0)) = #oc(i, toArr(mx, r0)), mx[r0]r[n] = i, #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) -1 ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) + (i = j ⊃ 1;0) - (mx[r0, n] = i ⊃ 1;0), i ≠ j, r0 < #r mx, n < #c mx, n < # mx[r0]r ⊦ mx[r0, n] ≠ i ∧ i ≠ j |
#oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = #oc(mx[r0, n], toArr(mx, r0)), #oc(mx[r0, n], toArr(mx, r0)) + (#oc(mx[r0, n], mx[r0]r) - 1) ≠ #oc(mx[r0, n], toArr(mx, r0)) + #oc(mx[r0, n], mx[r0]r) - 1, mx[r0, n] ≠ j, r0 < #r mx, n < #c mx ⊦
Used simplifier rules: ⊦ mx[r]r[c] = mx[r, c]; (s) ⊦ # mx[r]r = #c mx; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ n -1 = n - 1; (s)
| #oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = #oc(mx[r0, n], toArr(mx, r0)), #oc(mx[r0, n], toArr(mx, r0)) + (#oc(mx[r0, n], mx[r0]r) - 1) ≠ #oc(mx[r0, n], toArr(mx, r0)) + #oc(mx[r0, n], mx[r0]r) - 1, mx[r0, n] ≠ j, r0 < #r mx, n < #c mx ⊦ |
#oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = #oc(mx[r0, n], toArr(mx, r0)), #oc(mx[r0, n], toArr(mx, r0)) + #oc(mx[r0, n], mx[r0]r) = m + 1, #oc(mx[r0, n], toArr(mx, r0)) + #oc(mx[r0, n], mx[r0]r) ≠ 0, #oc(mx[r0, n], toArr(mx, r0)) + (#oc(mx[r0, n], mx[r0]r) - 1) ≠ m, mx[r0, n] ≠ j, n < #c mx, r0 < #r mx ⊦
Used simplifier rules: ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) ⊦ #oc(a, x) = 0 ↔ ¬ a ∈ x; (s) ⊦ n + 0 = n; (s) ⊦ ¬ a ∈ x → #oc(a, x) = 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: #oc(mx[r0, n], toArr(mx, r0)) + #oc(mx[r0, n], mx[r0]r), m
| #oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = #oc(mx[r0, n], toArr(mx, r0)), #oc(mx[r0, n], toArr(mx, r0)) + #oc(mx[r0, n], mx[r0]r) = m + 1, #oc(mx[r0, n], toArr(mx, r0)) + #oc(mx[r0, n], mx[r0]r) ≠ 0, #oc(mx[r0, n], toArr(mx, r0)) + (#oc(mx[r0, n], mx[r0]r) - 1) ≠ m, mx[r0, n] ≠ j, n < #c mx, r0 < #r mx ⊦ |
#oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = #oc(mx[r0, n], toArr(mx, r0)), #oc(mx[r0, n], toArr(mx, r0)) + #oc(mx[r0, n], mx[r0]r) = m + 1, #oc(mx[r0, n], toArr(mx, r0)) + (#oc(mx[r0, n], mx[r0]r) - 1) ≠ m, mx[r0, n] ≠ j, n < #c mx, r0 < #r mx ⊦
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)
| #oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = #oc(mx[r0, n], toArr(mx, r0)), #oc(mx[r0, n], toArr(mx, r0)) + #oc(mx[r0, n], mx[r0]r) = m + 1, #oc(mx[r0, n], toArr(mx, r0)) + (#oc(mx[r0, n], mx[r0]r) - 1) ≠ m, mx[r0, n] ≠ j, n < #c mx, r0 < #r mx ⊦ |
m ≤ n ⊦ (n - m) + n0 = n + n0 - m
#oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = #oc(mx[r0, n], toArr(mx, r0)), #oc(mx[r0, n], toArr(mx, r0)) + #oc(mx[r0, n], mx[r0]r) = m + 1, #oc(mx[r0, n], toArr(mx, r0)) + (#oc(mx[r0, n], mx[r0]r) - 1) ≠ m, mx[r0, n] ≠ j, r0 < #r mx, n < #c mx, ¬ 1 ≤ #oc(mx[r0, n], mx[r0]r) ⊦
Used simplifier rules: ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < 1 ↔ m = 0; (s) ⊦ #oc(a, x) = 0 ↔ ¬ a ∈ x; (s) ⊦ n + 0 = n; (s) ⊦ ¬ a ∈ x → #oc(a, x) = 0; (s) n ≤ m ⊦ (m - n) + n0 = n1 ↔ m + n0 = n + n1; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: #oc(mx[r0, n], mx[r0]r), 1, #oc(mx[r0, n], toArr(mx, r0))
| m ≤ n ⊦ (n - m) + n0 = n + n0 - m |
| #oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = #oc(mx[r0, n], toArr(mx, r0)), #oc(mx[r0, n], toArr(mx, r0)) + #oc(mx[r0, n], mx[r0]r) = m + 1, #oc(mx[r0, n], toArr(mx, r0)) + (#oc(mx[r0, n], mx[r0]r) - 1) ≠ m, mx[r0, n] ≠ j, r0 < #r mx, n < #c mx, ¬ 1 ≤ #oc(mx[r0, n], mx[r0]r) ⊦ |
#oc(mx[r0, n], toArr(mx, r0)) = m + 1, #oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = m + 1, mx[r0, n] ≠ j, r0 < #r mx, n < #c mx, ¬ mx[r0, n] ∈ mx[r0]r ⊦
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) ⊦ m = m + n ↔ n = 0; (s) ⊦ ¬ a ∈ x → #oc(a, x) = 0; (s) ⊦ n + 0 = n; (s) ⊦ #oc(a, x) = 0 ↔ ¬ a ∈ x; (s) ⊦ m < 1 ↔ m = 0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss)
| #oc(mx[r0, n], toArr(mx, r0)) = m + 1, #oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = m + 1, mx[r0, n] ≠ j, r0 < #r mx, n < #c mx, ¬ mx[r0, n] ∈ mx[r0]r ⊦ |
⊦ a ∈ x ↔ (∃ n. n < # x ∧ x[n] = a)
#oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = m + 1, #oc(mx[r0, n], toArr(mx, r0)) = m + 1, mx[r0, n] ≠ j, n < #c mx, r0 < #r mx, ∀ n0. ¬(n0 < # mx[r0]r ∧ mx[r0]r[n0] = mx[r0, n]) ⊦
Used terms: mx[r0, n], mx[r0]r
| ⊦ a ∈ x ↔ (∃ n. n < # x ∧ x[n] = a) |
| #oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = m + 1, #oc(mx[r0, n], toArr(mx, r0)) = m + 1, mx[r0, n] ≠ j, n < #c mx, r0 < #r mx, ∀ n0. ¬(n0 < # mx[r0]r ∧ mx[r0]r[n0] = mx[r0, n]) ⊦ |
#oc(mx[r0, n], toArr(mx, r0)) = m + 1, #oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = m + 1, mx[r0, n] ≠ j, r0 < #r mx, n < #c mx, ∀ n0. ¬ n0 < #c mx ∨ mx[r0, n0] ≠ mx[r0, n] ⊦
Used simplifier rules: ⊦ mx[r]r[c] = mx[r, c]; (s) ⊦ # mx[r]r = #c mx; (s)
| #oc(mx[r0, n], toArr(mx, r0)) = m + 1, #oc(mx[r0, n], toArr(mx[r0, n, j], r0)) = m + 1, mx[r0, n] ≠ j, r0 < #r mx, n < #c mx, ∀ n0. ¬ n0 < #c mx ∨ mx[r0, n0] ≠ mx[r0, n] ⊦ |
Used terms: n
| #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m ≠ r0, r0 < #r mx, n < #c mx, m < #r mx, ∀ i0, mx0, m0, n0, j0. #oc(i0, toArr(mx0[m0, n0, j0], r0)) = #oc(i0, toArr(mx0, r0)) + (i0 = j0 ∧ m0 < r0 ⊃ 1;0) - (mx0[m0, n0] = i0 ∧ m0 < r0 ⊃ 1;0) ∨ ¬ m0 < #r mx0 ∨ ¬ n0 < #c mx0 ∨ ¬ r0 ≤ #r mx0 ⊦ |
#oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m ≠ r0, m < #r mx, n < #c mx, r0 < #r mx, #oc(i, toArr(mx[m, n, j], r0)) = #oc(i, toArr(mx, r0)) + (i = j ∧ m < r0 ⊃ 1;0) - (mx[m, n] = i ∧ m < r0 ⊃ 1;0) ∨ ¬ m < #r mx ∨ ¬ n < #c mx ∨ ¬ r0 ≤ #r mx ⊦
Used terms: i, mx, m, n, j
| #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m ≠ r0, m < #r mx, n < #c mx, r0 < #r mx, #oc(i, toArr(mx[m, n, j], r0)) = #oc(i, toArr(mx, r0)) + (i = j ∧ m < r0 ⊃ 1;0) - (mx[m, n] = i ∧ m < r0 ⊃ 1;0) ∨ ¬ m < #r mx ∨ ¬ n < #c mx ∨ ¬ r0 ≤ #r mx ⊦ |
#oc(i, toArr(mx[m, n, j], r0)) = #oc(i, toArr(mx, r0)) + (i = j ∧ m < r0 ⊃ 1;0) - (mx[m, n] = i ∧ m < r0 ⊃ 1;0), #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m ≠ r0, r0 < #r mx, n < #c mx, m < #r mx ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s)
| #oc(i, toArr(mx[m, n, j], r0)) = #oc(i, toArr(mx, r0)) + (i = j ∧ m < r0 ⊃ 1;0) - (mx[m, n] = i ∧ m < r0 ⊃ 1;0), #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m ≠ r0, r0 < #r mx, n < #c mx, m < #r mx ⊦ |
#oc(i, toArr(mx[m, n, j], r0)) = #oc(i, toArr(mx, r0)) + 1 - (mx[m, n] = i ∧ m < r0 ⊃ 1;0), i = j, #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m ≠ r0, m < #r mx, n < #c mx, r0 < #r mx, m < r0 ⊦
#oc(i, toArr(mx[m, n, j], r0)) = #oc(i, toArr(mx, r0)) + 0 - (mx[m, n] = i ∧ m < r0 ⊃ 1;0), #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m ≠ r0, m < #r mx, n < #c mx, r0 < #r mx, i ≠ j ∨ ¬ m < r0 ⊦
| #oc(i, toArr(mx[m, n, j], r0)) = #oc(i, toArr(mx, r0)) + 1 - (mx[m, n] = i ∧ m < r0 ⊃ 1;0), i = j, #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m ≠ r0, m < #r mx, n < #c mx, r0 < #r mx, m < r0 ⊦ |
#oc(j, toArr(mx[m, n, j], r0)) = #oc(j, toArr(mx, r0)) + 1 - (mx[m, n] = j ⊃ 1;0), #oc(j, toArr(mx[m, n, j], r0)) + #oc(j, mx[r0]r) ≠ #oc(j, toArr(mx, r0)) + #oc(j, mx[r0]r) + 1 - (mx[m, n] = j ⊃ 1;0), m ≠ r0, m < #r mx, n < #c mx, r0 < #r mx, m < r0, m + 1 < #r mx ⊦
Used simplifier rules: ⊦ 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 ⊦ m < n → ¬ n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| #oc(j, toArr(mx[m, n, j], r0)) = #oc(j, toArr(mx, r0)) + 1 - (mx[m, n] = j ⊃ 1;0), #oc(j, toArr(mx[m, n, j], r0)) + #oc(j, mx[r0]r) ≠ #oc(j, toArr(mx, r0)) + #oc(j, mx[r0]r) + 1 - (mx[m, n] = j ⊃ 1;0), m ≠ r0, m < #r mx, n < #c mx, r0 < #r mx, m < r0, m + 1 < #r mx ⊦ |
Used simplifier rules: ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ mx[r, c] = a → mx[r, c, a] = mx; (s) ⊦ n + 0 = n; (s)
| #oc(i, toArr(mx[m, n, j], r0)) = #oc(i, toArr(mx, r0)) + 0 - (mx[m, n] = i ∧ m < r0 ⊃ 1;0), #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ (#oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r)) + (i = j ∧ ¬ r0 < m ⊃ 1;0) - (mx[m, n] = i ∧ ¬ r0 < m ⊃ 1;0), m ≠ r0, m < #r mx, n < #c mx, r0 < #r mx, i ≠ j ∨ ¬ m < r0 ⊦ |
#oc(i, toArr(mx[m, n, j], r0)) = #oc(i, toArr(mx, r0)) - (mx[m, n] = i ⊃ 1;0), #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) - (mx[m, n] = i ⊃ 1;0), i ≠ j, m ≠ r0, m < r0, r0 < #r mx, n < #c mx, m < #r mx, m + 1 < #r mx ⊦
Used simplifier rules: ⊦ 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 ⊦ m < n → ¬ n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ m - 0 = m; (s) ⊦ m ≠ n → (m < n ↔ ¬ n < m); (ss)
| #oc(i, toArr(mx[m, n, j], r0)) = #oc(i, toArr(mx, r0)) - (mx[m, n] = i ⊃ 1;0), #oc(i, toArr(mx[m, n, j], r0)) + #oc(i, mx[r0]r) ≠ #oc(i, toArr(mx, r0)) + #oc(i, mx[r0]r) - (mx[m, n] = i ⊃ 1;0), i ≠ j, m ≠ r0, m < r0, r0 < #r mx, n < #c mx, m < #r mx, m + 1 < #r mx ⊦ |
Used simplifier rules: oc-toArr-positive: m < r, r < #r mx, n < #c mx ⊦ #oc(mx[m, n], toArr(mx, r)) ≠ 0; ⊦ m - 0 = m; (s) ⊦ m + n = m + n0 ↔ n = n0; (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; (ss) ⊦ m < 1 ↔ m = 0; (s) ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) n ≤ m ⊦ (m - n) + n0 = n1 ↔ m + n0 = n + n1; (s)
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.