| ⊦ 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.