67.12 IsTensor

IsTensor( G [, factorisations] )

IsTensor takes as input a matrix group G and seeks to decide whether or not G preserves a non-trivial tensor decomposition of the underlying vector space.

The implementation currently demands that G acts irreducibly, although this is not an inherent requirement of the algorithm.

The second optional argument is a list of possible factorisations of d, the dimension of G. For each [r, s] in this list where rs = d, the function seeks to decide whether G preserves a non-trivial tensor decomposition of the underlying space as the tensor product of two spaces of dimensions r and s.

The function returns a list containing three values: a boolean, a G-module record, module, for G, and a change-of-basis matrix which exhibits the decomposition (if one is found). If the boolean is false, then G is not a tensor product. If the boolean is true, then G is a tensor product and the second argument in the list are the two tensor factors.

If IsTensor cannot decide whether G or not preserves a tensor decomposition, then it returns "unknown". The second entry returned is now the list of unresolved tensor factorisations.

    gap> ReadDataPkg ("matrix", "data", "a5xa5d25.gap");
    gap> x:=IsTensor (G);;
    gap> x[1];
    true
    gap> #Hence we have found a tensor decomposition.

gap> #Set up the two factors gap> U := x[2][1];; gap> W := x[2][2];;

gap> DisplayMat (GeneratorsFlag (U)); 4 1 5 2 4 5 4 3 6 2 2 2 4 5 6 . 1 5 6 4 5 2 6 3 .

. 5 1 4 2 1 4 4 5 . 3 3 6 5 4 6 5 6 3 3 . 4 1 2 1

3 1 3 2 6 1 4 2 6 3 . . 4 . . 5 4 2 3 2 4 1 6 4 4

6 3 1 6 6 6 3 5 1 4 3 3 5 1 . 2 6 2 1 2 4 4 . 4 6

gap> ReadDataPkg ("matrix", "data", "a5d4.gap");

gap> x := IsTensor (G); [ false, [ ], "undefined" ] gap> #Hence not a tensor product

The algorithm is described in [8, 9]. Since a complete implementation requires basic tools which are not yet available in GAP, the performance of this function is currently seriously limited.

KroneckerFactors( g, d1, d2 [,F] )

KroneckerFactors decides whether or not a matrix g can be written as the Kronecker product of two matrices A and B of dimension d1 and d2, respectively. If the field F is not supplied, it is taken to be Field (Flat (g)). The function returns either the pair [A, B] or false.

Previous Up Top Next
Index

GAP 3.4.4
April 1997