repthy
Class AbelianGroup

Object
  extended byAbstractCollection
      extended byAbstractSet
          extended byImmutableSet
              extended byGroup
                  extended byHashGroup
                      extended byAbelianGroup
All Implemented Interfaces:
Collection, Set

public class AbelianGroup
extends HashGroup

What's purple and commutes?

An abelian group does not have to be implemented as an AbelianGroup. Any suitable subclass of Group may be used. However, several tools for abelian groups are only available for instances of this class. The AbelianGroup constructor makes it easy to convert a given abelian group into an isomorphic AbelianGroup with the same elements. The method Homomorphism.identity(repthy.Group, repthy.Group) gives the isomorphism.

Author:
Mark McConnell

Field Summary
 
Fields inherited from class Group
charTable
 
Constructor Summary
AbelianGroup(Group G)
          Given a Group, this constructs an AbelianGroup with the same elements.
 
Method Summary
protected  void fillInCharTable()
          Computes the character table directly from the Smith normal form.
 Homomorphism getIsomFromSNF()
          Return the tautological isomorphism from the Smith normal form of this group (as returned by getSNF()) to this group.
 Homomorphism getIsomToSNF()
          Return the tautological isomorphism from this group to the Smith normal form of this group (as returned by getSNF()).
 Group getSNF()
          Returns a group with the same elements as this, but exhibited in Smith normal form with the ProductGroup structure as shown.
 Subgroup getSylow(int p)
          Returns the unique Sylow p-subgroup of this group, as a Subgroup in which the underlying subgroup is a PGroup.
 String toString()
          Returns, for example, C_12 X C_2 X C_2.
 
Methods inherited from class HashGroup
contains, getConjClass, getConjClassIndex, getConjClassNum, iterator, size
 
Methods inherited from class Group
cyclicSubgpsUpToConj, describeOrder8, elementarySubgps, getCenter, getCentralizer, getCharComparator, getCharTable, getCommutatorSubgroup, getCompositionSeries, getConjClassRep, getEltOrder, getEltOrder, getIdentity, getOrder, getProperNormalSubgroup, isAbelian, isCentral, isSimple, isSubgroupOf, order, power, printTest, tableTest
 
Methods inherited from class ImmutableSet
add, addAll, clear, remove, removeAll, retainAll
 
Methods inherited from class AbstractSet
equals, hashCode
 
Methods inherited from class AbstractCollection
containsAll, isEmpty, toArray, toArray
 
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface Set
containsAll, isEmpty, toArray, toArray
 

Constructor Detail

AbelianGroup

public AbelianGroup(Group G)
Given a Group, this constructs an AbelianGroup with the same elements.

Throws:
IllegalArgumentException - If the given group isn't abelian.
Method Detail

getSylow

public Subgroup getSylow(int p)
Returns the unique Sylow p-subgroup of this group, as a Subgroup in which the underlying subgroup is a PGroup.

Overrides:
getSylow in class Group
Throws:
IllegalArgumentException - If p is not prime.

getSNF

public Group getSNF()
Returns a group with the same elements as this, but exhibited in Smith normal form with the ProductGroup structure as shown.

C1 × (C2 × (C3 × ... × Ck))

When k ≥ 2, each Ci is a non-trivial cyclic group (an instance of C_n), and the order of Ci+1 divides the order of Ci.

If the group is cyclic (k = 1), a single C_n is returned.


getIsomFromSNF

public Homomorphism getIsomFromSNF()
Return the tautological isomorphism from the Smith normal form of this group (as returned by getSNF()) to this group.


getIsomToSNF

public Homomorphism getIsomToSNF()
Return the tautological isomorphism from this group to the Smith normal form of this group (as returned by getSNF()).


fillInCharTable

protected void fillInCharTable()
                        throws OrthonormalityException
Computes the character table directly from the Smith normal form.

Overrides:
fillInCharTable in class Group
Throws:
OrthonormalityException - If the table isn't full at the end, or if anything goes wrong in the middle.

toString

public String toString()
Returns, for example, C_12 X C_2 X C_2.