Opened 10 years ago

Last modified 7 years ago

## #8327 closed enhancement

# Implement the universal cyclotomic field, using Zumbroich basis — at Initial Version

Reported by: | nthiery | Owned by: | davidloeffler |
---|---|---|---|

Priority: | major | Milestone: | sage-5.7 |

Component: | number fields | Keywords: | Cyclotomic field, Zumbroich basis |

Cc: | sage-combinat, cwitty | Merged in: | |

Authors: | Reviewers: | ||

Report Upstream: | N/A | Work issues: | |

Branch: | Commit: | ||

Dependencies: | Stopgaps: |

### 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

**Note:**See TracTickets for help on using tickets.