Changes between Initial Version and Version 11 of Ticket #8327
 Timestamp:
 10/17/10 14:40:25 (9 years ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

Ticket #8327
 Property Cc sagecombinat cwitty added

Property
Status
changed from
new
toneeds_review

Property
Authors
changed from
to
Christian Stump

Ticket #8327 – Description
initial v11 1 Here is a user story for this feature. 2 3 We construct the universal cyclotomic field:: 1 This patch provides the universal cyclotomic field 4 2 5 3 {{{ 6 sage: F = CyclotomicField() 4 sage: UCF 5 Universal Cyclotomic Field endowed with the Zumbroich basis 7 6 }}} 8 7 9 This field contains all roots of unity: 8 in sage. This field is the smallest field extension of QQ which contains all roots of unity. 10 9 11 10 {{{ 12 sage: z3 = F.zeta(3) 13 sage: z3 11 sage: E(3); E(3)^3 14 12 E(3) 15 sage: z3^316 13 1 17 sage: z5 = F.zeta(5)18 sage: z519 E( 5)20 sage: z5^514 sage: E(6); E(6)^2; E(6)^3; E(6)^6 15 E(3)^2 16 E(3) 17 1 21 18 1 22 19 }}} 23 20 24 21 It comes equipped with a distinguished basis, called the Zumbroich 25 basis, which consists of a strict subset of all roots of unity::22 basis, which gives, for any n, A basis of QQ( E(n) ) over QQ, where (n,k) stands for E(n)^k. 26 23 27 24 {{{ 28 sage: z9 = F.zeta(9) 29 E(9)^4E(9)^7 30 sage: z3 * z5 31 sage: E(15)^8 32 sage: z3 + z5 33 E(15)^22*E(15)^8E(15)^11E(15)^13E(15)^14 34 sage: [z9^i for i in range(0,9)] 35 [1, E(9)^4E(9)^7, E(9)^2, E(3), E(9)^4, E(9)^5, E(3)^2, E(9)^7, E(9)^2E(9)^5 ] 25 sage: UCF.zumbroich_basis(6) 26 [(6, 2), (6, 4)] 36 27 }}} 37 28 38 Note: we might want some other style of pretty printing. 39 40 The following is called AsRootOfUnity in Chevie; we might want instead 41 to use (z1*z3).multiplicative_order():: 29 As seen for E(6), every element in UCF is expressed in terms of the smallest cyclotomic field in which it is contained. 42 30 43 31 {{{ 44 sage: (z1*z3).as_root_of_unity()45 11/18 32 sage: E(6)*E(4) 33 E(12)^11 46 34 }}} 47 35 48 Depending on the progress on #6391 (lib gap), we might want to 49 implement this directly in Sage or to instead expose GAP's 50 implementation, creating elements as in:: 36 It provides arithmetics on UCF as addition, multiplication, and inverses: 51 37 52 38 {{{ 53 sage: z5 = gap("E(5)") 54 sage: z3 = gap("E(3)") 55 sage: z3+z5 56 E(15)^22*E(15)^8E(15)^11E(15)^13E(15)^14 39 sage: E(3)+E(4) 40 E(12)^4  E(12)^7  E(12)^11 41 sage: E(3)*E(4) 42 E(12)^7 43 sage: (E(3)+E(4)).inverse() 44 E(12)^4 + E(12)^8 + E(12)^11 45 sage: (E(3)+E(4))*(E(3)+E(4)).inverse() 46 1 57 47 }}} 48 49 And also things like Galois conjugates. 50 51 {{{ 52 sage: (E(3)+E(4)).galois_conjugates() 53 [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] 54 }}} 55 56 The ticket does not use the gap interface; it depends on #9651 (Addition of combinatorial free module).