#7736: factor returns a reducible factor,
-----------------------------+----------------------------------------------
   Reporter:  syazdani       |       Owner:  cremona   
       Type:  defect         |      Status:  new       
   Priority:  critical       |   Milestone:  sage-4.3.3
  Component:  factorization  |    Keywords:            
     Author:                 |    Upstream:  N/A       
   Reviewer:                 |      Merged:            
Work_issues:                 |  
-----------------------------+----------------------------------------------
Changes (by cremona):

  * owner:  tbd => cremona


Old description:

> Here is a result that confuses me (appologies for not having a simpler
> example for this):
> {{{
> sage: E = EllipticCurve('1728z');
> sage: Et = E.mod5family();
> sage: f=Et.discriminant().numerator().factor()[0][0];
> sage: K.<alpha> = NumberField(f);
> sage: f.change_ring(K).factor()[1][0].is_irreducible()
> False
> }}}
> Here f turns out to be a degree 12 polynomial, and when you factor it
> over K, you get a linear factor and a degree 11 factor. However, degree
> 11 factor in this case is not irreducible. In fact, if you continue with
> {{{
> sage: g = f.change_ring(K).factor()[1][0];
> sage: g.factor()
> }}}
> you get a linear factor and a degree 10 factor, where both are
> irreducible.

New description:

 Here is a result that confuses me (appologies for not having a simpler
 example for this):
 {{{
 sage: E = EllipticCurve('1728z');
 sage: Et = E.mod5family();
 sage: f=Et.discriminant().numerator().factor()[0][0];
 sage: K.<alpha> = NumberField(f);
 sage: f.change_ring(K).factor()[1][0].is_irreducible()
 False
 }}}
 Here f turns out to be a degree 12 polynomial, and when you factor it over
 K, you get a linear factor and a degree 11 factor. However, degree 11
 factor in this case is not irreducible. In fact, if you continue with
 {{{
 sage: g = f.change_ring(K).factor()[1][0];
 sage: g.factor()
 }}}
 you get a linear factor and a degree 10 factor, where both are
 irreducible.

 I fear it is no good asking for an upstream fix, since they (pari) have
 already fixed it but we are not using the fixed version. See #7097 for
 more details.

--

Comment:

 It may well be that the short-term fix I put in at #7097 is not yet good
 enough.  [It is short-term since the latest version of pari have fixed
 some bugs which arose for non-monic polynomials, which is why the patch  I
 put in at #7097 made sure that pari was only called to factor monic ones.]

 I just had a possibly worse example, and found this ticket while looking
 to see if I should open a new one:
 {{{
 sage: E = EllipticCurve('4900a2')
 sage: f = E.division_polynomial(9)
 sage: K3.<z> = CyclotomicField(3)
 sage: ff = f.change_ring(K3)
 sage: ff.degree()
 40
 sage: [g.degree() for g,e in ff.factor()]
 [1, 3, 9, 40]
 }}}
 I factor a degree 40 polynomial and the returned factors have degrees
 1,3,9,40!
 Even if I make the polynomial monic (above it has leading coefficient 9)
 it is no better:
 {{{
 sage: x = f.parent().gen()
 sage: g = 9^39 * f(x/9)
 sage: all([c.is_integral() for c in g.coefficients()])
 True
 sage: [h.degree() for h,e in g.change_ring(K3).factor()]
 [1, 3, 9, 40]
 }}}

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