Input:Code:
LIB "primdec.lib";
LIB "linalg.lib";
LIB "teachstd.lib";
int n=3;
ring r=0,(x(1..n)(1..n),T),lp;
matrix M[n][n];
// generate a diagnoal matrix with variables as entries
// this is the general maximal torus
for(int j=1; j<=n; j=j+1){
for (int i=1; i<=n; i=i+1)
{
M[i,j]=0;
if(i==j)
{M[i,j]=x(i)(j);}
}}
// generate another maximal torus by conjugating
// with an invertible matrix N:
matrix N[n][n];
N[1,1..3]=1,1,1;
N[2,1..3]=0,1,1;
N[3,1..3]=0,0,1;
matrix S=inverse(N)*M*N;
// define the ideal generated by the matrix entries
ideal J=det(M)*T-1;
for(int j=1; j<=n; j=j+1){for(int i=1; i<=n; i=i+1){
J[i+j*n]=x(i)(j)-S[i,j];
}}
// as above to obtain another maximal torus
N[1,1..3]=1,0,0;
N[2,1..3]=1,1,0;
N[3,1..3]=1,1,1;
matrix S=inverse(N)*M*N;
ideal F=det(M)*T-1;
for(int j=1; j<=n; j=j+1){for(int i=1; i<=n; i=i+1){
F[i+j*n]=x(i)(j)-S[i,j];
}}
print("det(N)=");
det(N);
ideal H=intersect(J,F);
primdecGTZ(H);
NFMora(x(1)(1),H);
Output:Code:
det(N)=
1
[1]:
[1]:
_[1]=1
[2]:
_[1]=1
x(1)(3)-x(2)(1)+x(2)(2)
As I understand this output, it means, that the primary decomposition of the intersection of J and F is trivial (consist only of one pair (R,R), with R the whole ring). But also the intersection does not contain the polynomial x(1)(1), because the normalform leaves a non-zero remainder.