Opened 13 years ago

Closed 13 years ago

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

Reported by: Owned by: simon king hannes major 3-1-1 singular-kernel 3-1-0 NF, quotient ring 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;

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)));

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

### 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 follow-up:  5 Changed 13 years ago by Oleksandr

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, std( I + t ) ); // Zero!!!

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

Does this bug appears in any noncommutative setting?

### comment:3 follow-up:  4 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

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

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, std( I + t ) ); // Zero!!!

qring Q = I; ideal t = imap(R, t); NF( t, 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 new → closed

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.