Opened 13 years ago

Closed 13 years ago

#159 closed bug (fixed)

bug in NF? (ring = sum of two quotient rings)

Reported by: simon king Owned by: hannes
Priority: major Milestone: 3-1-1
Component: singular-kernel Version: 3-1-0
Keywords: NF, quotient ring Cc: simon.king@…

Description

Simon King wrote (Aug 22, 2009):

Ich habe glaube ich gerade einen Bug in NF entdeckt.

Der Anhang "kerneltest.sing" definiert zunaechst Quotientenringe Q1, Q2 mit Matrixordnung.

def Q = Q1+Q2;

In Q wird ein Ideal t definiert, wobei t einfach aus den Variablen von Q1 besteht, d.h. ideal t = a_1_0, b_1_1, b_2_1, b_2_2, b_2_3, b_3_4, b_3_5, c_4_8;

Und dann kommt der Hammer:

NF(b_2_1,std(t));

b_2_1

b_2_1==t[3];

1

Das heisst: Obwohl b_2_1 als Erzeuger in t vorkommt, wird es nicht wegreduziert!

Seltsamerweise klappt dies:

NF(b_2_1,std(ideal(t[3])));

0

NF(b_2_1,std(ideal(t[2..3])));

0

NF(b_2_1,std(ideal(t[1..3])));

0

Aber dies klappt nicht:

NF(b_2_1,std(ideal(t[3..5])));

b_2_1

Was passiert da? Sind Summen von Quotientenringen in Singular ein Problem?

Die Matrizen, welche die Matrixordnung definieren, sind jedenfalls von vollem Rang, das habe ich geprueft.

Viele Gruesse Simon

Attachments (1)

kerneltest.sing (1.2 KB) - added by seelisch 13 years ago.

Download all attachments as: .zip

Change History (8)

Changed 13 years ago by seelisch

Attachment: kerneltest.sing added

comment:1 Changed 13 years ago by Simon King

(perhaps better switch to English)

I forgot to indicate the Singular version I was using: It is Singular 3-1-0 as it comes with Sage 4.1.

Best regards, Simon

comment:2 Changed 13 years ago by Oleksandr

Cc: simon.king@… added

This seems to be a very subtle issue: almost any change to the procedure eliminates the bug :( I'd assume this to be a rear side effect of an interplay between quotient structure, ring sum structure and matrix orderings...

As a workaround i'd suggest to simulate factor algebra e.g. as follows:

def R = R1 + R2; setring R;
ideal I = std(imap(R1, I) + imap(R2, I) );

ideal t = a_1_0, b_1_1, b_2_1, b_2_2, b_2_3, b_3_4, b_3_5, c_4_8; 

NF( t[3], std( I + t ) ); // Zero!!!

qring Q = I; ideal t = imap(R, t); NF( t[3], std(t) ); // BUG :(

Please let us know about your findings related to this issues.

Does this bug appears in any noncommutative setting?

comment:3 Changed 13 years ago by Oleksandr

btw: this issue may be connected to #160: http://www.singular.uni-kl.de:8002/trac/ticket/160

comment:4 in reply to:  3 Changed 13 years ago by Simon King

Replying to motsak:

btw: this issue may be connected to #160: http://www.singular.uni-kl.de:8002/trac/ticket/160

I doubt it, because here all variables are of positive degree. Regards, Simon

comment:5 in reply to:  2 Changed 13 years ago by Simon King

Replying to motsak:

As a workaround i'd suggest to simulate factor algebra e.g. as follows:

def R = R1 + R2; setring R;
ideal I = std(imap(R1, I) + imap(R2, I) );

ideal t = a_1_0, b_1_1, b_2_1, b_2_2, b_2_3, b_3_4, b_3_5, c_4_8; 

NF( t[3], std( I + t ) ); // Zero!!!

qring Q = I; ideal t = imap(R, t); NF( t[3], std(t) ); // BUG :(

This might be a way out. By the way, the solution in my application was as follows:

  • I factor simply by an ideal generated by some variables.
  • Hence, I can get the same result by applying a map that sends these variables to zero and is the identity on the remaining variables.

Cheers, Simon

comment:6 Changed 13 years ago by seelisch

Owner: changed from somebody to hannes

abort ring def when adding two quotient rings; give hint to user that there is a (new) specialized command; create spezialized command and include in manual that this may take a while due to necessary std computation

comment:7 Changed 13 years ago by hannes

Resolution: fixed
Status: newclosed

If Q1 and Q2 does not share variables, SB(ideal(Q1))+SB(ideal(Q2))==SB(ideal(Q)). Fixed for that case. Otherwise, throws an error

Note: See TracTickets for help on using tickets.