#8327: Implement the universal cyclotomic field, using Zumbroich basis
-------------------------------+--------------------------------------------
Reporter: nthiery | Owner: davidloeffler
Type: enhancement | Status: needs_review
Priority: major | Milestone:
Component: number fields | Keywords: Cyclotomic field, Zumbroich basis
Author: Christian Stump | Upstream: N/A
Reviewer: | Merged:
Work_issues: |
-------------------------------+--------------------------------------------
Description changed by stumpc5:
Old description:
> Here is a user story for this feature.
>
> We construct the universal cyclotomic field::
>
> {{{
> sage: F = CyclotomicField()
> }}}
>
> This field contains all roots of unity:
>
> {{{
> sage: z3 = F.zeta(3)
> sage: z3
> E(3)
> sage: z3^3
> 1
> sage: z5 = F.zeta(5)
> sage: z5
> E(5)
> sage: z5^5
> 1
> }}}
>
> It comes equipped with a distinguished basis, called the Zumbroich
> basis, which consists of a strict subset of all roots of unity::
>
> {{{
> sage: z9 = F.zeta(9)
> -E(9)^4-E(9)^7
> sage: z3 * z5
> sage: E(15)^8
> sage: z3 + z5
> -E(15)^2-2*E(15)^8-E(15)^11-E(15)^13-E(15)^14
> sage: [z9^i for i in range(0,9)]
> [1, -E(9)^4-E(9)^7, E(9)^2, E(3), E(9)^4, E(9)^5, E(3)^2, E(9)^7,
> -E(9)^2-E(9)^5 ]
> }}}
>
> Note: we might want some other style of pretty printing.
>
> The following is called AsRootOfUnity in Chevie; we might want instead
> to use (z1*z3).multiplicative_order()::
>
> {{{
> sage: (z1*z3).as_root_of_unity()
> 11/18
> }}}
>
> Depending on the progress on #6391 (lib gap), we might want to
> implement this directly in Sage or to instead expose GAP's
> implementation, creating elements as in::
>
> {{{
> sage: z5 = gap("E(5)")
> sage: z3 = gap("E(3)")
> sage: z3+z5
> -E(15)^2-2*E(15)^8-E(15)^11-E(15)^13-E(15)^14
> }}}
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).
--
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/8327#comment:11>
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.