#13714: multi_polynomial.lift(...) affects libsingular internal state; makes
ideal.complete_primary_decomposition() fail
---------------------------------------+------------------------------------
Reporter: Bouillaguet | Owner: malb
Type: defect | Status: new
Priority: major | Milestone: sage-5.6
Component: commutative algebra | Resolution:
Keywords: libsingular | Work issues:
Report Upstream: N/A | Reviewers:
Authors: | Merged in:
Dependencies: | Stopgaps:
---------------------------------------+------------------------------------
Description changed by Bouillaguet:
Old description:
> On sage 5.4:
> {{{
> sage: R.<x1,x2> = QQ[]
> sage: I = R.ideal(x2**2 + x1 - 2, x1**2 - 1)
> sage: R.one().lift(I)
> [0, 0]
> sage: I.complete_primary_decomposition()
> // ** char_series returns 0 x 0 matrix from 3 input polys (0)
> I[1,1]=x2^2+x1-2
> I[1,2]=x1^2-1
> }}}
> and hangs forever (on sage 5.3 it just SEGFAULTs).
>
> The key in this case is the '''failing''' call to {{{lift}}}, ''i.e.'',
> evaluating {{{f.lift(I)}}} while `f` is not in `I`. What happens in these
> case is changed by #13671 (but the problem in this ticket is
> independent). It was found while fixing #13671 that when computing
> {{{f.lift(I)}}}, then if `f` is not in `I` an error is raised by
> singular, by setting a global variable. Before #13671, this variable was
> not reset, and subsequent calls to lift would return junk. After #13671,
> the global variable is reset and ``lift`` works correctly. However, it
> was apparently not the end of the story.
New description:
On sage 5.5:
{{{
sage: R.<x1,x2> = QQ[]
sage: I = R.ideal(x2**2 + x1 - 2, x1**2 - 1)
sage: R.one().lift(I)
Traceback (most recent call last):
...
ValueError: polynomial is not in the ideal
}}}
And then the bug:
{{{
sage: I.complete_primary_decomposition()
// ** char_series returns 0 x 0 matrix from 3 input polys (0)
I[1,1]=x2^2+x1-2
I[1,2]=x1^2-1
}}}
and hangs forever (on sage 5.3 it just SEGFAULTed).
The key in this case is the '''failing''' call to {{{lift}}}, ''i.e.'',
evaluating {{{f.lift(I)}}} while `f` is not in `I`. What happens in this
case has been changed by #13671 (but the problem in this ticket is
independent). It was found while fixing #13671 that when computing
{{{f.lift(I)}}}, then if `f` is not in `I` an error is raised by singular,
by setting a global variable. Before #13671, this variable was not reset,
and subsequent calls to {{{lift}}} would return junk. After #13671, the
global variable is reset and {{{lift}}} works correctly. However, it was
apparently not the end of the story.
--
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/13714#comment:1>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.