#8327: Implement the universal cyclotomic field, using Zumbroich basis
--------------------------------------------------------------------------------------------------------------------+
   Reporter:  nthiery                                                           
                                    |          Owner:                           
        
       Type:  enhancement                                                       
                                    |         Status:  needs_review             
        
   Priority:  major                                                             
                                    |      Milestone:  sage-4.8                 
        
  Component:  number fields                                                     
                                    |       Keywords:  Cyclotomic field, 
Zumbroich basis
Work_issues:  Find dependency or rebase first patch. Fix doctests. Needs more 
doctests and Sphinxified docstrings.  |       Upstream:  N/A                    
          
   Reviewer:                                                                    
                                    |         Author:  Christian Stump, Simon 
King      
     Merged:                                                                    
                                    |   Dependencies:                           
        
--------------------------------------------------------------------------------------------------------------------+
Changes (by stumpc5):

  * status:  needs_work => needs_review


Old description:

> This patch provides the universal cyclotomic field
>
> {{{
>     sage: UCF
>     Universal Cyclotomic Field endowed with the Zumbroich basis
> }}}
>
> in sage. This field is the smallest field extension of QQ which contains
> all roots of unity.
>
> {{{
>     sage: E(3); E(3)^3
>     E(3)
>     1
>     sage: E(6); E(6)^2; E(6)^3; E(6)^6
>     -E(3)^2
>     E(3)
>     -1
>     1
> }}}
>
> It comes equipped with a distinguished basis, called the Zumbroich
> basis, which gives, for any n, A basis of QQ( E(n) ) over QQ, where (n,k)
> stands for E(n)^k.
>
> {{{
>     sage: UCF.zumbroich_basis(6)
>     [(6, 2), (6, 4)]
> }}}
>
> As seen for E(6), every element in UCF is expressed in terms of the
> smallest cyclotomic field in which it is contained.
>
> {{{
> sage: E(6)*E(4)
> -E(12)^11
> }}}
>
> It provides arithmetics on UCF as addition, multiplication, and inverses:
>
> {{{
>     sage: E(3)+E(4)
>     E(12)^4 - E(12)^7 - E(12)^11
>     sage: E(3)*E(4)
>     E(12)^7
>     sage: (E(3)+E(4)).inverse()
>     E(12)^4 + E(12)^8 + E(12)^11
>     sage: (E(3)+E(4))*(E(3)+E(4)).inverse()
>     1
> }}}
>
> And also things like Galois conjugates.
>
> {{{
>     sage: (E(3)+E(4)).galois_conjugates()
>     [E(12)^4 - E(12)^7 - E(12)^11, -E(12)^7 + E(12)^8 - E(12)^11, E(12)^4
> + E(12)^7 + E(12)^11, E(12)^7 + E(12)^8 + E(12)^11]
> }}}
>
> The ticket does not use the gap interface; it depends on #9651 (Addition
> of combinatorial free module).
>
> __Apply__
>
>  * [attachment:trac_8327_universal_cyclotomic_field-cs.patch]
>  * [attachment:trac_8327_universal_cyclotomic_field_new_cython-sk.patch]

New description:

 This patch provides the universal cyclotomic field

 {{{
     sage: UCF
     Universal Cyclotomic Field endowed with the Zumbroich basis
 }}}

 in sage. This field is the smallest field extension of QQ which contains
 all roots of unity.

 {{{
     sage: E(3); E(3)^3
     E(3)
     1
     sage: E(6); E(6)^2; E(6)^3; E(6)^6
     -E(3)^2
     E(3)
     -1
     1
 }}}

 It comes equipped with a distinguished basis, called the Zumbroich
 basis, which gives, for any n, A basis of QQ( E(n) ) over QQ, where (n,k)
 stands for E(n)^k.

 {{{
     sage: UCF.zumbroich_basis(6)
     [(6, 2), (6, 4)]
 }}}

 As seen for E(6), every element in UCF is expressed in terms of the
 smallest cyclotomic field in which it is contained.

 {{{
 sage: E(6)*E(4)
 -E(12)^11
 }}}

 It provides arithmetics on UCF as addition, multiplication, and inverses:

 {{{
     sage: E(3)+E(4)
     E(12)^4 - E(12)^7 - E(12)^11
     sage: E(3)*E(4)
     E(12)^7
     sage: (E(3)+E(4)).inverse()
     E(12)^4 + E(12)^8 + E(12)^11
     sage: (E(3)+E(4))*(E(3)+E(4)).inverse()
     1
 }}}

 And also things like Galois conjugates.

 {{{
     sage: (E(3)+E(4)).galois_conjugates()
     [E(12)^4 - E(12)^7 - E(12)^11, -E(12)^7 + E(12)^8 - E(12)^11, E(12)^4
 + E(12)^7 + E(12)^11, E(12)^7 + E(12)^8 + E(12)^11]
 }}}

 The ticket does not use the gap interface; it depends on #9651 (Addition
 of combinatorial free module).

 __Apply__

  * [attachment:trac_8327_universal_cyclotomic_field-cs.patch]

--

Comment:

 I found the bug and fixed it, all the above doctests now work (but only on
 4.7.1, the other version is still building and will take more time).

 What about "needs more doctests and Sphinxified docstrings"? I agree that
 the cython part is still not well documented. Could you be specific where
 I should explain better what's going on? Part of the problem is that
 computing the Zumbroich basis is something that is not simple to
 understand without really looking at the paper. And even after
 understanding that, everything becomes unreadable after implementing it in
 a (hopefully fairly) fast way in cython...

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