Representation#
- class discopy.hopf.Representation(dim=None, action=None)[source]#
Bases:
discopy.abc.Result,discopy.frobenius.DimA finite-dimensional (left) module over the class parameter
algebra: given aAlgebraH, the classRepresentation[H]is the type of objects of \(\mathrm{Rep}(H)\), the categoryIntertwiner[H], andalgebrais accessible on both the class and its instances. A representation is atensor.Dim—insideis the underlying vector space \(V\) — carrying itsactiondiagram \(H \otimes V \to V\) (withV = action.cod), which the ribbon classmethods ofIntertwinerread off.- Parameters:
dim – The underlying vector space \(V\) as a single
tensor.Dim,Dim(1)by default.action – The action diagram \(H \otimes V \to V\); when not given, the trivial action
algebra.counit @ Id(dim).
The product of representations (
tensor()) acts through the comultiplication and the adjointsl,rare the dual module with the action twisted by \(S^{-1}\) and \(S\). Equality is that of the underlyingtensor.Dim: two modules on the same space are distinguished by theiraction, not by==.A representation satisfies the two module axioms as diagram equations (
is_module()): the action is associative overmultand unital overunit. Here is the associativity axiom(mult @ V) >> action == (H @ action) >> actionfor a direct sum of two anyon modules of \(D(\mathbb{Z}/2)\), with the left-hand side drawn as thetensor.CMapit contracts to:>>> D = Double(Algebra.cyclic(2)) >>> e = Representation[D].anyon(0, -1) >>> m = Representation[D].anyon(1, 1) >>> V = Representation[D].direct_sum([e, m]) >>> assert V.algebra == D >>> assert V.is_module() and V == Dim(2) >>> ty = V.action.cod >>> (D.mult @ ty >> V.action).to_map().draw( ... doctest='docs/_static/hopf/module.dot')
- tensor(*others)[source]#
The product of representations: the underlying spaces concatenate as for a
tensor.Dimand the product of modules acts through the comultiplication, \(\rho_{V \otimes W} = (\rho_V \otimes \rho_W) (\Delta \otimes 1_{V \otimes W})\). A plaintensor.Dimfactor is taken as the trivial representation.>>> D = Double(Algebra.cyclic(2)) >>> e = Representation[D].anyon(0, -1) >>> m = Representation[D].anyon(1, 1) >>> assert (e @ m).is_module() and (e @ Dim(2)).is_module()
- dual(antipode)[source]#
The dual module \(V^*\) with \(\rho^*(h) = \rho(S h)^T\) for the given
antipodediagram \(S\): thetranspose()of the twisted action, with the algebra wire bent back to the domain. The legs of \(V^*\) come out in reversed order.
- property r#
The right dual,
dual()for the antipode.>>> H = Algebra.sweedler() >>> assert Representation[H].regular().r.is_module()
- property l#
The left dual,
dual()for the inverse antipode — it differs fromrunless \(S^2 = 1\).>>> H = Algebra.sweedler() >>> assert Representation[H].regular().l.is_module()
- qdim()[source]#
The quantum dimension: the value of a loop coloured by
V, i.e. the (co)evaluation \(\cup \circ \cap\) inIntertwiner.
- is_module()[source]#
Whether
actionis a representation: the two module axioms hold as diagram equations — the action is associative overmultand unital overunit. See the axiom drawn in the class docstring.
- classmethod anyon(flux, charge)[source]#
A one-dimensional anyon module of the quantum double of a cyclic group algebra: the group element
e_aacts bycharge ** ain the flux sectorflux.
- classmethod direct_sum(reps)[source]#
The direct sum of modules over one algebra, acting block-diagonally.
>>> D = Double(Algebra.cyclic(2)) >>> e = Representation[D].anyon(0, -1) >>> m = Representation[D].anyon(1, 1) >>> V = Representation[D].direct_sum([e, m]) >>> assert V.is_module() and V == Dim(2)