| A.cols = B.rows, B.cols = C.rows ⊦ ((A * B) * C).rows = (A * B * C).rows ∧ ((A * B) * C).cols = (A * B * C).cols ∧ (m < ((A * B) * C).rows ∧ n < ((A * B) * C).cols → ((A * B) * C)[m, n] = (A * B * C)[m, n]) |
⊦ A.cols = B.rows → (A * B).rows = A.rows
(A * B).cols = C.rows, A.cols = B.rows, B.cols = C.rows ⊦ (A * B).rows = (A * B * C).rows ∧ ((A * B) * C).cols = (A * B * C).cols ∧ (m < (A * B).rows ∧ n < ((A * B) * C).cols → ((A * B) * C)[m, n] = (A * B * C)[m, n])
Used simplifier rules: cols-dot: ⊦ A.cols = B.rows → (A * B).cols = B.cols; Used terms: C, A * B