Package sage :: Package modular :: Module dirichlet :: Class DirichletGroup
[show private | hide private]
[frames | no frames]

Type DirichletGroup

               Gens --+
                      |
         object --+   |
                  |   |
_uniqDirichletGroup --+
                      |
                     DirichletGroup


The group of Dirichlet character mod modulus with values in the
subgroup <zeta> of the multiplicative group of the base_ring.  If
the base_ring is omitted then we use Q(zeta_n), where n is the
exponent of (Z/NZ)^*.  If zeta is omitted then we compute and use
a maximal-order zeta in base_ring, if possible.

Creation function:
    DirichletGroup(modulus, base_ring=None, zeta=None, zeta_order=None)
INPUT:
    modulus -- int
    base_ring -- Ring (optional), where characters take their values
                 (should be an integral domain).
    zeta -- Element (optional), element of base_ring; zeta is a root of unity
    zeta_order -- int (optional), the order of zeta

OUTPUT:
    DirichletGroup -- a group of Dirichlet characters.

NOTES:
    Uniqueness -- If a group is created with the same parameters
    as another DirichletGroup still in memory, then the same group
    is returned instead of a new group defined by the same
    parameters.

EXAMPLES:
The default base ring is a cyclotomic field of order the exponent
of (Z/NZ)^*.
    >>> DirichletGroup(20)
    Group of Dirichlet characters of modulus 20 over Cyclotomic Field of order 4 and degree 2
    
We create the group of Dirichlet character mod 20 with values
in the rational numbers:
    >>> G = DirichletGroup(20, rings.RationalField()); G
    Group of Dirichlet characters of modulus 20 over Rational Field
    >>> G.order()
    4
    >>> G.base_ring()
    Rational Field

The elements of G print as lists giving the values of the
character on the generators of (Z/NZ)^*:
    >>> list(G)
    [[1,1], [-1,1], [1,-1], [-1,-1]]

Next we construct the group of Dirichlet character mod 20, but
with values in Q(zeta_n):
    >>> G = DirichletGroup(20)
    >>> G.list()
    [[1,1], [-1,1], [1,zeta_4], [-1,zeta_4], [1,-1], [-1,-1], [1,-zeta_4], [-1,-zeta_4]]

We next compute several invariants of G:
    >>> G.gens()
    [[-1,1], [1,zeta_4]]
    >>> G.unit_gens()
    [11, 17]
    >>> G.zeta()
    zeta_4
    >>> G.zeta_order()
    4

In this example we create a Dirichlet character with values in a
number field.  We have to give zeta, but not its order.
    >>> R = rings.PolynomialRing(rings.RationalField()); x = R.gen()
    >>> K = rings.NumberField(x**4 + 1); a = K.gen(0)
    >>> G = DirichletGroup(5, K, a); G
    Group of Dirichlet characters of modulus 5 over Number Field with defining polynomial x^4 + 1
    >>> G.list()
    [[1], [a^2], [-1], [-a^2]]

Method Summary
  __init__(self, modulus, base_ring, zeta, zeta_order)
  __call__(self, x)
  __cmp__(self, other)
  __len__(self)
  __repr__(self)
  base_ring(self)
Returns the base ring of self.
  change_base(self, R)
Returns the Dirichlet group over R with the same modulus as self.
  decomposition(self)
Returns the Dirichlet groups of prime power modulus corresponding to primes dividing modulus.
  galois_orbits(self)
Return a list of the Galois orbits of Dirichlet characters in self.
  gen(self, n)
  gens(self)
Returns generators of self.
  integers_mod(self)
Returns the group of integers Z/NZ where N is the modulus of self.
  modulus(self)
Returns the modulus of self.
  ngens(self)
Returns the number of generators of self.
  order(self)
  primitive_character(self)
Returns the primitive character associated to self.
  unit_gens(self)
Returns the minimal generators for the units of (Z/NZ)^*, where N is the modulus of self.
  zeta(self)
Returns the chosen root zeta of unity in the base ring R.
  zeta_order(self)
Returns the order of the chosen root zeta of unity in the base ring R.
    Inherited from object
  __delattr__(...)
x.__delattr__('name') <==> del x.name
  __getattribute__(...)
x.__getattribute__('name') <==> x.name
  __hash__(x)
x.__hash__() <==> hash(x)
  __reduce__(...)
helper for pickle
  __reduce_ex__(...)
helper for pickle
  __setattr__(...)
x.__setattr__('name', value) <==> x.name = value
  __str__(x)
x.__str__() <==> str(x)
    Inherited from Gens
  __getattr__(self, attrname)
  __getitem__(self, n)
  __getslice__(self, n, m)
  list(self)

Instance Method Details

base_ring(self)

Returns the base ring of self.

change_base(self, R)

Returns the Dirichlet group over R with the same modulus as self.

decomposition(self)

Returns the Dirichlet groups of prime power modulus corresponding to primes dividing modulus.

galois_orbits(self)

Return a list of the Galois orbits of Dirichlet characters in self.

The Galois group is the absolute Galois group of the prime subfield of Frac(R).

gens(self)

Returns generators of self.
Overrides:
sage.structure.gens.Gens.gens

integers_mod(self)

Returns the group of integers Z/NZ where N is the modulus of self.

modulus(self)

Returns the modulus of self.

ngens(self)

Returns the number of generators of self.

primitive_character(self)

Returns the primitive character associated to self.

unit_gens(self)

Returns the minimal generators for the units of (Z/NZ)^*, where N is the modulus of self.

zeta(self)

Returns the chosen root zeta of unity in the base ring R.

zeta_order(self)

Returns the order of the chosen root zeta of unity in the base ring R.

Generated by Epydoc 2.1 on Mon May 9 17:57:03 2005 http://epydoc.sf.net