| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- """Tests for sympy.physics.quantum.kind."""
- from sympy.core.kind import NumberKind, UndefinedKind
- from sympy.core.symbol import symbols
- from sympy.physics.quantum.kind import (
- OperatorKind, KetKind, BraKind
- )
- from sympy.physics.quantum.anticommutator import AntiCommutator
- from sympy.physics.quantum.commutator import Commutator
- from sympy.physics.quantum.dagger import Dagger
- from sympy.physics.quantum.operator import Operator
- from sympy.physics.quantum.state import Ket, Bra
- from sympy.physics.quantum.tensorproduct import TensorProduct
- k = Ket('k')
- b = Bra('k')
- A = Operator('A')
- B = Operator('B')
- x, y, z = symbols('x y z', integer=True)
- def test_bra_ket():
- assert k.kind == KetKind
- assert b.kind == BraKind
- assert (b*k).kind == NumberKind # inner product
- assert (x*k).kind == KetKind
- assert (x*b).kind == BraKind
- def test_operator_kind():
- assert A.kind == OperatorKind
- assert (A*B).kind == OperatorKind
- assert (x*A).kind == OperatorKind
- assert (x*A*B).kind == OperatorKind
- assert (x*k*b).kind == OperatorKind # outer product
- def test_undefind_kind():
- # Because of limitations in the kind dispatcher API, we are currently
- # unable to have OperatorKind*KetKind -> KetKind (and similar for bras).
- assert (A*k).kind == UndefinedKind
- assert (b*A).kind == UndefinedKind
- assert (x*b*A*k).kind == UndefinedKind
- def test_dagger_kind():
- assert Dagger(k).kind == BraKind
- assert Dagger(b).kind == KetKind
- assert Dagger(A).kind == OperatorKind
- def test_commutator_kind():
- assert Commutator(A, B).kind == OperatorKind
- assert Commutator(A, x*B).kind == OperatorKind
- assert Commutator(x*A, B).kind == OperatorKind
- assert Commutator(x*A, x*B).kind == OperatorKind
- def test_anticommutator_kind():
- assert AntiCommutator(A, B).kind == OperatorKind
- assert AntiCommutator(A, x*B).kind == OperatorKind
- assert AntiCommutator(x*A, B).kind == OperatorKind
- assert AntiCommutator(x*A, x*B).kind == OperatorKind
- def test_tensorproduct_kind():
- assert TensorProduct(k,k).kind == KetKind
- assert TensorProduct(b,b).kind == BraKind
- assert TensorProduct(x*k,y*k).kind == KetKind
- assert TensorProduct(x*b,y*b).kind == BraKind
- assert TensorProduct(x*b*k, y*b*k).kind == NumberKind
- assert TensorProduct(x*k*b, y*k*b).kind == OperatorKind
- assert TensorProduct(A, B).kind == OperatorKind
- assert TensorProduct(A, x*B).kind == OperatorKind
- assert TensorProduct(x*A, B).kind == OperatorKind
|