Package sage :: Package groups :: Package abelian_gps :: Module dual_abelian_group
[hide private]
[frames] | no frames]

Module dual_abelian_group

source code


Basic functionality for dual groups of finite multiplicative Abelian groups

AUTHOR:
    -- David Joyner (2006-08) (based on abelian_groups)
    -- David Joyner (2006-10) modifications suggested by William Stein
    
TODO:
   * additive abelian groups should also be supported.

The basic idea is very simple. Let G be an abelian group and
$G^*$ its dual (i.e., the group of homomorphisms from G to
$\CC^\times$). Let $g_j$, $j=1,..,n$, denote generators of $G$ - say $g_j$
is of order $m_j>1$. There are generators $X_j$, $j=1,..,n$, of $G^*$ for which
$X_j(g_j)=\exp(2\pi i/m_j)$ and $X_i(g_j)=1$ if $i\not= j$. These
are used to construct $G^*$ in the DualAbelianGroup class below.

SAGE supports multiplicative abelian groups on any prescribed finite
number $n > 0$ of generators.  Use the \code{AbelianGroup} function
to create an abelian group, the \code{DualAbelianGroup} function
to create its dual, and then the \code{gen} and \code{gens}
functions to obtain the corresponding generators.  You can print the
generators as arbitrary strings using the optional \code{names}
argument to the \code{DualAbelianGroup} function.



Classes [hide private]
  DualAbelianGroup_class
Dual of abelian group.
Functions [hide private]
 
DualAbelianGroup(G, names='X', base_ring=Complex Field with 53 bits of precision)
Create the dual group of the multiplicative abelian group $G$.
source code
 
is_DualAbelianGroup(x)
Return True if $x$ is the dual group of an abelian group.
source code
Variables [hide private]
  ZZ = ['4ti2-20061025', 'R-2.6.0', 'atlas-3.7.37', 'atlas-3.8.1...
  CC = Complex Field with 53 bits of precision
Function Details [hide private]

DualAbelianGroup(G, names='X', base_ring=Complex Field with 53 bits of precision)

source code 

Create the dual group of the multiplicative abelian group $G$.

INPUT:
    G     -- a finite abelian group
    names -- (optional) names of generators

OUTPUT:
    The dual group of G.

EXAMPLES:
    sage: F = AbelianGroup(5, [2,5,7,8,9], names='abcde')
    sage: (a, b, c, d, e) = F.gens()
    sage: Fd = DualAbelianGroup(F,names='ABCDE')
    sage: A,B,C,D,E = Fd.gens()
    sage: A(a)    ## random
    -1.0000000000000000 + 0.00000000000000013834419720915037*I
    sage: A(b); A(c); A(d); A(e)
    1.00000000000000
    1.00000000000000
    1.00000000000000
    1.00000000000000        

is_DualAbelianGroup(x)

source code 

Return True if $x$ is the dual group of an abelian group.

EXAMPLES:
    sage: F = AbelianGroup(5,[3,5,7,8,9],names = list("abcde"))
    sage: Fd = DualAbelianGroup(F)
    sage: is_DualAbelianGroup(Fd)
    True
    sage: F = AbelianGroup(3,[1,2,3],names='a')
    sage: Fd = DualAbelianGroup(F)
    sage: Fd.gens()
    (X0, X1)
    sage: F.gens()
    (a0, a1)


Variables Details [hide private]

ZZ

Value:
['4ti2-20061025',
 'R-2.6.0',
 'atlas-3.7.37',
 'atlas-3.8.1',
 'atlas-3.8.1.p1',
 'atlas-3.8.1.p3',
 'atlas-3.8.p11',
 'atlas-3.8.p6',
...