code: def combine_kraus_maps(k1, k2):
      
      return [np.dot(k1j, k2l) for k1j in k1 for k2l in k2]
docs: Generate the Kraus map corresponding to the composition
      of two maps on the same qubits with k1 being applied to the state
      after k2.
  
      :param list k1: The list of Kraus operators that are applied second.
      :param list k2: The list of Kraus operators that are applied first.
      :return: A combinatorially generated list of composed Kraus operators.