Define BI(m) -- build the polynomial corresponding to the interval [1,log(m)] TopLevel CurrentRing; N:=NumIndets(CurrentRing); L1:=indets(CurrentRing); Images:=NewList(N); For i:=1 To N Do Images[i]:=L1[i]+1; EndFor; phi := PolyAlgebraHom(CurrentRing,CurrentRing , Images); G := support(phi(m)); Return sum(G) ; EndDefine; --BI -- 1) M = m, n =5 N:=5; Use S::=QQ[x[1..N]]; g:=x[1]*x[2]*x[3]*x[4]*x[5]; s:=3; P:=BI(g)-1; t0:=CpuTime(); Start(g,s,P); PrintLn "Time: ",DecimalStr(CpuTime()-t0); -- 2) M = m, n = 6 N:=6; Use S::=QQ[x[1..N]]; g:=x[1]*x[2]*x[3]*x[4]*x[5]*x[6]; s:=4; P:=BI(g)-1; t0:=CpuTime(); Start(g,s,P); PrintLn "Time: ",DecimalStr(CpuTime()-t0); -- 3) M = m, n = 7 N:=7; Use S::=QQ[x[1..N]]; g:=x[1]*x[2]*x[3]*x[4]*x[5]*x[6]*x[7]; s:=4; P:=BI(g)-1; t0:=CpuTime(); Start(g,s,P); PrintLn "Time: ",DecimalStr(CpuTime()-t0); -- 4) M = m, n = 8 N:=8; Use S::=QQ[x[1..N]]; g:=x[1]*x[2]*x[3]*x[4]*x[5]*x[6]*x[7]*x[8]; s:=4; P:=BI(g)-1; t0:=CpuTime(); Start(g,s,P); PrintLn "Time: ",DecimalStr(CpuTime()-t0); -- 5) M = m, n = 9 N:=9; Use S::=QQ[x[1..N]]; g:=x[1]*x[2]*x[3]*x[4]*x[5]*x[6]*x[7]*x[8]*x[9]; s:=5; P:=BI(g)-1; t0:=CpuTime(); Start(g,s,P); PrintLn "Time: ",DecimalStr(CpuTime()-t0); -- 6) M = m, n = 10 N:=10; Use S::=QQ[x[1..N]]; g:=x[1]*x[2]*x[3]*x[4]*x[5]*x[6]*x[7]*x[8]*x[9]*x[10]; s:=5; P:=BI(g)-1; t0:=CpuTime(); Start(g,s,P); PrintLn "Time: ",DecimalStr(CpuTime()-t0); -- 7) M = m, n = 11 N:=11; Use S::=QQ[x[1..N]]; g:=x[1]*x[2]*x[3]*x[4]*x[5]*x[6]*x[7]*x[8]*x[9]*x[10]*x[11]; s:=6; P:=BI(g)-1; t0:=CpuTime(); Start(g,s,P); PrintLn "Time: ",DecimalStr(CpuTime()-t0); -- 8) M = m, n = 12 N:=12; Use S::=QQ[x[1..N]]; g:=x[1]*x[2]*x[3]*x[4]*x[5]*x[6]*x[7]*x[8]*x[9]*x[10]*x[11]*x[12]; s:=6; P:=BI(g)-1; t0:=CpuTime(); Start(g,s,P); PrintLn "Time: ",DecimalStr(CpuTime()-t0); -- 9) M = m, n = 13 N:=13; Use S::=QQ[x[1..N]]; g:=x[1]*x[2]*x[3]*x[4]*x[5]*x[6]*x[7]*x[8]*x[9]*x[10]*x[11]*x[12]*x[13]; s:=7; P:=BI(g)-1; t0:=CpuTime(); Start(g,s,P); PrintLn "Time: ",DecimalStr(CpuTime()-t0) -- 10) M = R^2 + m, n = 4 N:=4; Use S::=QQ[x[1..N]]; g:=x[1]*x[2]*x[3]*x[4]; s:=3; P:=3*BI(g)-1; t0:=CpuTime(); Start(g,s,P); PrintLn "Time: ",DecimalStr(CpuTime()-t0); -- 11) M = R + m, n = 6 N:=6; Use S::=QQ[x[1..N]]; g:=x[1]*x[2]*x[3]*x[4]*x[5]*x[6]; s:=4; P:=2*BI(g)-1; t0:=CpuTime(); Start(g,s,P); PrintLn "Time: ",DecimalStr(CpuTime()-t0);