| A.cols = B.rows, C0.rows = A.rows, C0.cols = B.cols, C.rows = A.rows, C.cols = B.cols, n < B.cols, m < A.rows, m1 < A.rows, ∀ m0, n0. m0 < A.rows ∧ n0 < B.cols → C0[m0, n0] = (m0 < m1 ⊃ Σ(B.rows, λ k. A[m0, k] * B[k, n0]);0), ∀ m, n. m < A.rows ∧ n < B.cols → C[m, n] = C0[m, n] + (m = m1 ⊃ Σ(B.rows, λ k. A[m1, k] * B[k, n]);0) ⊦ B.cols = 0, C[m, n] = (¬ m1 < m ⊃ Σ(B.rows, λ k. A[m, k] * B[k, n]);0), A.rows = 0 |
¬ m1 < m, A.cols = B.rows, C0.rows = A.rows, C0.cols = B.cols, C.rows = A.rows, C.cols = B.cols, n < B.cols, m < A.rows, m1 < A.rows, ∀ m0, n0. m0 < A.rows ∧ n0 < B.cols → C0[m0, n0] = (m0 < m1 ⊃ Σ(B.rows, λ k. A[m0, k] * B[k, n0]);0), ∀ m, n. m < A.rows ∧ n < B.cols → C[m, n] = C0[m, n] + (m = m1 ⊃ Σ(B.rows, λ k. A[m1, k] * B[k, n]);0) ⊦ C[m, n] = Σ(B.rows, λ k. A[m, k] * B[k, n]), B.cols = 0, A.rows = 0
m1 < m, A.cols = B.rows, C0.rows = A.rows, C0.cols = B.cols, C.rows = A.rows, C.cols = B.cols, n < B.cols, m < A.rows, m1 < A.rows, ∀ m0, n0. m0 < A.rows ∧ n0 < B.cols → C0[m0, n0] = (m0 < m1 ⊃ Σ(B.rows, λ k. A[m0, k] * B[k, n0]);0), ∀ m, n. m < A.rows ∧ n < B.cols → C[m, n] = C0[m, n] + (m = m1 ⊃ Σ(B.rows, λ k. A[m1, k] * B[k, n]);0) ⊦ C[m, n] = 0, B.cols = 0, A.rows = 0