1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- from sympy.core.numbers import Integer
- from sympy.core.symbol import symbols
- from sympy.physics.quantum.dagger import Dagger
- from sympy.physics.quantum.anticommutator import AntiCommutator as AComm
- from sympy.physics.quantum.operator import Operator
- a, b, c = symbols('a,b,c')
- A, B, C, D = symbols('A,B,C,D', commutative=False)
- def test_anticommutator():
- ac = AComm(A, B)
- assert isinstance(ac, AComm)
- assert ac.is_commutative is False
- assert ac.subs(A, C) == AComm(C, B)
- def test_commutator_identities():
- assert AComm(a*A, b*B) == a*b*AComm(A, B)
- assert AComm(A, A) == 2*A**2
- assert AComm(A, B) == AComm(B, A)
- assert AComm(a, b) == 2*a*b
- assert AComm(A, B).doit() == A*B + B*A
- def test_anticommutator_dagger():
- assert Dagger(AComm(A, B)) == AComm(Dagger(A), Dagger(B))
- class Foo(Operator):
- def _eval_anticommutator_Bar(self, bar):
- return Integer(0)
- class Bar(Operator):
- pass
- class Tam(Operator):
- def _eval_anticommutator_Foo(self, foo):
- return Integer(1)
- def test_eval_commutator():
- F = Foo('F')
- B = Bar('B')
- T = Tam('T')
- assert AComm(F, B).doit() == 0
- assert AComm(B, F).doit() == 0
- assert AComm(F, T).doit() == 1
- assert AComm(T, F).doit() == 1
- assert AComm(B, T).doit() == B*T + T*B
|