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
Milestone: | → Releases 3-1-1 and higher |
---|
comment:2 Changed 14 years ago by
Resolution: | → wontfix |
---|---|
Status: | new → closed |
comment:3 Changed 14 years ago by
Resolution: | wontfix |
---|---|
Status: | closed → reopened |
Summary: | initial ideals contain 0 as generator → initial 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ß,
- Bruns
comment:4 follow-up: 5 Changed 13 years ago by
Owner: | changed from seelisch to somebody |
---|---|
Status: | reopened → new |
to be discussed in team, whether to be considered or not
comment:5 Changed 13 years ago by
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
Resolution: | → wontfix |
---|---|
Status: | new → closed |
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).
Replying to seelisch:
1.) Alle Variablen werden von Singular inititialisiert.
2.) Die Zuweisung
3.) Wie gesehen, werden hierbei Nullen und doppelte Eintraege entfernt.
So ergibt auch eine Addition von Null
das gewuenschte.