Opened 9 years ago
Closed 9 years ago
#577 closed bug (fixed)
ring created with ringlist has internally wrong ordering
Reported by: | Owned by: | somebody | |
---|---|---|---|
Priority: | minor | Milestone: | 4-1-0 and higher |
Component: | singular-kernel | Version: | 3-1-6 |
Keywords: | ringlist, ordering | Cc: | johannes.hoffmann@… |
Description
The following bug has been discovered by Johannes Hoffmann (RWTH Aachen).
A ring created using ringlist has internally a wrong (local) ordering. First create the ring directly and everything works as expected:
ring A0 = 0,(x,Dx),(a(1,0),a(1,1),ls); def A = nc_algebra(1,1); setring A; A; 1+x+Dx; // ordering is global slimgb(ideal(x,Dx)); // 1 as expected std(ideal(x,Dx)); // same result
Now create the same ring with ringlist by appending the first weight vector. It seems that internally a local/mixed ordering is used.
ring B0 = 0,(x,Dx),(a(1,1),ls); def B1 = nc_algebra(1,1); setring B1; list RL = ringlist(B1); RL[3] = insert(RL[3],list("a",intvec(1,0)),0); def B = ring(RL); setring B; B; // the same as above 1+x+Dx; // ordering is still global std(ideal(x,Dx)); // not reduced slimgb(ideal(x,Dx)); // error: "ordering must be global for slimgb"
Change History (4)
comment:1 Changed 9 years ago by
Resolution: | → not a bug |
---|---|
Status: | new → closed |
comment:2 Changed 9 years ago by
Resolution: | not a bug |
---|---|
Status: | closed → reopened |
Please tell me if I'm wrong, but the first NON-zero entry in the respective column of the ordering matrix decides whether the respective variable is global or local. In the code above, the ordering matrix
10 11 -- ls
is used. In particular, both variables are greater than 1 and hence, the ordering is global. Is a different definition being used in the implementation?
comment:3 Changed 9 years ago by
i support Daniel: in this case: x>Dx>1 and thus the ordering is global.
also:
Therefore all orderings which include a(1,0) are non-global.
lexicographical ordering lp(2) can be encoded as (a(1,0), a(0,1)), and it is clearly global... right?!
comment:4 Changed 9 years ago by
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
you are both right and wrong at same time:
- instead of "global": "algorithmically global" is meant: global ordering of variable is necessary, but not sufficient. Definition: a.global iff attrib(R,"global")==1
- ordering "a" as part of a global ordering requires that all weights are positive (but in this case a(1,0) will be simplified to a(1), so this is true here)
- lp(2) is not a(1,0),a(0,1) in the same way as the matrices (1,0,0,1) and (2,0,0,2) describe the same ordering, but are not the same matrices
It is fixed in this case, but there may be obscure ordering definitions which describe an global ordering, but not an algorithmically global one.(a8d371b294c1193994eb8cd4e64e0c73158a535b)
a global ordering requires that all weights (especially all given by a(...)) are positive. Therefore all orderings which include a(1,0) are non-global.