#13883: Fix an assertion in polybori
-------------------------------------------------------+--------------------
       Reporter:  SimonKing                            |         Owner:  malb   
     
           Type:  defect                               |        Status:  
needs_review
       Priority:  major                                |     Milestone:  
sage-5.6    
      Component:  commutative algebra                  |    Resolution:         
     
       Keywords:  polybori FGLMStrategy debug          |   Work issues:         
     
Report Upstream:  Reported upstream. No feedback yet.  |     Reviewers:         
     
        Authors:  AlexanderDreyer                      |     Merged in:         
     
   Dependencies:                                       |      Stopgaps:         
     
-------------------------------------------------------+--------------------

Old description:

> The following crash occurs in Sage's debug version of #13864:
> {{{
> sage: from polybori import *
> sage: B.<x,y,z> = BooleanPolynomialRing()
> sage: x > y > z
> True
> sage: old_ring  = B
> sage: B._change_ordering(dp_asc)
> sage: x > y > z
> False
> sage: z > y > x
> True
> sage: new_ring = B.clone(ordering=lp)
> sage: ideal = BooleanPolynomialVector([x+z, y+z])
> sage: FGLMStrategy(old_ring, new_ring, ideal)
> python: groebner/include/polybori/groebner/PolyEntryVector.h:74: virtual
> void polybori::groebner::PolyEntryVector::append(const
> polybori::groebner::PolyEntry&): Assertion
> `m_indices.checked(back().lead) == (size_type)-1' failed.
> }}}
> The gdb backtrace is as follows:
> {{{
> #0  0x00007ffff6d95d95 in raise () from /lib64/libc.so.6
> #1  0x00007ffff6d972ab in abort () from /lib64/libc.so.6
> #2  0x00007ffff6d8e8fe in __assert_fail_base () from /lib64/libc.so.6
> #3  0x00007ffff6d8e9a2 in __assert_fail () from /lib64/libc.so.6
> #4  0x00007fffd0bfa073 in
> polybori::groebner::PolyEntryVector::append(polybori::groebner::PolyEntry
> const&) [clone .part.506] ()
>    from
> /home/simon/SAGE/debug/sage-5.6.beta1/local/lib/libpolybori_groebner-0.8.2.so.0
> #5  0x00007fffd0c165b9 in
> polybori::groebner::FGLMStrategy::FGLMStrategy(polybori::BoolePolyRing
> const&, polybori::BoolePolyRing const&,
> std::vector<polybori::BoolePolynomial,
> std::allocator<polybori::BoolePolynomial> > const&) () from
> /home/simon/SAGE/debug/sage-5.6.beta1/local/lib/libpolybori_groebner-0.8.2.so.0
> #6  0x00007fffd15378b7 in
> WrappedPtr<polybori::groebner::FGLMStrategy>::WrappedPtr<polybori::BoolePolyRing,
> polybori::BoolePolyRing, std::vector<polybori::BoolePolynomial> >
> (this=0x7fffffffa740,
>     arg1=..., arg2=..., arg3=...) at
> /home/simon/SAGE/debug/sage-5.6.beta1/local/include/csage/pb_wrap.h:197
> #7  0x00007fffd14dbc5e in
> __pyx_pf_4sage_5rings_10polynomial_5pbori_12FGLMStrategy___init__
> (__pyx_v_self=0x7fffc270dee8, __pyx_v_from_ring=0x2f412b0,
> __pyx_v_to_ring=0x2f69200,
>     __pyx_v_vec=0x7fffc26f7760) at sage/rings/polynomial/pbori.cpp:39777
> #8  0x00007fffd14dae26 in
> __pyx_pw_4sage_5rings_10polynomial_5pbori_12FGLMStrategy_1__init__
> (__pyx_v_self=0x7fffc270dee8, __pyx_args=0x7ffff237bb60, __pyx_kwds=0x0)
>     at sage/rings/polynomial/pbori.cpp:39568
> #9  0x00007ffff7a4c0dd in type_call (type=0x7fffd17b8c20
> <__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
> args=0x7ffff237bb60, kwds=0x0) at Objects/typeobject.c:737
> #10 0x00007ffff79be33e in PyObject_Call (func=0x7fffd17b8c20
> <__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
> arg=0x7ffff237bb60, kw=0x0) at Objects/abstract.c:2529
> #11 0x00007ffff7ac7a58 in do_call (func=0x7fffd17b8c20
> <__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
> pp_stack=0x7fffffffaaa0, na=3, nk=0) at Python/ceval.c:4239
> #12 0x00007ffff7ac6d92 in call_function (pp_stack=0x7fffffffaaa0,
> oparg=3) at Python/ceval.c:4044
> #13 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x2f6d0f0, throwflag=0)
> at Python/ceval.c:2666
> #14 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7fffc2747930,
> globals=0x9b0080, locals=0x9b0080, args=0x0, argcount=0, kws=0x0,
> kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
> #15 0x00007ffff7ab9a88 in PyEval_EvalCode (co=0x7fffc2747930,
> globals=0x9b0080, locals=0x9b0080) at Python/ceval.c:667
> #16 0x00007ffff7ac9693 in exec_statement (f=0x297f250,
> prog=0x7fffc2747930, globals=0x9b0080, locals=0x9b0080) at
> Python/ceval.c:4718
> #17 0x00007ffff7abde26 in PyEval_EvalFrameEx (f=0x297f250, throwflag=0)
> at Python/ceval.c:1880
> #18 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280c720,
> globals=0x909bf0, locals=0x0, args=0x297eae0, argcount=2, kws=0x297eaf0,
> kwcount=0, defs=0x0, defcount=0, closure=0x0)
>     at Python/ceval.c:3253
> #19 0x00007ffff7ac71b5 in fast_function (func=0x7ffff235b450,
> pp_stack=0x7fffffffb420, n=2, na=2, nk=0) at Python/ceval.c:4117
> #20 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffb420,
> oparg=1) at Python/ceval.c:4042
> #21 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x297e930, throwflag=0)
> at Python/ceval.c:2666
> #22 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280c5c0,
> globals=0x909bf0, locals=0x0, args=0x2f06e38, argcount=3, kws=0x2f06e50,
> kwcount=0, defs=0x7ffff2354f10, defcount=2, closure=0x0)
>     at Python/ceval.c:3253
> #23 0x00007ffff7ac71b5 in fast_function (func=0x7ffff235b3a8,
> pp_stack=0x7fffffffb910, n=3, na=3, nk=0) at Python/ceval.c:4117
> #24 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffb910,
> oparg=2) at Python/ceval.c:4042
> #25 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x2f06c90, throwflag=0)
> at Python/ceval.c:2666
> #26 0x00007ffff7ac708a in fast_function (func=0x7ffff235b4f8,
> pp_stack=0x7fffffffbc90, n=2, na=2, nk=0) at Python/ceval.c:4107
> #27 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffbc90,
> oparg=1) at Python/ceval.c:4042
> #28 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9c6fb0, throwflag=0) at
> Python/ceval.c:2666
> #29 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280a9e0,
> globals=0x909bf0, locals=0x0, args=0x9bd3b8, argcount=2, kws=0x9bd3c8,
> kwcount=0, defs=0x7ffff235a1d8, defcount=1, closure=0x0)
>     at Python/ceval.c:3253
> #30 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2359e28,
> pp_stack=0x7fffffffc180, n=2, na=2, nk=0) at Python/ceval.c:4117
> #31 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffc180,
> oparg=1) at Python/ceval.c:4042
> #32 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9bd220, throwflag=0) at
> Python/ceval.c:2666
> #33 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff2806f60,
> globals=0x909bf0, locals=0x0, args=0x9cc360, argcount=2, kws=0x9cc370,
> kwcount=0, defs=0x7ffff235a168, defcount=1, closure=0x0)
>     at Python/ceval.c:3253
> #34 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2359a38,
> pp_stack=0x7fffffffc670, n=2, na=2, nk=0) at Python/ceval.c:4117
> #35 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffc670,
> oparg=1) at Python/ceval.c:4042
> #36 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9cc1c0, throwflag=0) at
> Python/ceval.c:2666
> #37 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff6a9b510,
> globals=0x707970, locals=0x0, args=0x6f6f58, argcount=1, kws=0x6f6f60,
> kwcount=2, defs=0x7ffff2ea5b50, defcount=2, closure=0x0)
>     at Python/ceval.c:3253
> #38 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2367450,
> pp_stack=0x7fffffffcb60, n=5, na=1, nk=2) at Python/ceval.c:4117
> #39 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffcb60,
> oparg=512) at Python/ceval.c:4042
> #40 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x6f6dd0, throwflag=0) at
> Python/ceval.c:2666
> #41 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff7e2f1a0,
> globals=0x644f50, locals=0x644f50, args=0x0, argcount=0, kws=0x0,
> kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
> #42 0x00007ffff7ab9a88 in PyEval_EvalCode (co=0x7ffff7e2f1a0,
> globals=0x644f50, locals=0x644f50) at Python/ceval.c:667
> #43 0x00007ffff7af836d in run_mod (mod=0x6e8c18, filename=0x7fffffffd88f
> "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin/sage-ipython",
> globals=0x644f50, locals=0x644f50, flags=0x7fffffffd090,
>     arena=0x62d530) at Python/pythonrun.c:1347
> #44 0x00007ffff7af82f3 in PyRun_FileExFlags (fp=0x6451e0,
> filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
> /sage-ipython", start=257, globals=0x644f50, locals=0x644f50,
>     closeit=1, flags=0x7fffffffd090) at Python/pythonrun.c:1333
> #45 0x00007ffff7af6aa0 in PyRun_SimpleFileExFlags (fp=0x6451e0,
> filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
> /sage-ipython", closeit=1, flags=0x7fffffffd090)
>     at Python/pythonrun.c:937
> #46 0x00007ffff7af6092 in PyRun_AnyFileExFlags (fp=0x6451e0,
> filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
> /sage-ipython", closeit=1, flags=0x7fffffffd090)
>     at Python/pythonrun.c:741
> #47 0x00007ffff7b12536 in Py_Main (argc=3, argv=0x7fffffffd218) at
> Modules/main.c:639
> #48 0x00000000004007b4 in main (argc=3, argv=0x7fffffffd218) at
> ./Modules/python.c:23
> }}}

New description:

 The following crash occurs in Sage's debug version of #13864:
 {{{
 sage: from polybori import *
 sage: B.<x,y,z> = BooleanPolynomialRing()
 sage: x > y > z
 True
 sage: old_ring  = B
 sage: B._change_ordering(dp_asc)
 sage: x > y > z
 False
 sage: z > y > x
 True
 sage: new_ring = B.clone(ordering=lp)
 sage: ideal = BooleanPolynomialVector([x+z, y+z])
 sage: FGLMStrategy(old_ring, new_ring, ideal)
 python: groebner/include/polybori/groebner/PolyEntryVector.h:74: virtual
 void polybori::groebner::PolyEntryVector::append(const
 polybori::groebner::PolyEntry&): Assertion `m_indices.checked(back().lead)
 == (size_type)-1' failed.
 }}}
 The gdb backtrace is as follows:
 {{{
 #0  0x00007ffff6d95d95 in raise () from /lib64/libc.so.6
 #1  0x00007ffff6d972ab in abort () from /lib64/libc.so.6
 #2  0x00007ffff6d8e8fe in __assert_fail_base () from /lib64/libc.so.6
 #3  0x00007ffff6d8e9a2 in __assert_fail () from /lib64/libc.so.6
 #4  0x00007fffd0bfa073 in
 polybori::groebner::PolyEntryVector::append(polybori::groebner::PolyEntry
 const&) [clone .part.506] ()
    from
 /home/simon/SAGE/debug/sage-5.6.beta1/local/lib/libpolybori_groebner-0.8.2.so.0
 #5  0x00007fffd0c165b9 in
 polybori::groebner::FGLMStrategy::FGLMStrategy(polybori::BoolePolyRing
 const&, polybori::BoolePolyRing const&,
 std::vector<polybori::BoolePolynomial,
 std::allocator<polybori::BoolePolynomial> > const&) () from
 /home/simon/SAGE/debug/sage-5.6.beta1/local/lib/libpolybori_groebner-0.8.2.so.0
 #6  0x00007fffd15378b7 in
 
WrappedPtr<polybori::groebner::FGLMStrategy>::WrappedPtr<polybori::BoolePolyRing,
 polybori::BoolePolyRing, std::vector<polybori::BoolePolynomial> >
 (this=0x7fffffffa740,
     arg1=..., arg2=..., arg3=...) at
 /home/simon/SAGE/debug/sage-5.6.beta1/local/include/csage/pb_wrap.h:197
 #7  0x00007fffd14dbc5e in
 __pyx_pf_4sage_5rings_10polynomial_5pbori_12FGLMStrategy___init__
 (__pyx_v_self=0x7fffc270dee8, __pyx_v_from_ring=0x2f412b0,
 __pyx_v_to_ring=0x2f69200,
     __pyx_v_vec=0x7fffc26f7760) at sage/rings/polynomial/pbori.cpp:39777
 #8  0x00007fffd14dae26 in
 __pyx_pw_4sage_5rings_10polynomial_5pbori_12FGLMStrategy_1__init__
 (__pyx_v_self=0x7fffc270dee8, __pyx_args=0x7ffff237bb60, __pyx_kwds=0x0)
     at sage/rings/polynomial/pbori.cpp:39568
 #9  0x00007ffff7a4c0dd in type_call (type=0x7fffd17b8c20
 <__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
 args=0x7ffff237bb60, kwds=0x0) at Objects/typeobject.c:737
 #10 0x00007ffff79be33e in PyObject_Call (func=0x7fffd17b8c20
 <__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
 arg=0x7ffff237bb60, kw=0x0) at Objects/abstract.c:2529
 #11 0x00007ffff7ac7a58 in do_call (func=0x7fffd17b8c20
 <__pyx_type_4sage_5rings_10polynomial_5pbori_FGLMStrategy>,
 pp_stack=0x7fffffffaaa0, na=3, nk=0) at Python/ceval.c:4239
 #12 0x00007ffff7ac6d92 in call_function (pp_stack=0x7fffffffaaa0, oparg=3)
 at Python/ceval.c:4044
 #13 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x2f6d0f0, throwflag=0) at
 Python/ceval.c:2666
 #14 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7fffc2747930,
 globals=0x9b0080, locals=0x9b0080, args=0x0, argcount=0, kws=0x0,
 kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
 #15 0x00007ffff7ab9a88 in PyEval_EvalCode (co=0x7fffc2747930,
 globals=0x9b0080, locals=0x9b0080) at Python/ceval.c:667
 #16 0x00007ffff7ac9693 in exec_statement (f=0x297f250,
 prog=0x7fffc2747930, globals=0x9b0080, locals=0x9b0080) at
 Python/ceval.c:4718
 #17 0x00007ffff7abde26 in PyEval_EvalFrameEx (f=0x297f250, throwflag=0) at
 Python/ceval.c:1880
 #18 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280c720,
 globals=0x909bf0, locals=0x0, args=0x297eae0, argcount=2, kws=0x297eaf0,
 kwcount=0, defs=0x0, defcount=0, closure=0x0)
     at Python/ceval.c:3253
 #19 0x00007ffff7ac71b5 in fast_function (func=0x7ffff235b450,
 pp_stack=0x7fffffffb420, n=2, na=2, nk=0) at Python/ceval.c:4117
 #20 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffb420, oparg=1)
 at Python/ceval.c:4042
 #21 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x297e930, throwflag=0) at
 Python/ceval.c:2666
 #22 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280c5c0,
 globals=0x909bf0, locals=0x0, args=0x2f06e38, argcount=3, kws=0x2f06e50,
 kwcount=0, defs=0x7ffff2354f10, defcount=2, closure=0x0)
     at Python/ceval.c:3253
 #23 0x00007ffff7ac71b5 in fast_function (func=0x7ffff235b3a8,
 pp_stack=0x7fffffffb910, n=3, na=3, nk=0) at Python/ceval.c:4117
 #24 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffb910, oparg=2)
 at Python/ceval.c:4042
 #25 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x2f06c90, throwflag=0) at
 Python/ceval.c:2666
 #26 0x00007ffff7ac708a in fast_function (func=0x7ffff235b4f8,
 pp_stack=0x7fffffffbc90, n=2, na=2, nk=0) at Python/ceval.c:4107
 #27 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffbc90, oparg=1)
 at Python/ceval.c:4042
 #28 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9c6fb0, throwflag=0) at
 Python/ceval.c:2666
 #29 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff280a9e0,
 globals=0x909bf0, locals=0x0, args=0x9bd3b8, argcount=2, kws=0x9bd3c8,
 kwcount=0, defs=0x7ffff235a1d8, defcount=1, closure=0x0)
     at Python/ceval.c:3253
 #30 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2359e28,
 pp_stack=0x7fffffffc180, n=2, na=2, nk=0) at Python/ceval.c:4117
 #31 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffc180, oparg=1)
 at Python/ceval.c:4042
 #32 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9bd220, throwflag=0) at
 Python/ceval.c:2666
 #33 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff2806f60,
 globals=0x909bf0, locals=0x0, args=0x9cc360, argcount=2, kws=0x9cc370,
 kwcount=0, defs=0x7ffff235a168, defcount=1, closure=0x0)
     at Python/ceval.c:3253
 #34 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2359a38,
 pp_stack=0x7fffffffc670, n=2, na=2, nk=0) at Python/ceval.c:4117
 #35 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffc670, oparg=1)
 at Python/ceval.c:4042
 #36 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x9cc1c0, throwflag=0) at
 Python/ceval.c:2666
 #37 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff6a9b510,
 globals=0x707970, locals=0x0, args=0x6f6f58, argcount=1, kws=0x6f6f60,
 kwcount=2, defs=0x7ffff2ea5b50, defcount=2, closure=0x0)
     at Python/ceval.c:3253
 #38 0x00007ffff7ac71b5 in fast_function (func=0x7ffff2367450,
 pp_stack=0x7fffffffcb60, n=5, na=1, nk=2) at Python/ceval.c:4117
 #39 0x00007ffff7ac6d76 in call_function (pp_stack=0x7fffffffcb60,
 oparg=512) at Python/ceval.c:4042
 #40 0x00007ffff7ac16ba in PyEval_EvalFrameEx (f=0x6f6dd0, throwflag=0) at
 Python/ceval.c:2666
 #41 0x00007ffff7ac40aa in PyEval_EvalCodeEx (co=0x7ffff7e2f1a0,
 globals=0x644f50, locals=0x644f50, args=0x0, argcount=0, kws=0x0,
 kwcount=0, defs=0x0, defcount=0, closure=0x0) at Python/ceval.c:3253
 #42 0x00007ffff7ab9a88 in PyEval_EvalCode (co=0x7ffff7e2f1a0,
 globals=0x644f50, locals=0x644f50) at Python/ceval.c:667
 #43 0x00007ffff7af836d in run_mod (mod=0x6e8c18, filename=0x7fffffffd88f
 "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin/sage-ipython",
 globals=0x644f50, locals=0x644f50, flags=0x7fffffffd090,
     arena=0x62d530) at Python/pythonrun.c:1347
 #44 0x00007ffff7af82f3 in PyRun_FileExFlags (fp=0x6451e0,
 filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
 /sage-ipython", start=257, globals=0x644f50, locals=0x644f50,
     closeit=1, flags=0x7fffffffd090) at Python/pythonrun.c:1333
 #45 0x00007ffff7af6aa0 in PyRun_SimpleFileExFlags (fp=0x6451e0,
 filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
 /sage-ipython", closeit=1, flags=0x7fffffffd090)
     at Python/pythonrun.c:937
 #46 0x00007ffff7af6092 in PyRun_AnyFileExFlags (fp=0x6451e0,
 filename=0x7fffffffd88f "/home/simon/SAGE/debug/sage-5.6.beta1/local/bin
 /sage-ipython", closeit=1, flags=0x7fffffffd090)
     at Python/pythonrun.c:741
 #47 0x00007ffff7b12536 in Py_Main (argc=3, argv=0x7fffffffd218) at
 Modules/main.c:639
 #48 0x00000000004007b4 in main (argc=3, argv=0x7fffffffd218) at
 ./Modules/python.c:23
 }}}


 *Apply:* Attach:FGLMStrategy_sigon.patch
 *Install:*
 http://boxen.math.washington.edu/home/dreyer/spkg/polybori-0.8.2.p0.spkg

--

Comment (by AlexanderDreyer):

 Ah, and of course, we have to fix the broken doctest. So please apply the
 recent FGLMStrategy_sigon.patch. I've also added an optional - debug
 doctest for the case above.

 Apply FGLMStrategy_sigon.patch

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/13883#comment:17>
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.

Reply via email to