Tensor products and Clebsch–Gordan¶
tensor ¶
tensor.py¶
Tensor products and Clebsch–Gordan decomposition of U_q(sl_2) representations.
The tensor product action is induced by the coproduct Δ:
X . (v ⊗ w) = Δ(X) . (v ⊗ w)
Thus the generators act on V_m ⊗ V_n as follows:
E . (v ⊗ w) = E v ⊗ w + K v ⊗ E w
F . (v ⊗ w) = F v ⊗ K^{-1} w + v ⊗ F w
K . (v ⊗ w) = K v ⊗ K w
Clebsch–Gordan decomposition (the same structure as in the classical case):
V_m ⊗ V_n ≅ V_{m+n} ⊕ V_{m+n-2} ⊕ ... ⊕ V_{|m-n|}
This module constructs the action matrices on V_m ⊗ V_n and explicitly computes a highest-weight vector for each direct-sum component.
TensorRepresentation
dataclass
¶
Container for V_m ⊗ V_n.
Source code in quantum_group/tensor.py
37 38 39 40 41 42 43 44 45 46 | |
tensor_product ¶
tensor_product(repA: Representation, repB: Representation) -> TensorRepresentation
Construct the matrix action of generators on V_m ⊗ V_n via Δ.
Basis order: e_{i,j} = v_i^A ⊗ v_j^B, lexicographic (first i, then j).
Source code in quantum_group/tensor.py
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | |
cg_summands ¶
cg_summands(m: int, n: int) -> list[int]
List the k values appearing in V_m ⊗ V_n = ⊕ V_k.
k = |m-n|, |m-n|+2, ..., m+n (all have the parity of m+n).
Source code in quantum_group/tensor.py
74 75 76 77 78 79 80 81 82 83 | |
find_highest_weight_vectors ¶
find_highest_weight_vectors(tensor_rep: TensorRepresentation, q_sym: Expr = default_q) -> list[tuple[int, sp.Matrix]]
Find highest-weight vectors for generic q in V_m ⊗ V_n.
Both factors must use the same parameter. Candidate weights come from
the generic Clebsch–Gordan rule; this is not a root-of-unity classifier.
q_sym is retained for API compatibility; exponent labels determine
the subspaces and the supplied matrices determine their kernels.
A vector v has highest weight k when: E . v = 0 and K . v = q^k v.
Returns a list of (k, v) pairs in descending order of k.
Algorithm: For each candidate k = |m-n|, |m-n|+2, ..., m+n, select the weight subspace with K-eigenvalue q^k by its diagonal indices, then compute the kernel of E on that subspace.
Source code in quantum_group/tensor.py
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | |
cg_decomposition_summary ¶
cg_decomposition_summary(m: int, n: int) -> str
Return a readable summary of the V_m ⊗ V_n decomposition.
Source code in quantum_group/tensor.py
140 141 142 143 144 145 | |