class_docstr: General Hermitian conjugate operation.
  
  Explanation
  ===========
  
  Take the Hermetian conjugate of an argument [1]_. For matrices this
  operation is equivalent to transpose and complex conjugate [2]_.
  
  Parameters
  ==========
  
  arg : Expr
      The SymPy expression that we want to take the dagger of.
  evaluate : bool
      Whether the resulting expression should be directly evaluated.
  
  Examples
  ========
  
  Daggering various quantum objects:
  
      >>> from sympy.physics.quantum.dagger import Dagger
      >>> from sympy.physics.quantum.state import Ket, Bra
      >>> from sympy.physics.quantum.operator import Operator
      >>> Dagger(Ket('psi'))
      <psi|
      >>> Dagger(Bra('phi'))
      |phi>
      >>> Dagger(Operator('A'))
      Dagger(A)
  
  Inner and outer products::
  
      >>> from sympy.physics.quantum import InnerProduct, OuterProduct
      >>> Dagger(InnerProduct(Bra('a'), Ket('b')))
      <b|a>
      >>> Dagger(OuterProduct(Ket('a'), Bra('b')))
      |b><a|
  
  Powers, sums and products::
  
      >>> A = Operator('A')
      >>> B = Operator('B')
      >>> Dagger(A*B)
      Dagger(B)*Dagger(A)
      >>> Dagger(A+B)
      Dagger(A) + Dagger(B)
      >>> Dagger(A**2)
      Dagger(A)**2
  
  Dagger also seamlessly handles complex numbers and matrices::
  
      >>> from sympy import Matrix, I
      >>> m = Matrix([[1,I],[2,I]])
      >>> m
      Matrix([
      [1, I],
      [2, I]])
      >>> Dagger(m)
      Matrix([
      [ 1,  2],
      [-I, -I]])
  
  References
  ==========
  
  .. [1] https://en.wikipedia.org/wiki/Hermitian_adjoint
  .. [2] https://en.wikipedia.org/wiki/Hermitian_transpose
class_docstr_tok: ["General","Hermitian","conjugate","operation",".","Explanation","===========","Take","the","Hermetian","conjugate","of","an","argument","[","1","]","_",".","For","matrices","this","operation","is","equivalent","to","transpose","and","complex","conjugate","[","2","]","_.","Parameters","==========","arg",":","Expr","The","SymPy","expression","that","we","want","to","take","the","dagger","of",".","evaluate",":","bool","Whether","the","resulting","expression","should","be","directly","evaluated",".","Examples","========","Daggering","various","quantum","objects",":",">",">",">","from","sympy.physics.quantum.dagger","import","Dagger",">",">",">","from","sympy.physics.quantum.state","import","Ket",",","Bra",">",">",">","from","sympy.physics.quantum.operator","import","Operator",">",">",">","Dagger","(","Ket","(","'psi","'",")",")","<","psi|",">",">",">","Dagger","(","Bra","(","'phi","'",")",")","|phi",">",">",">",">","Dagger","(","Operator","(","'","A","'",")",")","Dagger","(","A",")","Inner","and","outer","products",":",":",">",">",">","from","sympy.physics.quantum","import","InnerProduct",",","OuterProduct",">",">",">","Dagger","(","InnerProduct","(","Bra","(","'","a","'",")",",","Ket","(","'","b","'",")",")",")","<","b|a",">",">",">",">","Dagger","(","OuterProduct","(","Ket","(","'","a","'",")",",","Bra","(","'","b","'",")",")",")","|b",">","<","a|","Powers",",","sums","and","products",":",":",">",">",">","A","=","Operator","(","'","A","'",")",">",">",">","B","=","Operator","(","'","B","'",")",">",">",">","Dagger","(","A","*","B",")","Dagger","(","B",")","*","Dagger","(","A",")",">",">",">","Dagger","(","A+B",")","Dagger","(","A",")","+","Dagger","(","B",")",">",">",">","Dagger","(","A","*","*","2",")","Dagger","(","A",")","*","*","2","Dagger","also","seamlessly","handles","complex","numbers","and","matrices",":",":",">",">",">","from","sympy","import","Matrix",",","I",">",">",">","m","=","Matrix","(","[","[","1",",","I","]",",","[","2",",","I","]","]",")",">",">",">","m","Matrix","(","[","[","1",",","I","]",",","[","2",",","I","]","]",")",">",">",">","Dagger","(","m",")","Matrix","(","[","[","1",",","2","]",",","[","-I",",","-I","]","]",")","References","==========","..","[","1","]","https",":","\/\/en.wikipedia.org\/wiki\/Hermitian_adjoint","..","[","2","]","https",":","\/\/en.wikipedia.org\/wiki\/Hermitian_transpose"]
code: def __mul__(self, other):
      from sympy.physics.quantum import IdentityOperator
  
      if isinstance(other, IdentityOperator):
          return self
  
      return Mul(self, other)
  
imports: from sympy.core import Expr, Mul, sympify
  from sympy.functions.elementary.complexes import adjoint
label_desc: Use image node_id 2 for calling the Dagger obj's underlying member method code with example usage: obj.__mul__(other) and returns: Mul, self