TransformingPermutations( mat1, mat2
)
tries to construct a permutation pi that transforms
the set of rows of the matrix mat1 to the set of rows of the
matrix mat2 by permutation of columns. If such a permutation
exists, a record with fields columns, rows and
group is returned, otherwise false:
If TransformingPermutations(
mat1, mat2 ) = r not=
false then
Permuted( List(mat1,x->Permuted(x,r.columns)),r.rows
) = mat2,
and r.group is the group of matrix automorphisms of
mat2; this group stabilizes the transformation, i.e. for g
in that group and pi the value of the columns
field, also pig would be a valid permutation of
columns.
gap> mat1:= CharTable( "Alternating", 5 ).irreducibles;
[ [ 1, 1, 1, 1, 1 ], [ 4, 0, 1, -1, -1 ], [ 5, 1, -1, 0, 0 ],
[ 3, -1, 0, -E(5)-E(5)^4, -E(5)^2-E(5)^3 ],
[ 3, -1, 0, -E(5)^2-E(5)^3, -E(5)-E(5)^4 ] ]
gap> mat2:= CharTable( "A5" ).irreducibles;
[ [ 1, 1, 1, 1, 1 ], [ 3, -1, 0, -E(5)-E(5)^4, -E(5)^2-E(5)^3 ],
[ 3, -1, 0, -E(5)^2-E(5)^3, -E(5)-E(5)^4 ], [ 4, 0, 1, -1, -1 ],
[ 5, 1, -1, 0, 0 ] ]
gap> TransformingPermutations( mat1, mat2 );
rec(
columns := (),
rows := (2,4)(3,5),
group := Group( (4,5) ) )