GaloisMat( mat )
mat must be a matrix of cyclotomics (or possibly unknowns, see Unknown). The conjugate of a row in mat under a particular Galois automorphism is defined pointwise. If mat consists of full orbits under this action then the Galois group of its entries acts on mat as a permutation group, otherwise the orbits must be completed before.
GaloisMat( mat ) returns a record with fields mat, galoisfams
and generators:
mat:mat have identical
entries.
galoisfams:mat; its entries are either
1, 0, -1 or lists:mat[i]
consists of rationals, i.e. [ 'mat[i]' ] forms an orbit.mat[i] contains unknowns; in
this case [ 'mat[i]' ] is regarded as an orbit, too, even if
mat[i] contains irrational entries.mat[i] is the first element of its
orbit in mat; l_1 is the list of positions of rows which
form the orbit, and l_2 is the list of corresponding Galois
automorphisms (as exponents, not as functions); so we have
'mat'[ l_1[j] ][k] = 'GaloisCyc'( 'mat'[i][k], l_2[j] ).mat[i] is an element of a
nontrivial orbit but not the first element of it.
generators:mat.
Note that mat should be a set, i.e. no two rows should be equal. Otherwise only the first row of some equal rows is considered for the permutations, and a warning is printed.
gap> GaloisMat( [ [ E(3), E(4) ] ] );
rec(
mat := [ [ E(3), E(4) ], [ E(3), -E(4) ], [ E(3)^2, E(4) ],
[ E(3)^2, -E(4) ] ],
galoisfams := [ [ [ 1, 2, 3, 4 ], [ 1, 7, 5, 11 ] ], 0, 0, 0 ],
generators := [ (1,2)(3,4), (1,3)(2,4) ] )
gap> GaloisMat( [ [ 1, 1, 1 ], [ 1, E(3), E(3)^2 ] ] );
rec(
mat := [ [ 1, 1, 1 ], [ 1, E(3), E(3)^2 ], [ 1, E(3)^2, E(3) ] ],
galoisfams := [ 1, [ [ 2, 3 ], [ 1, 2 ] ], 0 ],
generators := [ (2,3) ] )
GAP 3.4.4