Opened 13 years ago
Closed 13 years ago
#224 closed bug (fixed)
Bug in std with additional generators
Reported by: | Simon King | Owned by: | hannes |
---|---|---|---|
Priority: | blocker | Milestone: | 3-1-2 and higher |
Component: | singular-kernel | Version: | 3-1-1 |
Keywords: | std additional generators | Cc: |
Description
What I found is either a bug in std with additional generators, or a wrong specification in the manual.
The manual says:
Use an optional second argument of type poly/vector/ideal, resp. module, to construct the standard basis from an already computed one (given as the first argument) and additional generator(s) (the second argument).
Hence, it is not assumed that the second argument (if it is an ideal) must be a standard basis. This is only assumed for the first argument.
Consider the following example in Singular 3-1-0:
> ring R = (2),(b_2_4,b_2_5,b_4_17,c_4_18,a_1_0,b_1_1,c_1_2,b_3_9,b_3_10),(M(2,2,4,4,1,1,1,3,3,0,0,0,-1,0,0,-1,0,0,0,0,0,0,-1,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,-1,0),C); > ideal I = std(ideal(a_1_0^2,a_1_0*b_1_1,b_2_4*a_1_0,b_2_5*a_1_0,a_1_0*b_3_9,a_1_0*b_3_10,b_2_4*b_1_1^2+b_2_4^2,b_1_1*b_3_9+b_2_4*b_2_5,b_4_17*a_1_0,b_2_4*b_3_9+b_2_4*b_2_5*b_1_1,b_4_17*b_1_1+b_2_5^2*b_1_1+b_2_4*b_3_10,b_2_4*b_1_1*b_3_10+b_2_4*b_4_17+b_2_4*b_2_5^2,b_3_9^2+b_2_4*b_2_5^2,b_3_9*b_3_10+b_2_5*b_4_17+b_2_5^3,b_3_10^2+b_2_5*b_1_1*b_3_10+b_2_5^3+b_2_4*b_4_17+b_2_4*b_2_5^2+c_4_18*b_1_1^2,b_4_17*b_3_9+b_2_5^2*b_3_9+b_2_4*b_2_5*b_3_10,b_4_17*b_3_10+b_2_5^2*b_3_10+b_2_5^2*b_3_9+b_2_4*b_2_5*b_3_10+b_2_4^2*b_3_10+b_2_4*c_4_18*b_1_1,b_4_17^2+b_2_5^4+b_2_4*b_2_5*b_4_17+b_2_4^2*b_4_17+b_2_4^2*b_2_5^2+b_2_4^2*c_4_18)); > ideal P = b_1_1^2 + b_2_5, b_1_1, c_4_18, c_1_2;
So, I
is a standard basis, but P
isn't.
If one wants to add P
to I
using std
, the result and even the Krull dimension depends on whether P
is standard or not:
> matrix(std(I,P))==matrix(std(I,std(P))); 0 > dim(std(I,P)); 1 > dim(std(I,std(P))); 0
If this is a bug in std (and not just a wrong documentation), I consider this a quite serious thing and thus mark it a blocker.
Change History (2)
comment:1 Changed 13 years ago by
comment:2 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
The standard criteria need a specific order of evaluation of the s-pairs. This is not true in the case of std(ideal I, ideal P) if size(P) > 1. We do it not step by step.
I observed a similar bug where either I or P is zero, then the behaviour is incorrect.