To find out where it is hanging: press ctrl-c and you will be asked
Code:
// ** Interrupt at cmd:`$INVALID$` in line:' iwork=phi(iwork);'
abort after this command(a), abort immediately(r), print backtrace(b), continue(c) or quit Singular(q) ?
Answering with b presents the backtrace.
The problem here is that the routine simplifyIdeal from primdec.lib
does not work in char 2.
To fix it, substitute simplifyIdeal by
Code:
static proc simplifyIdeal(ideal i)
{
ASSUME(1, hasFieldCoefficient(basering) );
ASSUME(1, not isQuotientRing(basering) ) ;
ASSUME(1, hasGlobalOrdering(basering) ) ;
def r=basering;
int j,k;
map phi;
poly p;
ideal iwork=i;
ideal imap1=maxideal(1);
ideal imap2=maxideal(1);
if (char(r)!=2)
{
for(j=1;j<=nvars(basering);j++)
{
for(k=1;k<=ncols(i);k++)
{
if(deg(iwork[k]/var(j))==0)
{
p=-1/leadcoef(iwork[k]/var(j))*iwork[k];
imap1[j]=p+2*var(j);
phi=r,imap1;
iwork=phi(iwork);
iwork=subst(iwork,var(j),0);
iwork[k]=var(j);
imap1=maxideal(1);
imap2[j]=-p;
break;
}
}
}
}
return(iwork,imap2);
}