#12839 closed defect (duplicate)
reduced Groebner basis not unique
Reported by: | mariah | Owned by: | malb |
---|---|---|---|
Priority: | major | Milestone: | sage-duplicate/invalid/wontfix |
Component: | commutative algebra | Keywords: | sd40.5, groebner bases, ideals |
Cc: | Merged in: | ||
Authors: | Reviewers: | John Perry | |
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | #12802 | Stopgaps: |
Description
Using sage-4.8
sage: R.<x,y> = PolynomialRing(ZZ) sage: I = R*[x^2-y, 2*y] sage: J = R*[x^2+y, 2*y]
I
and J
are visibly the same ideal, but Sage finds different reduced Groebner bases:
sage: I.groebner_basis() [x^2 - y, 2*y] sage: J.groebner_basis() [x^2 + y, 2*y] sage: I == J // should say True False
Change History (12)
comment:1 follow-up: ↓ 2 Changed 7 years ago by
comment:2 in reply to: ↑ 1 Changed 7 years ago by
Replying to john_perry:
Besides, the ideals are not the same, even if their varieties are.
This was a dumb thing to say, & I had doubts almost immediately after hitting the Submit button. In fact, Macaulay2 recognizes I==J, even though it computes different gb's. Singular does not recognize this.
comment:3 Changed 7 years ago by
I think I see a way to get this to work.
The first thing that can be tried is whether the groebner bases are equal, which is what we are doing now. If that succeeds, then great.
Otherwise, we can compare by reducing the elements of one groebner basis over the other's groebner basis. If all reductions give us 0, then we return true. Otherwise, we return false.
I think this is related to #12802, and this trick should fix both of them: __lt__
can test if the first is contained in the second, __gt__
can check if the second is contained in the first, and __eq__
checks if both are satisfied.
This would be easy to implement, but is the algorithm I'm outlining correct?
comment:4 Changed 7 years ago by
- Status changed from new to needs_info
Hello
I'm still of the opinion that what I wrote about reduced Groebner bases in integer rings is correct, given the behavior of Singular and Macaulay2.
That said, the incorrect conclusion that I != J
is easily fixed, using the algorithm I outlined. I have uploaded a patch to #12802 that does precisely this.
Assuming that what I've done there is correct, is there a way to mark this patch as a duplicate, or something similar?
comment:5 Changed 7 years ago by
- Keywords sd40.5 groebner bases ideals added
comment:6 follow-up: ↓ 7 Changed 7 years ago by
john_perry: to mark this as a dup:
- Set yourself to reviewer
- give it positive review
- change the milestone to sage-duplicate
William
comment:7 in reply to: ↑ 6 Changed 7 years ago by
- Milestone changed from sage-5.1 to sage-duplicate/invalid/wontfix
- Reviewers set to john_perry
Replying to was:
john_perry: to mark this as a dup:
Thx. Since testing equality of ideals is equivalent to testing containment both ways, that's what I'll do.
comment:8 Changed 7 years ago by
- Status changed from needs_info to needs_review
comment:9 Changed 7 years ago by
- Status changed from needs_review to positive_review
comment:10 Changed 7 years ago by
- Dependencies set to #12802
- Resolution set to fixed
- Status changed from positive_review to closed
comment:11 Changed 7 years ago by
- Resolution changed from fixed to duplicate
comment:12 Changed 7 years ago by
- Reviewers changed from john_perry to John Perry
Correct me if I am wrong, but you cannot have a reduced Groebner basis over a ring that is not a field. Besides, the ideals are not the same, even if their varieties are.
Singular seems to feel this way:
Macaulay also feels this way:
Unless I'm wrong, this is not a bug.
Edit: I had ring and field switched in the first sentence.