|
D.7.1.8 group_reynolds
Procedure from library finvar.lib (see finvar_lib).
- Usage:
- group_reynolds(G1,G2,...[,v]);
G1,G2,...: nxn <matrices> generating a finite matrix group, v: an
optional <int>
- Assume:
- n is the number of variables of the basering, g the number of group
elements
- Return:
- a <list>, the first list element will be a gxn <matrix> representing
the Reynolds operator if we are in the non-modular case; if the
characteristic is >0, minpoly==0 and the finite group non-cyclic the
second list element is an <int> giving the lowest common multiple of
the matrix group elements' order (used in molien); in general all
other list elements are nxn <matrices> listing all elements of the
finite group
- Display:
- information if v does not equal 0
- Theory:
- The entire matrix group is generated by getting all left products of
generators with the new elements from the last run through the loop
(or the generators themselves during the first run). All the ones that
have been generated before are thrown out and the program terminates
when no new elements found in one run. Additionally each time a new
group element is found the corresponding ring mapping of which the
Reynolds operator is made up is generated. They are stored in the rows
of the first return value.
Example:
| LIB "finvar.lib";
ring R=0,(x,y,z),dp;
matrix A[3][3]=0,1,0,-1,0,0,0,0,-1;
list L=group_reynolds(A);
print(L[1]);
==> y, -x,-z,
==> -x,-y,z,
==> -y,x, -z,
==> x, y, z
print(L[2..size(L)]);
==> 0, 1,0,
==> -1,0,0,
==> 0, 0,-1
==> -1,0, 0,
==> 0, -1,0,
==> 0, 0, 1
==> 0,-1,0,
==> 1,0, 0,
==> 0,0, -1
==> 1,0,0,
==> 0,1,0,
==> 0,0,1
|
|