Goto Chapter: Top 1 2 3 4 5 6 Ind

### 3 Algorithms for unitary representations

#### 3.1 Unitarising representations

##### 3.1-1 UnitaryRepresentation
 ‣ UnitaryRepresentation( rho ) ( function )

Returns: A record with fields basis_change and unitary_rep such that rho is isomorphic to unitary_rep, differing by a change of basis basis_change. Meaning if $$L$$ is basis_change and $$\rho_u$$ is the unitarised rho, then $$\forall g \in G: \; L \rho_u(g) L^{-1} = \rho(g)$$.

Unitarises the given representation quickly, summing over the group using a base and strong generating set and unitarising with LDLDecomposition (3.1-3).

gap> G := SymmetricGroup(3);;
gap> irreps := IrreducibleRepresentations(G);;
gap> # It happens that we are given unitary irreps, so
> # rho is also unitary (its blocks are unitary)
> rho := DirectSumOfRepresentations([irreps[1], irreps[2]]);;
gap> IsUnitaryRepresentation(rho);
true
gap> # Arbitrary change of basis
> A := [ [ -1, 1 ], [ -2, -1 ] ];;
gap> tau := ComposeHomFunction(rho, x -> A^-1 * x * A);;
gap> # Not unitary, but still isomorphic to rho
> IsUnitaryRepresentation(tau);
false
gap> AreRepsIsomorphic(rho, tau);
true
gap> # Now we unitarise tau
> tau_u := UnitaryRepresentation(tau);;
gap> # We get a record with the unitarised rep:
> AreRepsIsomorphic(tau, tau_u.unitary_rep);
true
gap> AreRepsIsomorphic(rho, tau_u.unitary_rep);
true
gap> # The basis change is also in the record:
> ForAll(G, g -> tau_u.basis_change * Image(tau_u.unitary_rep, g) = Image(tau, g) * tau_u.basis_change);
true


##### 3.1-2 IsUnitaryRepresentation
 ‣ IsUnitaryRepresentation( rho ) ( function )

Returns: Whether rho is unitary, i.e. for all $$g \in G$$, $$\rho(g^{-1}) = \rho(g)^*$$ (where $$^*$$ denotes the conjugate transpose).

gap> # TODO: this example


##### 3.1-3 LDLDecomposition
 ‣ LDLDecomposition( A ) ( function )

Returns: a record with two fields, L and D such that $$A = L\mbox{diag}(D)L^*$$. $$D$$ is the $$1 \times n$$ vector which gives the diagonal matrix $$\mbox{diag}(D)$$ (where A is an $$n \times n$$ matrix).

gap> A := [ [ 3, 2*E(3)+E(3)^2, -3 ], [ E(3)+2*E(3)^2, -3, 3 ], [ -3, 3, -6 ] ];;
gap> # A is a conjugate symmetric matrix
> A = ConjugateTranspose@RepnDecomp(A);
true
gap> # Note that A is not symmetric - the LDL decomposition works for any
> # conjugate symmetric matrix.
> A = TransposedMat(A);
false
gap> decomp := LDLDecomposition(A);;
gap> # The LDL decomposition is such that A = LDL^*, D diagonal, and L lower triangular.
> A = decomp.L * DiagonalMat(decomp.D) * ConjugateTranspose@RepnDecomp(decomp.L);
true
gap> decomp.L[1][2] = 0 and decomp.L[1][3] = 0 and decomp.L[2][3] = 0;
true


#### 3.2 Decomposing unitary representations

##### 3.2-1 IrreducibleDecompositionDixon
 ‣ IrreducibleDecompositionDixon( rho ) ( function )

Returns: a list of irreps in the decomposition of rho

NOTE: this is not implemented yet. Assumes that rho is unitary and uses an algorithm due to Dixon to decompose it into unitary irreps.

Goto Chapter: Top 1 2 3 4 5 6 Ind

generated by GAPDoc2HTML