input: Write a function to perform matrix multiplication on two given matrices. If the matrices cannot be multiplied due to incompatible dimensions, raise a ValueError. If the matrices are empty, return an empty list.
  def matrix_multiplication(A, B): 
      if not A or not B:
          return []
      rows_A = len(A)  
      cols_A = len(A[0])  
      rows_B = len(B)  
      cols_B = len(B[0])  
      if cols_A != rows_B:
          raise ValueError("Incompatible matrix dimensions for multiplication")
      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([], [])==[]
  assert matrix_multiplication([[1,2]], [[3],[4]])==[[11]]
  assert matrix_multiplication([[1]], [[2]])==[[2]]
  try:
      matrix_multiplication([[1,2]], [[3,4]])
  except ValueError:
      assert True
  else:
      assert False
output: 
  def matrix_multiplication(A, B): 
      if not A or not B:
          return []
      rows_A = len(A)  
      cols_A = len(A[0])  
      rows_B = len(B)  
      cols_B = len(B[0])  
      if cols_A != rows_B:
          raise ValueError("Incompatible matrix dimensions for multiplication")
      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
  