n=4;
h = [2,3,4,4];
perm = permutations(n);
x1=var('x1');
x2=var('x2');
x3=var('x3');
x4=var('x4');
x5=var('x5');
t=var('t');
a=var('a');
b=var('b');
c=var('c');
d=var('d');
e=var('e');
f=var('f');
R=QQ[x1,x2,x3,x4,x5,t,a,b,c,d,e,f];
Schubideallist=[];
inversepermlist=[];
for pindex in range (factorial(n)):
pin=[];
p = perm[pindex];
for index2 in range(n):
for index1 in range(n):
if p[index1]== index2+1:
pin.append(index1+1)
inversepermlist.append(pin)
hessperm=[];
for index1 in range (factorial(n)):
append=1;
for index2 in range(n-1):
if inversepermlist[index1][index2] > h[inversepermlist[index1][index2+1]-1]:
append=0;
if append==1:
hessperm.append(perm[index1])
inversehessperm=[];
for index in range (len(hessperm)):
inversehessperm.append(hessperm[index].inverse())
for index in range(len(hessperm)):
inversionlist=[];
for index1 in range (n):
for index2 in range (index1+1,n):
if inversehessperm[index][index1] >= inversehessperm[index][index2]:
inversionlist.append((inversehessperm[index][index2],inversehessperm[index][index1]));
inversionlist;
for index in range(len(hessperm)):
dimprlist=[];
nondprlist=[];
for index1 in range (n):
for index2 in range (index1+1,n-1):
if inversehessperm[index][index1] > inversehessperm[index][index2]:
if inversehessperm[index][index1]<= h[inversehessperm[index][index2+1]-1]:
dimprlist.append([inversehessperm[index][index2],inversehessperm[index][index1]])
else:
nondprlist.append([inversehessperm[index][index2],inversehessperm[index][index1]])
for index2 in range (n-1,n):
if inversehessperm[index][index1] > inversehessperm[index][index2]:
dimprlist.append([inversehessperm[index][index2],inversehessperm[index][index1]])
varb=[];
for index in range (len(dimprlist)):
varb.append(var('x'+str(dimprlist[index][0])));
perm = permutations(n);
inversepermlist=[];
for pindex in range (factorial(n)):
pin=[];
p = perm[pindex];
for index2 in range(n):
for index1 in range(n):
if p[index1]== index2+1:
pin.append(index1+1)
inversepermlist.append(pin)
print "Number of fixed points:",len(hessperm);
for index5 in range(len(hessperm)):
print hessperm[index5];
indlist1=[];
for index4 in range(0,len(hessperm)):
p=hessperm[index4]
w=hessperm[index4]
variables=[]
for row in range(n):
variables.append([]);
for column in range(n):
variables[row].append(var('z'+str(n-row)+str(column+1)))
variables
for column in range (n):
variables[p[column]-1][column]=1
for column_prime in range (column+1,n):
variables[p[column]-1][column_prime]=0
M = matrix(variables);
M1=M
e=[]
zero_vector=list(0 for dummy in range(n))
for i in range (n):
zero_vector[i]=1;
e.append(vector(zero_vector));
zero_vector[i]=0;
s=e[n-1:n]
for index in range(0,n-1):
s.append(vector(zero_vector))
N=matrix([[0, 1, 0,0],[0,0,1,0],[0,0,0,1],[0,0,0,0]])
for index in range (n):
if h[index]<n and h[index+1]==n:
h1=index+1;
a=[];
for row in range(h1):
a.append([])
for column in range(h[row]):
a[row].append(var('a'+str(row+1)+str(column+1)))
alpha=a;
a1=[0];
for index in range(h1):
a1.append(a1[index]+h[index])
X=[];
for i in range(h1):
X.append([]);
X[i]=vector(zero_vector)
for j in range (h[i]):
X[i]=X[i]+a[i][j]*M1*e[j]
poly=[];
for j in range(h1):
poly.append([]);
for i in range(n):
poly[j].append(e[i]*N*M1*e[j] == e[i]*X[j]);
polyls=[];
polyls2=[];
solvestring=''
for row in range (h1):
for i in range(h[row]):
polyls.append(poly[row][p[i]-1]);
if not(row==0) or not (i==0):
solvestring=solvestring+','
solvestring=solvestring+('a'+str(row+1)+str(i+1))
for j in range(h[row],n):
polyls2.append(poly[row][p[j]-1]);
exec('a=solve(polyls,'+solvestring+')');
b=polyls2;
for index2 in range (len(b)):
for index1 in range(h1):
for index in range (h[index1]):
b[index2]=b[index2].subs(a[0][a1[index1]+index])
R=singular.ring(0,'(z55,z54,z53,z52,z51,z45,z44,z43,z42,z41,z35,z34,z33,z32,z31,z25,z24,z23,z22,z21,z15,z14,z13,z12,z11,a,b,c)','dp');
f=[];
for index in range (len(b)):
f.append(singular(-b[index].lhs()+b[index].rhs()));
singular.lib('primdec.lib')
I = singular.ideal(str(f));
IR= singular.radical(I);
S=singular.ring(0,'(z55,z54,z53,z52,z51,z45,z44,z43,z42,z41,z35,z34,z33,z32,z31,z25,z24,z23,z22,z21,z15,z14,z13,z12,z11,a,b,c)','ds');
IS = singular.fetch(R,IR);
J = singular.std(IS);
singular.lib('sing.lib');
KS=singular.ideal(str(f))
IN = singular.tangentcone(IS);
print singular.eval("hilb(%s)"%IN.name())
mult=singular.mult(J);
if mult!=0:
print "perm=", p;
print "multiplicity:", mult;
print "I_w:"
print "ideal(", KS ,");" ;
print "tangent cone" ;
print "ideal(", IN, ");";
print "multiplicity;"
print mult;
WARNING: Output truncated!
Number of fixed points: 8
[1, 2, 3, 4]
[1, 2, 4, 3]
[1, 3, 2, 4]
[1, 4, 3, 2]
[2, 1, 3, 4]
[2, 1, 4, 3]
[3, 2, 1, 4]
[4, 3, 2, 1]
// ** sage138 is no standard basis
// 1 t^0
// -1 t^1
// -2 t^2
// 2 t^3
// 1 t^4
// -1 t^5
// 1 t^0
// 2 t^1
// 1 t^2
// dimension (local) = 25
// multiplicity = 4
perm= [1, 2, 3, 4]
multiplicity: 4
I_w:
ideal( -z11+z31*z21+z22*z21-z31^2*z22,
z21*z12+z31*z11-z31^2*z12,
z11-z21*z13-z31*z12+z22*z12+z13*z12+z31*z22*z13-z22^2*z13 );
tangent cone
ideal( z11,
z31*z21+z22*z21-z21*z13-z31*z12+z22*z12+z13*z12,
z21*z12-z22*z11,
z31*z12^2-z22*z12^2-z13*z12^2-z31*z22*z11-z22^2*z11+z22*z13*z11 );
multiplicity;
4
// ** sage153 is no standard basis
// 1 t^0
// -2 t^1
// 2 t^3
// -1 t^4
// 1 t^0
// 1 t^1
// dimension (local) = 25
// multiplicity = 2
perm= [1, 2, 4, 3]
multiplicity: 2
I_w:
ideal( z21*z12+z31*z11-z31^2*z12,
-z11+z31*z21+z22*z21-z31^2*z22,
z21-z12-z31*z22+z22^2-z23*z11+z31*z23*z12-z23*z22*z12 );
tangent cone
ideal( z21-z12,
z11,
z12^2+z31*z11 );
multiplicity;
2
// ** sage168 is no standard basis
// 1 t^0
...
// -1 t^4
// 1 t^0
// 1 t^1
// dimension (local) = 25
// multiplicity = 2
perm= [2, 1, 4, 3]
multiplicity: 2
I_w:
ideal( z12+z21*z11-z41*z21*z12,
z22-z11+z21^2-z41*z22*z21,
-z12+z22*z21-z41*z22^2-z23*z22*z11+z41*z23*z22*z12 );
tangent cone
ideal( z22-z11,
z12,
2*z21*z11 );
multiplicity;
2
// ** sage228 is no standard basis
// 1 t^0
// -3 t^1
// 3 t^2
// -1 t^3
// 1 t^0
// dimension (local) = 25
// multiplicity = 1
perm= [3, 2, 1, 4]
multiplicity: 1
I_w:
ideal( z42-z31+z41*z11-z42*z31*z11,
z12+z11^2-z31*z12*z11,
z13+z12*z11-z41*z13*z12-z31*z12^2+z42*z31*z13*z12 );
tangent cone
ideal( z42-z31,
z13,
z12 );
multiplicity;
1
// ** sage243 is no standard basis
// 1 t^0
// -3 t^1
// 3 t^2
// -1 t^3
// 1 t^0
// dimension (local) = 25
// multiplicity = 1
perm= [4, 3, 2, 1]
multiplicity: 1
I_w:
ideal( z32-z21,
z42-z31,
z43-z32 );
tangent cone
ideal( z43-z32,
z42-z31,
z32-z21 );
multiplicity;
1