| ⊦ n < m ∧ c < # vec ∧ r < m ∧ n1 ≤ # vec → Σ(0 to n1, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) = (n = r ∧ c < n1 ⊃ a * vec[c];O) |
Σ(0 to n1, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ c < n1 ⊃ a * vec[c];O), n < m, c < # vec, r < m, n1 ≤ # vec ⊦
| Σ(0 to n1, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ c < n1 ⊃ a * vec[c];O), n < m, c < # vec, r < m, n1 ≤ # vec ⊦ |
Σ(0 to n0 +1, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ c < n0 +1 ⊃ a * vec[c];O), r < m, c < # vec, n < m, n0 +1 ≤ # vec, ∀ m, vec, r, c, a, n. ¬ ( Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ c < n0 ⊃ a * vec[c];O) ∧ n < m ∧ c < # vec ∧ r < m ∧ n0 ≤ # vec) ⊦
Used simplifier rules: sum-base: ⊦ Σ(∅, f) = O; nat freely generated by 0, +1;; ⊦ n to n = ∅; (s) ⊦ ¬ n < 0; (s)
| Σ(0 to n0 +1, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ c < n0 +1 ⊃ a * vec[c];O), r < m, c < # vec, n < m, n0 +1 ≤ # vec, ∀ m, vec, r, c, a, n. ¬ ( Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ c < n0 ⊃ a * vec[c];O) ∧ n < m ∧ c < # vec ∧ r < m ∧ n0 ≤ # vec) ⊦ |
Σ(0 to n0 + 1, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n0 < # vec, r < m, c < # vec, n < m, ∀ m0, vec0, r0, c0, a0, n1. Σ(0 to n0, λ n0. (mkmatrix(m0, # vec0, O)[r0, c0 := a0])[n1, n0] * vec0[n0]) = (n1 = r0 ∧ c0 < n0 ⊃ a0 * vec0[c0];O) ∨ ¬ n1 < m0 ∨ ¬ c0 < # vec0 ∨ ¬ r0 < m0 ∨ ¬ n0 ≤ # vec0 ⊦
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 = m + 1; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s)
| Σ(0 to n0 + 1, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n0 < # vec, r < m, c < # vec, n < m, ∀ m0, vec0, r0, c0, a0, n1. Σ(0 to n0, λ n0. (mkmatrix(m0, # vec0, O)[r0, c0 := a0])[n1, n0] * vec0[n0]) = (n1 = r0 ∧ c0 < n0 ⊃ a0 * vec0[c0];O) ∨ ¬ n1 < m0 ∨ ¬ c0 < # vec0 ∨ ¬ r0 < m0 ∨ ¬ n0 ≤ # vec0 ⊦ |
⊦ m to n = (m < n ⊃ (m < n ⊃ (m to n - 1) ++ (n - 1);∅);∅)
Σ((0 < n0 + 1 ⊃ (0 < n0 + 1 ⊃ (0 to n0 + 1 - 1) ++ (n0 + 1 - 1);∅);∅), λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n < m, c < # vec, r < m, n0 < # vec, ∀ m0, vec0, r0, c0, a0, n1. Σ(0 to n0, λ n0. (mkmatrix(m0, # vec0, O)[r0, c0 := a0])[n1, n0] * vec0[n0]) = (n1 = r0 ∧ c0 < n0 ⊃ a0 * vec0[c0];O) ∨ ¬ n1 < m0 ∨ ¬ c0 < # vec0 ∨ ¬ r0 < m0 ∨ ¬ n0 ≤ # vec0 ⊦
Used terms: 0, n0 + 1
| ⊦ m to n = (m < n ⊃ (m < n ⊃ (m to n - 1) ++ (n - 1);∅);∅) |
| Σ((0 < n0 + 1 ⊃ (0 < n0 + 1 ⊃ (0 to n0 + 1 - 1) ++ (n0 + 1 - 1);∅);∅), λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n < m, c < # vec, r < m, n0 < # vec, ∀ m0, vec0, r0, c0, a0, n1. Σ(0 to n0, λ n0. (mkmatrix(m0, # vec0, O)[r0, c0 := a0])[n1, n0] * vec0[n0]) = (n1 = r0 ∧ c0 < n0 ⊃ a0 * vec0[c0];O) ∨ ¬ n1 < m0 ∨ ¬ c0 < # vec0 ∨ ¬ r0 < m0 ∨ ¬ n0 ≤ # vec0 ⊦ |
Σ((0 to n0) ++ n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n0 < # vec, r < m, c < # vec, n < m, ∀ m0, vec0, r0, c0, a0, n1. Σ(0 to n0, λ n0. (mkmatrix(m0, # vec0, O)[r0, c0 := a0])[n1, n0] * vec0[n0]) = (n1 = r0 ∧ c0 < n0 ⊃ a0 * vec0[c0];O) ∨ ¬ n1 < m0 ∨ ¬ c0 < # vec0 ∨ ¬ r0 < m0 ∨ ¬ n0 ≤ # vec0 ⊦
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) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s) ⊦ m + 1 ≠ 0; (s) ⊦ 0 < m ↔ m ≠ 0; (s)
| Σ((0 to n0) ++ n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n0 < # vec, r < m, c < # vec, n < m, ∀ m0, vec0, r0, c0, a0, n1. Σ(0 to n0, λ n0. (mkmatrix(m0, # vec0, O)[r0, c0 := a0])[n1, n0] * vec0[n0]) = (n1 = r0 ∧ c0 < n0 ⊃ a0 * vec0[c0];O) ∨ ¬ n1 < m0 ∨ ¬ c0 < # vec0 ∨ ¬ r0 < m0 ∨ ¬ n0 ≤ # vec0 ⊦ |
⊦ a ∈ s → s ++ a = s
Σ((0 to n0) ++ n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n < m, c < # vec, r < m, n0 < # vec, ¬ n0 ∈ 0 to n0, ∀ m0, vec0, r0, c0, a0, n1. Σ(0 to n0, λ n0. (mkmatrix(m0, # vec0, O)[r0, c0 := a0])[n1, n0] * vec0[n0]) = (n1 = r0 ∧ c0 < n0 ⊃ a0 * vec0[c0];O) ∨ ¬ n1 < m0 ∨ ¬ c0 < # vec0 ∨ ¬ r0 < m0 ∨ ¬ n0 ≤ # vec0 ⊦
Used simplifier rules: ⊦ n0 ∈ m to n ↔ m ≤ n0 ∧ n0 < n; (s) ⊦ 0 ≤ m; (s) ⊦ ¬ n < n; (s) Used terms: n0, 0 to n0
| ⊦ a ∈ s → s ++ a = s |
| Σ((0 to n0) ++ n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n < m, c < # vec, r < m, n0 < # vec, ¬ n0 ∈ 0 to n0, ∀ m0, vec0, r0, c0, a0, n1. Σ(0 to n0, λ n0. (mkmatrix(m0, # vec0, O)[r0, c0 := a0])[n1, n0] * vec0[n0]) = (n1 = r0 ∧ c0 < n0 ⊃ a0 * vec0[c0];O) ∨ ¬ n1 < m0 ∨ ¬ c0 < # vec0 ∨ ¬ r0 < m0 ∨ ¬ n0 ≤ # vec0 ⊦ |
(mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0] + Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n0 < # vec, r < m, c < # vec, n < m, ∀ m0, vec0, r0, c0, a0, n1. Σ(0 to n0, λ n0. (mkmatrix(m0, # vec0, O)[r0, c0 := a0])[n1, n0] * vec0[n0]) = (n1 = r0 ∧ c0 < n0 ⊃ a0 * vec0[c0];O) ∨ ¬ n1 < m0 ∨ ¬ c0 < # vec0 ∨ ¬ r0 < m0 ∨ ¬ n0 ≤ # vec0 ⊦
Used simplifier rules: sum-rec: ⊦ ¬ n ∈ ns → Σ(ns ++ n, f) = f(n) + Σ(ns, f); ⊦ ¬ n < n; (s) ⊦ 0 ≤ m; (s) ⊦ n0 ∈ m to n ↔ m ≤ n0 ∧ n0 < n; (s)
| (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0] + Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n0 < # vec, r < m, c < # vec, n < m, ∀ m0, vec0, r0, c0, a0, n1. Σ(0 to n0, λ n0. (mkmatrix(m0, # vec0, O)[r0, c0 := a0])[n1, n0] * vec0[n0]) = (n1 = r0 ∧ c0 < n0 ⊃ a0 * vec0[c0];O) ∨ ¬ n1 < m0 ∨ ¬ c0 < # vec0 ∨ ¬ r0 < m0 ∨ ¬ n0 ≤ # vec0 ⊦ |
(mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0] + Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n < m, c < # vec, r < m, n0 < # vec, Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) = (n = r ∧ c < n0 ⊃ a * vec[c];O) ∨ ¬ n < m ∨ ¬ c < # vec ∨ ¬ r < m ∨ ¬ n0 ≤ # vec ⊦
Used terms: m, vec, r, c, a, n
| (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0] + Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n < m, c < # vec, r < m, n0 < # vec, Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) = (n = r ∧ c < n0 ⊃ a * vec[c];O) ∨ ¬ n < m ∨ ¬ c < # vec ∨ ¬ r < m ∨ ¬ n0 ≤ # vec ⊦ |
Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) = (n = r ∧ c < n0 ⊃ a * vec[c];O), (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0] + (n = r ∧ c < n0 ⊃ a * vec[c];O) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n0 < # vec, r < m, c < # vec, n < m ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s)
| Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) = (n = r ∧ c < n0 ⊃ a * vec[c];O), (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0] + (n = r ∧ c < n0 ⊃ a * vec[c];O) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n0 < # vec, r < m, c < # vec, n < m ⊦ |
c ≠ c0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0]
c = n0, Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) = (n = r ∧ c < n0 ⊃ a * vec[c];O), (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0] + (n = r ∧ c < n0 ⊃ a * vec[c];O) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n < m, c < # vec, r < m, n0 < # vec ⊦
Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) = (n = r ∧ c < n0 ⊃ a * vec[c];O), mkmatrix(m, # vec, O)[n, n0] * vec[n0] + (n = r ∧ c < n0 ⊃ a * vec[c];O) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), c ≠ n0, n < m, c < # vec, r < m, n0 < # vec ⊦
Used terms: n0, mkmatrix(m, # vec, O), a, n, c, r
| c ≠ c0 ⊦ (mx[r, c := a])[r0, c0] = mx[r0, c0] |
| c = n0, Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) = (n = r ∧ c < n0 ⊃ a * vec[c];O), (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0] + (n = r ∧ c < n0 ⊃ a * vec[c];O) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), n < m, c < # vec, r < m, n0 < # vec ⊦ |
Σ(0 to n0, λ n1. (mkmatrix(m, # vec, O)[r, n0 := a])[n, n1] * vec[n1]) = O, (mkmatrix(m, # vec, O)[r, n0 := a])[n, n0] * vec[n0] ≠ (n = r ⊃ a * vec[n0];O), r < m, n0 < # vec, n < m ⊦
Used simplifier rules: ⊦ ¬ n < n; (s) addcom: ⊦ a + b = b + a; from specification ring addassoc: ⊦ (a + b) + c = a + b + c; from specification ring ⊦ a + O = a; (s)
| Σ(0 to n0, λ n1. (mkmatrix(m, # vec, O)[r, n0 := a])[n, n1] * vec[n1]) = O, (mkmatrix(m, # vec, O)[r, n0 := a])[n, n0] * vec[n0] ≠ (n = r ⊃ a * vec[n0];O), r < m, n0 < # vec, n < m ⊦ |
r ≠ r0 ⊦ (mx[(* r0), c0 := a])[(* r), c] = mx[r, c]
Used simplifier rules: ⊦ r ≠ r0 → (mx[r, c := a])[r0, c0] = mx[r0, c0]; (s) ⊦ r < r0 ∧ c < c0 → mkmatrix(r0, c0, a)[r, c] = a; (s) ⊦ O * a = O; (s) multassoc: ⊦ (a * b) * c = a * b * c; from specification ring ⊦ #r mkmatrix(r, c, a) = (c = 0 ⊃ 0;r); (s) ⊦ #c mkmatrix(r, c, a) = (r = 0 ⊃ 0;c); (s) ⊦ m < n → n ≠ 0; (s) r < #r mx, c < #c mx ⊦ (mx[r, c := a])[r, c] = a; (s) Used terms: n0, mkmatrix(m, # vec, O), a, r, n0, n
| r ≠ r0 ⊦ (mx[(* r0), c0 := a])[(* r), c] = mx[r, c] |
| Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) = (n = r ∧ c < n0 ⊃ a * vec[c];O), mkmatrix(m, # vec, O)[n, n0] * vec[n0] + (n = r ∧ c < n0 ⊃ a * vec[c];O) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), c ≠ n0, n < m, c < # vec, r < m, n0 < # vec ⊦ |
Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) = (n = r ∧ c < n0 ⊃ a * vec[c];O), (n = r ∧ c < n0 ⊃ a * vec[c];O) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), c ≠ n0, n0 < # vec, r < m, c < # vec, n < m ⊦
Used simplifier rules: addcom: ⊦ a + b = b + a; from specification ring addassoc: ⊦ (a + b) + c = a + b + c; from specification ring ⊦ a + O = a; (s) multassoc: ⊦ (a * b) * c = a * b * c; from specification ring ⊦ O * a = O; (s) ⊦ r < r0 ∧ c < c0 → mkmatrix(r0, c0, a)[r, c] = a; (s)
| Σ(0 to n0, λ n0. (mkmatrix(m, # vec, O)[r, c := a])[n, n0] * vec[n0]) = (n = r ∧ c < n0 ⊃ a * vec[c];O), (n = r ∧ c < n0 ⊃ a * vec[c];O) ≠ (n = r ∧ ¬ n0 < c ⊃ a * vec[c];O), c ≠ n0, n0 < # vec, r < m, c < # vec, n < m ⊦ |
Used simplifier rules: ⊦ m ≠ n → (m < n ↔ ¬ n < m); (ss) ⊦ m < n → ¬ n < m; (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.