input: Write a function to perform matrix multiplication on two given matrices. If the matrices cannot be multiplied due to incompatible dimensions, return None.
  def matrix_multiplication(A, B):  
      rows_A = len(A)  
      cols_A = len(A[0]) if rows_A > 0 else 0 
      rows_B = len(B)  
      cols_B = len(B[0]) if rows_B > 0 else 0
      if cols_A != rows_B:
          return None
      result = [[0 for i in range(cols_B)] for j in range(rows_A)]  
      for i in range(rows_A): 
          for j in range(cols_B): 
              for k in range(cols_A): 
                  result[i][j] += A[i][k] * B[k][j] 
      return result
  
  assert matrix_multiplication([[1, 2], [3, 4]], [[5, 6], [7, 8]]) == [[19, 22], [43, 50]]
  assert matrix_multiplication([[1, 2]], [[3], [4]]) == [[11]]
  assert matrix_multiplication([[1], [2]], [[3, 4]]) == [[3, 4], [6, 8]]
  assert matrix_multiplication([[1, 2]], [[3, 4]]) == None
  assert matrix_multiplication([], []) == []
output: 
  def matrix_multiplication(A, B):  
      rows_A = len(A)  
      cols_A = len(A[0]) if rows_A > 0 else 0 
      rows_B = len(B)  
      cols_B = len(B[0]) if rows_B > 0 else 0
      if cols_A != rows_B:
          return None
      result = [[0 for i in range(cols_B)] for j in range(rows_A)]  
      for i in range(rows_A): 
          for j in range(cols_B): 
              for k in range(cols_A): 
                  result[i][j] += A[i][k] * B[k][j] 
      return result
  