#!/usr/bin/python # outputs Macaulay 2 Code for the ideal I_{mn} # as defined in Evans/Sturmfels/Uhler 08 import sys print "-- Macaulay 2 Code for the Commuting Birth and Death Ideal:" # Catching arguments: try: m = int(sys.argv[1]) n = int(sys.argv[2]) r = int(sys.argv[3]) except IndexError: print '-- Please give 3 integer arguments' m = 1; n = 1; r = 1; print ('-- m = %i ,n = %i , r=%i ' % (m,n,r)) # Generating the variable list: varlist = [] for i in range(m+1): for j in range (n+1): for k in range (r+1): if i0: varlist.append(''.join(["L",str(i),str(j),str(k)])) if j>0: varlist.append(''.join(["D",str(i),str(j),str(k)])) if j0: varlist.append(''.join(["B",str(i),str(j),str(k)])) # varlist = varlist.sort() s = "S = QQ[" s += ",".join(varlist) s += "];" print s # Generating the equations LR is i, UD is j, FB is k eqlist = [] for i in range(m): for j in range (n): for k in range (r): # UD-RL Pairs, k fixed. eqlist.append(''.join(["U",str(i),str(j),str(k),"*R",str(i),str(j+1),str(k),"-",\ "R",str(i),str(j),str(k),"*U",str(i+1),str(j),str(k)])) eqlist.append(''.join(["R",str(i),str(j+1),str(k),"*D",str(i+1),str(j+1),str(k),"-",\ "D",str(i),str(j+1),str(k),"*R",str(i),str(j),str(k)])) eqlist.append(''.join(["D",str(i+1),str(j+1),str(k),"*L",str(i+1),str(j),str(k),"-",\ "L",str(i+1),str(j+1),str(k),"*D",str(i),str(j+1),str(k)])) eqlist.append(''.join(["L",str(i+1),str(j),str(k),"*U",str(i),str(j),str(k),"-",\ "U",str(i+1),str(j),str(k),"*L",str(i+1),str(j+1),str(k)])) eqlist.append(''.join(["U",str(i),str(j),str(k+1),"*R",str(i),str(j+1),str(k+1),"-",\ "R",str(i),str(j),str(k+1),"*U",str(i+1),str(j),str(k+1)])) eqlist.append(''.join(["R",str(i),str(j+1),str(k+1),"*D",str(i+1),str(j+1),str(k+1),"-",\ "D",str(i),str(j+1),str(k+1),"*R",str(i),str(j),str(k+1)])) eqlist.append(''.join(["D",str(i+1),str(j+1),str(k+1),"*L",str(i+1),str(j),str(k+1),"-",\ "L",str(i+1),str(j+1),str(k+1),"*D",str(i),str(j+1),str(k+1)])) eqlist.append(''.join(["L",str(i+1),str(j),str(k+1),"*U",str(i),str(j),str(k+1),"-",\ "U",str(i+1),str(j),str(k+1),"*L",str(i+1),str(j+1),str(k+1)])) # UD-FB Pairs, i fixed eqlist.append(''.join(["U",str(i),str(j),str(k),"*F",str(i),str(j+1),str(k),"-",\ "F",str(i),str(j),str(k),"*U",str(i),str(j),str(k+1)])) eqlist.append(''.join(["F",str(i),str(j+1),str(k),"*D",str(i),str(j+1),str(k+1),"-",\ "D",str(i),str(j+1),str(k),"*F",str(i),str(j),str(k)])) eqlist.append(''.join(["D",str(i),str(j+1),str(k+1),"*B",str(i),str(j),str(k+1),"-",\ "B",str(i),str(j+1),str(k+1),"*D",str(i),str(j+1),str(k)])) eqlist.append(''.join(["B",str(i),str(j),str(k+1),"*U",str(i),str(j),str(k),"-",\ "U",str(i),str(j),str(k+1),"*B",str(i),str(j+1),str(k+1)])) eqlist.append(''.join(["U",str(i+1),str(j),str(k),"*F",str(i+1),str(j+1),str(k),"-",\ "F",str(i+1),str(j),str(k),"*U",str(i+1),str(j),str(k+1)])) eqlist.append(''.join(["F",str(i+1),str(j+1),str(k),"*D",str(i+1),str(j+1),str(k+1),"-",\ "D",str(i+1),str(j+1),str(k),"*F",str(i+1),str(j),str(k)])) eqlist.append(''.join(["D",str(i+1),str(j+1),str(k+1),"*B",str(i+1),str(j),str(k+1),"-",\ "B",str(i+1),str(j+1),str(k+1),"*D",str(i+1),str(j+1),str(k)])) eqlist.append(''.join(["B",str(i+1),str(j),str(k+1),"*U",str(i+1),str(j),str(k),"-",\ "U",str(i+1),str(j),str(k+1),"*B",str(i+1),str(j+1),str(k+1)])) # FB-RL-Pairs, j fixed eqlist.append(''.join(["F",str(i),str(j),str(k),"*R",str(i),str(j),str(k+1),"-",\ "R",str(i),str(j),str(k),"*F",str(i+1),str(j),str(k)])) eqlist.append(''.join(["R",str(i),str(j),str(k+1),"*B",str(i+1),str(j),str(k+1),"-",\ "B",str(i),str(j),str(k+1),"*R",str(i),str(j),str(k)])) eqlist.append(''.join(["B",str(i+1),str(j),str(k+1),"*L",str(i+1),str(j),str(k),"-",\ "L",str(i+1),str(j),str(k+1),"*B",str(i),str(j),str(k+1)])) eqlist.append(''.join(["L",str(i+1),str(j),str(k),"*F",str(i),str(j),str(k),"-",\ "F",str(i+1),str(j),str(k),"*L",str(i+1),str(j),str(k+1)])) eqlist.append(''.join(["F",str(i),str(j+1),str(k),"*R",str(i),str(j+1),str(k+1),"-",\ "R",str(i),str(j+1),str(k),"*F",str(i+1),str(j+1),str(k)])) eqlist.append(''.join(["R",str(i),str(j+1),str(k+1),"*B",str(i+1),str(j+1),str(k+1),"-",\ "B",str(i),str(j+1),str(k+1),"*R",str(i),str(j+1),str(k)])) eqlist.append(''.join(["B",str(i+1),str(j+1),str(k+1),"*L",str(i+1),str(j+1),str(k),"-",\ "L",str(i+1),str(j+1),str(k+1),"*B",str(i),str(j+1),str(k+1)])) eqlist.append(''.join(["L",str(i+1),str(j+1),str(k),"*F",str(i),str(j+1),str(k),"-",\ "F",str(i+1),str(j+1),str(k),"*L",str(i+1),str(j+1),str(k+1)])) s = 'I = ideal (' s += ",".join(eqlist) s += ");" print s