def pauli_represent_x_y(e): """ Traverse an expression and change all instances of SigmaMinus and SigmaPlus to the corresponding expressions using SigmaX and SigmaY. """ # XXX: todo, make sure that new operators inherit labels return expression_tree_transform( e, [(lambda e: isinstance(e, SigmaMinus), lambda e: SigmaX() / 2 - I * SigmaY() / 2), (lambda e: isinstance(e, SigmaPlus), lambda e: SigmaX() / 2 + I * SigmaY() / 2)])
represent, ) from sympy.physics.quantum.pauli import ( SigmaOpBase, SigmaX, SigmaY, SigmaZ, SigmaMinus, SigmaPlus, qsimplify_pauli, ) from sympy.physics.quantum.pauli import SigmaZKet, SigmaZBra from sympy.testing.pytest import raises sx, sy, sz = SigmaX(), SigmaY(), SigmaZ() sx1, sy1, sz1 = SigmaX(1), SigmaY(1), SigmaZ(1) sx2, sy2, sz2 = SigmaX(2), SigmaY(2), SigmaZ(2) sm, sp = SigmaMinus(), SigmaPlus() sm1, sp1 = SigmaMinus(1), SigmaPlus(1) A, B = Operator("A"), Operator("B") def test_pauli_operators_types(): assert isinstance(sx, SigmaOpBase) and isinstance(sx, SigmaX) assert isinstance(sy, SigmaOpBase) and isinstance(sy, SigmaY) assert isinstance(sz, SigmaOpBase) and isinstance(sz, SigmaZ) assert isinstance(sm, SigmaOpBase) and isinstance(sm, SigmaMinus) assert isinstance(sp, SigmaOpBase) and isinstance(sp, SigmaPlus)