Dear John,

I haven't written any of the code involved, so I am not absolutely
sure about this, but after looking at the code for a few minutes, I
think the following is the case:

The "FractionFieldElement" objects have a method "factor", but this
takes no arguments other than "self".  This explains the error message
in the second case you describe.  On the other hand, the
"MPolynomial_libsingular" objects provide the method "factor(self,
proof=True)".  Here, however, the parameter "proof" is only used to
prevent certain inputs (with the option "proof=True" set) from being
passed to Singular, presumably(?) in cases when Singular's results
might not be reliable.  There appears to be no further use of the
parameter.

I think this is something that ought to fixed.  (N.B.  I don't think I
know enough about what kind of factoring methods rings in Sage
typically offer.)  If rings often offer further arguments to the
method "factor", then I think the method "factor" for
FractionFieldElement objects should be modified to allow the same
arguments.  On the other hand, if "MPolynomial_libsingular" is the
only case where "factor" takes further arguments, perhaps the second
argument ought to be removed?

Sebastian

On Jan 7, 3:32 pm, John Cremona <john.crem...@gmail.com> wrote:
> I define a rational function in two variables over a finite field:
>
> {{{
> sage: R.<x,y> = GF(2)[]
> sage: f = x*y/(x+y)
> sage: f.parent()
> Fraction Field of Multivariate Polynomial Ring in x, y over Finite
> Field of size 2
>
> }}}
>
> I try to factor it, and get this error:
>
> {{{
> sage: f.factor()
> ---------------------------------------------------------------------------
> NotImplementedError                       Traceback (most recent call last)
>
> /home/masgaj/.sage/temp/host_56_150/17587/_home_masgaj__sage_init_sage_0.py
> in <module>()
>
> /local/jec/sage-4.3.rc0/local/lib/python2.6/site-packages/sage/rings/fraction_field_element.so
> in sage.rings.fraction_field_element.FractionFieldElement.factor
> (sage/rings/fraction_field_element.c:2972)()
>
> /local/jec/sage-4.3.rc0/local/lib/python2.6/site-packages/sage/rings/polynomial/multi_polynomial_libsingular.so
> in 
> sage.rings.polynomial.multi_polynomial_libsingular.MPolynomial_libsingular.factor
> (sage/rings/polynomial/multi_polynomial_libsingular.cpp:22701)()
>
> NotImplementedError: proof = True factorization not implemented.  Call
> factor with proof=False.
>
> }}}
>
> So I do what I am told, but:
>
> {{{
> sage: f.factor(proof=False)
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call last)
>
> /home/masgaj/.sage/temp/host_56_150/17587/_home_masgaj__sage_init_sage_0.py
> in <module>()
>
> TypeError: factor() takes no keyword arguments
>
> }}}
>
> Worth a ticket, I think?
>
> Also, does anyone know what the proof parameter for this sort of
> factorization actually means?
>
> John
-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to