|  |  D.7.4.6 invar Procedure from libraryinvar.lib(see  invar_lib).
 
Example:Usage:
invar(<matrix>)
Returns:
If m is a n x n matrix with coefficients in the ring 'group',
representing the action on some vector space V, then invar(m);
gives polynomials in x(1),x(2),...,x(n) who generate the invariant
ring. The following global variables will be set:
polyring of type <ring> polynomial ring in x(1),...,x(n)
invring of type <ideal> entries generate the inv. ring
representation of type <matrix>
 The base ring will be set to 'polyring' which is a global
variable representing the polynomial ring on which the group acts.
The variable 'representation' will be set to the input m.
 
 |  | LIB "invar.lib";
SL(2);                          // Take the group SL_2
matrix m=dsum(SLrep,SLrep,SLrep,SLrep);
// 4 copies of the standard representation
invar(m);                       // empirical evidence for FFT
==> 
==> Ideal B:
==> x(6)*x(7)-x(5)*x(8)-y(6)*y(7)+y(5)*y(8),
==> x(4)*x(7)-x(3)*x(8)-y(4)*y(7)+y(3)*y(8),
==> x(2)*x(7)-x(1)*x(8)-y(2)*y(7)+y(1)*y(8),
==> x(4)*x(5)-x(3)*x(6)-y(4)*y(5)+y(3)*y(6),
==> x(2)*x(5)-x(1)*x(6)-y(2)*y(5)+y(1)*y(6),
==> x(2)*x(3)-x(1)*x(4)-y(2)*y(3)+y(1)*y(4),
==> x(8)*y(4)*y(5)-x(8)*y(3)*y(6)-x(6)*y(4)*y(7)+x(4)*y(6)*y(7)+x(6)*y(3)*y(8\
   )-x(4)*y(5)*y(8),
==> x(7)*y(4)*y(5)-x(7)*y(3)*y(6)-x(5)*y(4)*y(7)+x(3)*y(6)*y(7)+x(5)*y(3)*y(8\
   )-x(3)*y(5)*y(8),
==> x(8)*y(2)*y(5)-x(8)*y(1)*y(6)-x(6)*y(2)*y(7)+x(2)*y(6)*y(7)+x(6)*y(1)*y(8\
   )-x(2)*y(5)*y(8),
==> x(7)*y(2)*y(5)-x(7)*y(1)*y(6)-x(5)*y(2)*y(7)+x(1)*y(6)*y(7)+x(5)*y(1)*y(8\
   )-x(1)*y(5)*y(8),
==> x(8)*y(2)*y(3)-x(8)*y(1)*y(4)-x(4)*y(2)*y(7)+x(2)*y(4)*y(7)+x(4)*y(1)*y(8\
   )-x(2)*y(3)*y(8),
==> x(7)*y(2)*y(3)-x(7)*y(1)*y(4)-x(3)*y(2)*y(7)+x(1)*y(4)*y(7)+x(3)*y(1)*y(8\
   )-x(1)*y(3)*y(8),
==> x(6)*y(2)*y(3)-x(6)*y(1)*y(4)-x(4)*y(2)*y(5)+x(2)*y(4)*y(5)+x(4)*y(1)*y(6\
   )-x(2)*y(3)*y(6),
==> x(5)*y(2)*y(3)-x(5)*y(1)*y(4)-x(3)*y(2)*y(5)+x(1)*y(4)*y(5)+x(3)*y(1)*y(6\
   )-x(1)*y(3)*y(6)
==> 
==> Zero Fiber Ideal:
==> x(6)*x(7)-x(5)*x(8),
==> x(4)*x(7)-x(3)*x(8),
==> x(2)*x(7)-x(1)*x(8),
==> x(4)*x(5)-x(3)*x(6),
==> x(2)*x(5)-x(1)*x(6),
==> x(2)*x(3)-x(1)*x(4)
==> 
==> Generating Invariants:
==> x(6)*x(7)-x(5)*x(8),
==> x(4)*x(7)-x(3)*x(8),
==> x(2)*x(7)-x(1)*x(8),
==> x(4)*x(5)-x(3)*x(6),
==> x(2)*x(5)-x(1)*x(6),
==> x(2)*x(3)-x(1)*x(4)
setring Invar::polyring;
Invar::reynolds(x(1)*x(4));            // The reynolds operator is computed using
==> -1/2*x(2)*x(3)+1/2*x(1)*x(4)
// the Omega process.
 | 
 
 |