code: def kraus_iscomplete(kraus: Kraus) -> bool:
      
      qubits = kraus.qubits
      N = kraus.qubit_nb
  
      ident = Gate(np.eye(2**N), qubits)  # FIXME
  
      tensors = [(op.H @ op @ ident).asoperator() for op in kraus.operators]
      tensors = [t*w for t, w in zip(tensors, kraus.weights)]
  
      tensor = reduce(np.add, tensors)
      res = Gate(tensor, qubits)
  
      return almost_identity(res)
docs: Returns True if the collection of (weighted) Kraus operators are
      complete. (Which is necessary for a CPTP map to preserve trace)