#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: Rebase wrt #10771. Fix one doctest. | Upstream: N/A
Reviewer: | Author: Christian
Stump, Simon King
Merged: | Dependencies: #10771
---------------------------------------------------+------------------------
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:trac8327_lazy_import_UCF.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:
It is rebased and applies now on a new 4.8.alpha1 (NOT alpha0, but
alpha1!)
There was a syntax error on the plain 4.8.alpha1, which I first had to get
rid off.
Concerning the is_subring method, I get the following behaviour:
{{{
sage: UCF is UCF
True
sage: UCF.is_subring??
def is_subring(self,other):
r"""
Returns currently True if ``self`` and ``other`` coincide.
EXAMPLES::
sage: UCF.is_subring(UCF)
True
"""
return other is self
sage: UCF.is_subring(UCF)
False
}}}
This behaviour seems to be wired! But when replacing the lazy import of
the UCF by a proper import in sage.rings.all, the wired behaviour
disappears, so the problem must be something with the lazy import!
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/8327#comment:58>
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.