#15513: Polynomial factorization over generic fields
-----------------------------+----------------------------
   Reporter:  nthiery        |            Owner:
       Type:  enhancement    |           Status:  new
   Priority:  major          |        Milestone:  sage-6.1
  Component:  factorization  |         Keywords:
  Merged in:                 |          Authors:
  Reviewers:                 |  Report Upstream:  N/A
Work issues:                 |           Branch:
     Commit:                 |     Dependencies:
   Stopgaps:                 |
-----------------------------+----------------------------
 Factorization is a fundamental building block of computer algebra, yet
 Sage is
 still missing a generic implementation of factorization that would
 work over any (reasonable) field. Students and colleagues are stumbling
 over this over and over.

 For example, the following currently raise NotImplementedError:
 {{{
 sage: K = QQ['x0,x1'].fraction_field()
 sage: x0,x1 = K.gens()
 sage: x = K['x'].gen()
 sage: p = x^2 - (x0+x1)*x
 sage: factor(p)
 }}}

 We might want this to work too:

 {{{
 sage: K = QQ['x0,x1']
 sage: x0,x1 = K.gens()
 sage: x = K['x'].gen()
 sage: p = x^2 - (x0+x1)*x
 sage: factor(p)
 }}}

 By the way, here is one of my favorite MuPAD demo about genericity:
 {{{
 Q  := Dom::Rational:
 Qx := Dom::Fraction(Dom::UnivariatePolynomial(x, Q)):
 F  := Dom::AlgebraicExtension(Qx, poly(z^2 - x, [z])):
 P  := Dom::UnivariatePolynomial(u,F):
 P(u*z)*P(z)
                               x u
 f := P(u^2 - x^3);
 factor(f);
                       (u + x z) (u - x z)
 }}}
 This ought to work in Sage too, but it fails because Sage can't test
 the primality of z^2-x below:
 {{{
 sage: Px.<x> = QQ[]
 sage: Qx = Px.fraction_field()
 sage: Qxz = Qx['z']
 sage: z = Qxz.gen()
 sage: (z^2-x).is_irreducible()
 ---------------------------------------------------------------------------
 NotImplementedError                       Traceback (most recent call
 last)
 }}}

 So the algebraic extension is not recognized as giving a field:
 {{{
 sage: F = Qxz.quo(z^2-x)
 sage: F in Fields()
 }}}

 Having a factorization over generic fields should do the job.

--
Ticket URL: <http://trac.sagemath.org/ticket/15513>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to