Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

atlas::abelian::Homomorphism Class Reference

#include <abelian.h>

Collaboration diagram for atlas::abelian::Homomorphism:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Homomorphism (const std::vector< GrpArr > &, const GroupType &, const GroupType &)
void apply (GrpArr &, const GrpArr &) const
GrpNbr apply (GrpNbr) const
bool defined (const GrpArr &) const
bool defined (GrpNbr) const

Private Attributes

GroupType d_source
GroupType d_dest
GroupType d_cosource
GroupType d_codest
unsigned long d_annihilator
matrix::Matrix< unsigned long > d_matrix

Detailed Description

A Homomorphism object represents a homomorphism from a group of type d_source to a group of type d_dest, where the elements are represented as arrays.

As we know, for such a homomorphism to be well defined, the matrix entry (i,j) should be a multiple of d_dest[i]/g, with g = gcd(d_dest[i],d_source[j]).

Here we take a different approach. We set M a common multiple of the annihilators of d_source and d_dest. Then we allow arbitrary coefficients in Z/M. The corresponding matrix is interpreted as follows. It is defined only for those tuples (x_1,...,x_m) s.t. for all i, sum_j a_ij q_j x_j is of index t_i in Z/M, where (q_j) is the cotype of d_source w.r.t. M; and then the corresponding value y_i is (sum_j a_ij q_j x_j)/(M/t_i). It is easy to see that this definition is in fact independent of the choice of M (of course we will take the lcm of the annihilators.)

Definition at line 207 of file abelian.h.


Constructor & Destructor Documentation

atlas::abelian::Homomorphism::Homomorphism const std::vector< GrpArr > &  al,
const GroupType source,
const GroupType dest
 

Synopsis: constructs the homomorphism with matrix al, from a group of type source to a group of type dest.

Precondition: the elements of al are of size source.size(), and their number is dest.size();

Definition at line 407 of file abelian.cpp.

References d_annihilator, d_codest, d_cosource, d_dest, d_matrix, d_source, and atlas::arithmetic::lcm().


Member Function Documentation

GrpNbr atlas::abelian::Homomorphism::apply GrpNbr  source  )  const
 

Synopsis: return h(source).

Precondition: source is in the subgroup for which this makes sense;

Forwarded to the GrpArr form.

Definition at line 477 of file abelian.cpp.

References atlas::abelian::toArray(), and atlas::abelian::toGrpNbr().

void atlas::abelian::Homomorphism::apply GrpArr dest,
const GrpArr source
const
 

Synopsis: applies the homomorphism to source according to the rules explained in the introduction to this section, and puts the result in dest.

Precondition: source is in the subgroup for which this makes sense; dest is already allocated to the correct size.

NOTE: we put in an assertion for safety.

NOTE: sloppy implementation; we don't worry about overflow.

Definition at line 449 of file abelian.cpp.

bool atlas::abelian::Homomorphism::defined GrpNbr  x  )  const
 

Synopsis: tells whether x is in the domain.

Forwarded to the array-version.

Definition at line 517 of file abelian.cpp.

References atlas::abelian::toArray().

bool atlas::abelian::Homomorphism::defined const GrpArr a  )  const
 

Synopsis: tells whether a is in the domain.

This means that a satisfies the congruences stated in the apply function.

Definition at line 496 of file abelian.cpp.


Member Data Documentation

unsigned long atlas::abelian::Homomorphism::d_annihilator [private]
 

Definition at line 215 of file abelian.h.

Referenced by Homomorphism().

GroupType atlas::abelian::Homomorphism::d_codest [private]
 

Definition at line 214 of file abelian.h.

Referenced by Homomorphism().

GroupType atlas::abelian::Homomorphism::d_cosource [private]
 

Definition at line 213 of file abelian.h.

Referenced by Homomorphism().

GroupType atlas::abelian::Homomorphism::d_dest [private]
 

Definition at line 212 of file abelian.h.

Referenced by Homomorphism().

matrix::Matrix<unsigned long> atlas::abelian::Homomorphism::d_matrix [private]
 

Definition at line 216 of file abelian.h.

Referenced by Homomorphism().

GroupType atlas::abelian::Homomorphism::d_source [private]
 

Definition at line 211 of file abelian.h.

Referenced by Homomorphism().


The documentation for this class was generated from the following files:
Generated on Wed Mar 26 16:52:18 2008 for atlas by  doxygen 1.3.9.1