#20261: Conversion between cyclotomic field fails
------------------------------+------------------------
       Reporter:  fstromberg  |        Owner:
           Type:  defect      |       Status:  new
       Priority:  major       |    Milestone:  sage-7.3
      Component:  coercion    |   Resolution:
       Keywords:  cyclotomic  |    Merged in:
        Authors:              |    Reviewers:
Report Upstream:  N/A         |  Work issues:
         Branch:              |       Commit:
   Dependencies:              |     Stopgaps:
------------------------------+------------------------
Description changed by vdelecroix:

Old description:

> In some cases the element 0 of one cyclotomic field cannot be converted
> properly to 0
> in another cyclotomic field. For instance in Sage 7.1 and Sage 7.2.rc1:
> {{{
> sage: K12 = CyclotomicField(12)
> sage: K6 = CyclotomicField(6)
> sage: K12(K6(0))   # coercion K6 -> K12 is fine
> 0
> sage: K6(K12(0))   # partial conversion K12 -> K6 is not
> Traceback (most recent call last)
> ...
> TypeError: unable to coerce <class 'sage.rings.infinity.PlusInfinity'> to
> an integer
> }}}

New description:

 When there is an embedding `K -> L` of number fields, it comes with a
 coercion and Sage knows how to map elements of `K` as elements of `L`. But
 such embedding also comes with a partial map `L --> K`. In the case of
 cyclotomic field this partial map is only partially implemented...
 {{{
 sage: K12 = CyclotomicField(12)
 sage: K6 = CyclotomicField(6)
 sage: K12(K6(0))   # coercion K6 -> K12 is fine
 0
 sage: K6(K12(0))   # partial conversion K12 -> K6 is not
 Traceback (most recent call last)
 ...
 TypeError: unable to coerce <class 'sage.rings.infinity.PlusInfinity'> to
 an integer
 }}}
 More precisely, the partial conversion `L --> K` only works for roots of
 unity
 {{{
 sage: K6(K12.gen()**2)
 zeta6
 sage: K6(K12.gen()**4)
 zeta6 - 1
 }}}
 This behavior does not coincide with the fact that Sage knows how to
 convert rationals between number fields
 {{{
 sage: R.<cbrt2> = NumberField(x^3 - 2)
 sage: K6(R(1/3))
 1/3
 sage: R(K6(1/3))
 1/3
 }}}

 More generally, given two number fields there always are partial maps
 between them (well defined on the intersection). It would be nice if this
 would work as expected.

--

--
Ticket URL: <http://trac.sagemath.org/ticket/20261#comment:13>
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 https://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to