Represents a homomorphism of finitely generated abelian groups. More...
#include <nmarkedabeliangroup.h>
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 NMarkedAbelianGroup & | getKernel () const |
Returns the kernel of this homomorphism. | |
const NMarkedAbelianGroup & | getCokernel () const |
Returns the cokernel of this homomorphism. | |
const NMarkedAbelianGroup & | getImage () const |
Returns the image of this homomorphism. | |
virtual void | writeTextShort (std::ostream &out) const |
Short text representation. | |
const NMarkedAbelianGroup & | getDomain () const |
Returns the domain of this homomorphism. | |
const NMarkedAbelianGroup & | getRange () const |
Returns the range of this homomorphism. | |
const NMatrixInt & | getDefiningMatrix () const |
Returns the defining matrix for the homomorphism. | |
const NMatrixInt & | getReducedMatrix () const |
For internal use only. | |
void | writeReducedMatrix (std::ostream &out) const |
For internal use only. |
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).
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.
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.
h | the homomorphism to clone. |
regina::NHomMarkedAbelianGroup::~NHomMarkedAbelianGroup | ( | ) | [inline, virtual] |
Destructor.
const NMarkedAbelianGroup & regina::NHomMarkedAbelianGroup::getCokernel | ( | ) | const [inline] |
Returns the cokernel of this homomorphism.
const NMatrixInt & regina::NHomMarkedAbelianGroup::getDefiningMatrix | ( | ) | const [inline] |
Returns the defining matrix for the homomorphism.
const NMarkedAbelianGroup & regina::NHomMarkedAbelianGroup::getDomain | ( | ) | const [inline] |
Returns the domain of this homomorphism.
const NMarkedAbelianGroup & regina::NHomMarkedAbelianGroup::getImage | ( | ) | const [inline] |
Returns the image of this homomorphism.
const NMarkedAbelianGroup & regina::NHomMarkedAbelianGroup::getKernel | ( | ) | const [inline] |
Returns the kernel of this homomorphism.
const NMarkedAbelianGroup & regina::NHomMarkedAbelianGroup::getRange | ( | ) | const [inline] |
Returns the range of this homomorphism.
const NMatrixInt & regina::NHomMarkedAbelianGroup::getReducedMatrix | ( | ) | const [inline] |
For internal use only.
Returns the internal reduced matrix representing the homomorphism.
bool regina::NHomMarkedAbelianGroup::isEpic | ( | ) | const [inline] |
Is this an epic homomorphism?
bool regina::NHomMarkedAbelianGroup::isIso | ( | ) | const [inline] |
Is this an isomorphism?
bool regina::NHomMarkedAbelianGroup::isMonic | ( | ) | const [inline] |
Is this a monic homomorphism?
bool regina::NHomMarkedAbelianGroup::isZero | ( | ) | const [inline] |
Is this the zero map?
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.
out | the output stream. |
virtual void regina::NHomMarkedAbelianGroup::writeTextShort | ( | std::ostream & | out | ) | const [virtual] |
Short text representation.
This will state some basic properties of the homomorphism, such as:
out | the stream to write to. |
Implements regina::ShareableObject.