| A.cols = (B * C).rows, A.cols = B.rows, B.cols = C.rows ⊦ C.cols = (B * C).cols ∧ (m < A.rows ∧ n < C.cols → ((A * B) * C)[m, n] = (A * B * C)[m, n]) |
A.cols = B.rows, B.cols = C.rows, m < A.rows, n < C.cols ⊦ ((A * B) * C)[m, n] = (A * B * C)[m, n], A.rows = 0, C.cols = 0
Used simplifier rules: rows-dot: ⊦ A.cols = B.rows → (A * B).rows = A.rows;%cols-dot: ⊦ A.cols = B.rows → (A * B).cols = B.cols;%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic1