Opened 5 years ago
#17697 new defect
incorrect usage of Singular's factorize() in special rings
Reported by: | jakobkroeker | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-6.5 |
Component: | interfaces | Keywords: | Singular factorize interface |
Cc: | jpflori, SimonKing | Merged in: | |
Authors: | Reviewers: | ||
Report Upstream: | Reported upstream. Developers deny it's a bug. | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description
Background: Singular behaves unexpectedly(?) in quotient rings; Example (in Singular):
ring rng = 0,(x,b),lp; short = 0; qring qr = b^2-2; poly f = x^2-2; factorize(f); // expecting: (x-b)*(x+b) ? //[1]: // _[1]=1 // _[2]=x^2-2 //[2]: // 1,1
This is (currently) by intention and is now documented upstream. ( https://github.com/Singular/Sources/commit/d0a684deae0e95680bb1a9034bac826e37c75368 )
However, there are implications for interfacing to Singular's factory: Imagine, a user would try to factorize the polynomial f as below:
sage: K0=GF(11) sage: #K0=QQ sage: R0.<b>=K0[] sage: K.<b>=K0.extension(b^5+4) sage: R1.<zzz>=K[] sage: L=FractionField(R1) sage: R.<x>=L[] sage: f=x^4+1/(b*zzz) sage: f.parent()._singular_() // characteristic : 11 // 1 parameter : zzz // minpoly : 0 // number of vars : 2 // block 1 : ordering lp // : names b x // block 2 : ordering C // quotient ring from ideal _[1]=b^5+4 sage: f.factor()
Since the called factor() routine ends in a Singular fallback (check! see polynomial_element.pyx), factoring is done in Singular's quotient ring and hence the obtained result will be unexpected
Related post at asksage: http://ask.sagemath.org/question/25083/bug-in-roots/
In addition, f is incorrectly translated to Singular, see http://trac.sagemath.org/ticket/17696 so the result will be wrong anyway