Opened 14 years ago

Closed 11 years ago

#142 closed task (wontfix)

initial ideals contain 0 as generator, e.g. Koszul homology = zero

Reported by: seelisch Owned by: somebody
Priority: minor Milestone: 3-1-1
Component: dontKnow Version: 3-1-0
Keywords: ideal zero generator Cc: Winfried.Bruns@…

Description

ideal i; will contain zero as sole generator; may be ok i = i, x2; will still contain zero as one of two generators

Should initial ideal not have an empty set of generators?

Similar initialization issues apply for other data types.

Change History (6)

comment:1 Changed 14 years ago by seelisch

Milestone: Releases 3-1-1 and higher

comment:2 in reply to:  description Changed 14 years ago by gorzel

Resolution: wontfix
Status: newclosed

Replying to seelisch:

ideal i; will contain zero as sole generator; may be ok i = i, x2; will still contain zero as one of two generators

Should initial ideal not have an empty set of generators?

Similar initialization issues apply for other data types.

Hier besteht doch kein Problem.

1.) Alle Variablen werden von Singular inititialisiert.

int's, number's sind Null, ideal, matrizen usw. ebenso

2.) Die Zuweisung

> ring r;
> ideal i;
> i = i,x2;
> i;
i[1]=0
i[2]=x2

funktioniert zwar, korrekterweise werden weitere Erzeuger fuer ein

ideal mit + zugefuegt.

> ideal J = i +xy +ideal(z,y);
> J;
J[1]=x2
J[2]=xy
J[3]=z
J[4]=y

3.) Wie gesehen, werden hierbei Nullen und doppelte Eintraege entfernt.

So ergibt auch eine Addition von Null

> i=i+0;
> i;
i[1]=x2

das gewuenschte.

comment:3 Changed 14 years ago by seelisch

Resolution: wontfix
Status: closedreopened
Summary: initial ideals contain 0 as generatorinitial ideals contain 0 as generator, e.g. Koszul homology = zero

mail from June 29, 2009: problem with zero moduls / zero ideals:

Lieber Herr Seelisch,

ich möchte im Zusammenhang mit der Null-Problematik auf ein echtes Problem aufmerksam machen:

ring R=2,(x,y),dp; ideal I=x,y; module M=0; module K=KoszulHomology?(I,M,1); hilb(K);

1 t0

1 t0 dimension (proj.) = 1 degree (proj.) = 1

Die fragliche Koszulhomologie ist 0, aber in komplexeren Situationen weiß ich dies a priori vielleicht nicht. Als Hilbert-Funktion erhalte ich die von R --- fraglos ein Fehler. KoszulHomology? liefert die 1x1-Matrix zurück, der einziger Eintrag die 0 ist. Diese Matrix wiederum repräsentiert R1/(0) \iso R, und hilb berechnet dann die Hilbert-Funktion für R. Richtig wäre natürlich, dass KoszulHomology? die 1x1-Matrix mit Eintrag 1 zurückgibt, wenn die Koszulhomologie verschwindet.: R1/(1)\iso 0.

Man könnte natürlich sagen, dass KoszulHomology? das falsche Ergebnis liefert. Das Problem scheint mir aber tiefer zu liegen: Ich weiß nicht, ob Singular eine Konvention hat, wie der Nullmodul darzustellen ist. Die 1x1-Matrix mit Einrag 0 ist jedenfalls hochgefährlich (genauer gesagt: falsch), und die Lösung mit 1 ist zwar korrekt, aber suboptimal. Besser wäre die 0x0-Matrix, die aber Singular wohl nicht kennt.

Gruß,

  1. Bruns

comment:4 Changed 13 years ago by seelisch

Owner: changed from seelisch to somebody
Status: reopenednew

to be discussed in team, whether to be considered or not

comment:5 in reply to:  4 Changed 13 years ago by gorzel

Cc: Winfried.Bruns@… added

Replying to seelisch:

to be discussed in team, whether to be considered or not

Das Problem kann/sollte einfach wie folgt geloest werden:

Der Nullmodul ist einfach der Nullvektor und nicht eine 1x1 -Nullmatrix matrix.

Das besondere am Datentyp vector ist auch noch, dass es der einzige Typ ist der, falls 0, ein mit 0 indiziertes Slot hat.

Vergleiche:

 ring r=0,(x,y),dp;
 module M;
 M;        // 1x1 - Nullmatrix
 nrows(M);  // 1
 ncols(M);  // 1

 vector v;  // Der Nullvector
 ncols(v);  // 1
 nrows(v);  // 0
 v[0];      // 0

Mittels

 if (nrows(obj) == 0) 
 {  
   "it is the zero module";     
 }

oder ausfuehrlicher

 if (typedef(obj)=="vector" and nrows(obj)==0) 
 {  
   "it is the zero module";     
 }

laesst sich der Nullmodul d.h. der Nullvector, d.h. die Null von einer nxn-Nullmatrix unterscheiden.

In proc Koszul aus homolog.lib ist also anstelle von

 if (p>n)
 {
   module hom=0;
   return(hom);
 }
 vector nullv =0;
 return(nullv);

zurueckzugeben.

Dann nach der Zuweisung

 def d = Koszul(..);

wie oben beschrieben, der Null-modul richtig erkennen.

Es bliebe evtl. noch hilb( ) anzupassen, so dass es bei Konstanten nicht eine unnoetige Warnung gibt.

> hilb(0);
// ** _ is no standard basis
//         1 t^0

//         1 t^0
// dimension (proj.)  = 1
// degree (proj.)   = 1

> hilb(std(0));   // hilb(std(v));  // v vector, v==0
//         1 t^0

//         1 t^0
// dimension (proj.)  = 1
// degree (proj.)   = 1
> 

> hilb(1);
// ** _ is no standard basis

// dimension (affine) = 0
// degree (affine)  = 0

comment:6 Changed 11 years ago by barakat

Resolution: wontfix
Status: newclosed

Hans: this depends on the type "ideal" in current Singular. And adding this proposal means "changing too much in Singular". It doesn't help to allow empty matrices (0xn or nx0 matrices).

Note: See TracTickets for help on using tickets.