regina::NHomMarkedAbelianGroup Class Reference
[Algebraic Structures]

Represents a homomorphism of finitely generated abelian groups. More...

#include <nmarkedabeliangroup.h>

Inheritance diagram for regina::NHomMarkedAbelianGroup:

regina::ShareableObject regina::boost::noncopyable

List of all members.

Public Member Functions

 NHomMarkedAbelianGroup (const NMarkedAbelianGroup &domain, const NMarkedAbelianGroup &range, const NMatrixInt &mat)
 Constructs a homomorphism from two marked abelian groups and a matrix that indicates where the generators are sent.
 NHomMarkedAbelianGroup (const NHomMarkedAbelianGroup &h)
 Copy constructor.
virtual ~NHomMarkedAbelianGroup ()
 Destructor.
bool isEpic () const
 Is this an epic homomorphism?
bool isMonic () const
 Is this a monic homomorphism?
bool isIso () const
 Is this an isomorphism?
bool isZero () const
 Is this the zero map?
const NMarkedAbelianGroupgetKernel () const
 Returns the kernel of this homomorphism.
const NMarkedAbelianGroupgetCokernel () const
 Returns the cokernel of this homomorphism.
const NMarkedAbelianGroupgetImage () const
 Returns the image of this homomorphism.
virtual void writeTextShort (std::ostream &out) const
 Short text representation.
const NMarkedAbelianGroupgetDomain () const
 Returns the domain of this homomorphism.
const NMarkedAbelianGroupgetRange () const
 Returns the range of this homomorphism.
const NMatrixIntgetDefiningMatrix () const
 Returns the defining matrix for the homomorphism.
const NMatrixIntgetReducedMatrix () const
 For internal use only.
void writeReducedMatrix (std::ostream &out) const
 For internal use only.


Detailed Description

Represents a homomorphism of finitely generated abelian groups.

One initializes such a homomorphism by providing:

So for example, if the domain was initialized by the chain complex Z^a --A--> Z^b --B--> Z^c and the range was initialized by Z^d --D--> Z^e --E--> Z^f, then the matrix needs to be an e-by-b matrix. Furthermore, you only obtain a well-defined homomorphism if this matrix extends to a chain map (which this class assumes).

Author:
Ryan Budney

Constructor & Destructor Documentation

regina::NHomMarkedAbelianGroup::NHomMarkedAbelianGroup ( const NMarkedAbelianGroup domain,
const NMarkedAbelianGroup range,
const NMatrixInt mat 
) [inline]

Constructs a homomorphism from two marked abelian groups and a matrix that indicates where the generators are sent.

This is the sole NHomMarkedAbelianGroup constructor, other than the copy constructor.

The roles of the two groups and the matrix are described in detail in the NHomMarkedAbelianGroup class overview.

The matrix must be given in the chain-complex coordinates. Specifically, if domain was defined via the chain complex Z^a --N1--> Z^b --M1--> Z^c and range was defined via Z^d --N2--> Z^e --M2--> Z^f, then mat is an e-by-b matrix that describes a homomorphism from Z^b to Z^e.

In order for this to make sense as a homomorphism of the groups represented by domain and range respectively, one requires img(mat*N1) to be a subset of img(N2). Similarly, ker(M1) must be sent into ker(M2). These facts are not checked, but are assumed as preconditions of this constructor.

Precondition:
The matrix mat has the required dimensions e-by-b, gives img(mat*N1) as a subset of img(N2), and sends ker(M1) into ker(M2), as explained in the detailed notes above.
Parameters:
domain the domain group.
range the range group.
mat the matrix that describes the homomorphism from domain to range.

regina::NHomMarkedAbelianGroup::NHomMarkedAbelianGroup ( const NHomMarkedAbelianGroup h  ) 

Copy constructor.

Parameters:
h the homomorphism to clone.

regina::NHomMarkedAbelianGroup::~NHomMarkedAbelianGroup (  )  [inline, virtual]

Destructor.


Member Function Documentation

bool regina::NHomMarkedAbelianGroup::isEpic (  )  const [inline]

Is this an epic homomorphism?

Returns:
true if this homomorphism is epic.

bool regina::NHomMarkedAbelianGroup::isMonic (  )  const [inline]

Is this a monic homomorphism?

Returns:
true if this homomorphism is monic.

bool regina::NHomMarkedAbelianGroup::isIso (  )  const [inline]

Is this an isomorphism?

Returns:
true if this homomorphism is an isomorphism.

bool regina::NHomMarkedAbelianGroup::isZero (  )  const [inline]

Is this the zero map?

Returns:
true if this homomorphism is the zero map.

const NMarkedAbelianGroup & regina::NHomMarkedAbelianGroup::getKernel (  )  const [inline]

Returns the kernel of this homomorphism.

Returns:
the kernel of the homomorphism, as a marked abelian group.

const NMarkedAbelianGroup & regina::NHomMarkedAbelianGroup::getCokernel (  )  const [inline]

Returns the cokernel of this homomorphism.

Returns:
the cokernel of the homomorphism, as a marked abelian group.

const NMarkedAbelianGroup & regina::NHomMarkedAbelianGroup::getImage (  )  const [inline]

Returns the image of this homomorphism.

Returns:
the image of the homomorphism, as a marked abelian group.

virtual void regina::NHomMarkedAbelianGroup::writeTextShort ( std::ostream &  out  )  const [virtual]

Short text representation.

This will state some basic properties of the homomorphism, such as:

Parameters:
out the stream to write to.

Implements regina::ShareableObject.

const NMarkedAbelianGroup & regina::NHomMarkedAbelianGroup::getDomain (  )  const [inline]

Returns the domain of this homomorphism.

Returns:
the domain that was used to define the homomorphism.

const NMarkedAbelianGroup & regina::NHomMarkedAbelianGroup::getRange (  )  const [inline]

Returns the range of this homomorphism.

Returns:
the range that was used to define the homomorphism.

const NMatrixInt & regina::NHomMarkedAbelianGroup::getDefiningMatrix (  )  const [inline]

Returns the defining matrix for the homomorphism.

Returns:
the matrix that was used to define the homomorphism.

const NMatrixInt & regina::NHomMarkedAbelianGroup::getReducedMatrix (  )  const [inline]

For internal use only.

Returns the internal reduced matrix representing the homomorphism.

Returns:
a copy of the internal representation of the homomorphism.

void regina::NHomMarkedAbelianGroup::writeReducedMatrix ( std::ostream &  out  )  const

For internal use only.

Writes a human-readable version of the reduced matrix to the given output stream. This is a description of the homomorphism in some specific coordinates at present only meant to be internal to NHomMarkedAbelianGroup.

Python:
The out argument is missing; instead this is assumed to be standard output.
Parameters:
out the output stream.


The documentation for this class was generated from the following file:
Copyright © 1999-2007, Ben Burton
This software is released under the GNU General Public License.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@debian.org).