Regina Calculation Engine
|
Represents a homomorphism of finitely generated abelian groups. More...
#include <algebra/markedabeliangroup.h>
Public Member Functions | |
HomMarkedAbelianGroup (const MarkedAbelianGroup &dom, const MarkedAbelianGroup &ran, const MatrixInt &mat) | |
Constructs a homomorphism from two marked abelian groups and a matrix that indicates where the generators are sent. More... | |
HomMarkedAbelianGroup (const HomMarkedAbelianGroup &h) | |
Copy constructor. More... | |
~HomMarkedAbelianGroup () | |
Destructor. More... | |
bool | isChainMap (const HomMarkedAbelianGroup &other) const |
Determines whether this and the given homomorphism together form a chain map. More... | |
bool | isCycleMap () const |
Is this at least a cycle map? If not, pretty much any further computations you try with this class will be give you nothing more than carefully-crafted garbage. More... | |
bool | isEpic () const |
Is this an epic homomorphism? More... | |
bool | isMonic () const |
Is this a monic homomorphism? More... | |
REGINA_INLINE_REQUIRED bool | isIsomorphism () const |
Is this an isomorphism? More... | |
bool | isZero () const |
Is this the zero map? More... | |
bool | isIdentity () const |
Is this the identity automorphism? More... | |
REGINA_INLINE_REQUIRED const MarkedAbelianGroup & | kernel () const |
Returns the kernel of this homomorphism. More... | |
REGINA_INLINE_REQUIRED const MarkedAbelianGroup & | cokernel () const |
Returns the cokernel of this homomorphism. More... | |
REGINA_INLINE_REQUIRED const MarkedAbelianGroup & | image () const |
Returns the image of this homomorphism. More... | |
void | writeTextShort (std::ostream &out) const |
Short text representation. More... | |
void | writeTextLong (std::ostream &out) const |
A more detailed text representation of the homomorphism. More... | |
const MarkedAbelianGroup & | domain () const |
Returns the domain of this homomorphism. More... | |
const MarkedAbelianGroup & | range () const |
Returns the range of this homomorphism. More... | |
const MatrixInt & | definingMatrix () const |
Returns the defining matrix for the homomorphism. More... | |
const MatrixInt & | reducedMatrix () const |
Returns the internal reduced matrix representing the homomorphism. More... | |
std::vector< Integer > | evalCC (const std::vector< Integer > &input) const |
Evaluate the image of a vector under this homomorphism, using the original chain complexes' coordinates. More... | |
std::vector< Integer > | evalSNF (const std::vector< Integer > &input) const |
Evaluate the image of a vector under this homomorphism, using the Smith normal form coordinates. More... | |
std::unique_ptr< HomMarkedAbelianGroup > | inverseHom () const |
Returns the inverse to a HomMarkedAbelianGroup. More... | |
std::unique_ptr< HomMarkedAbelianGroup > | operator* (const HomMarkedAbelianGroup &X) const |
Returns the composition of two homomorphisms. More... | |
std::unique_ptr< HomMarkedAbelianGroup > | torsionSubgroup () const |
Returns a HomMarkedAbelianGroup representing the induced map on the torsion subgroups. More... | |
void | writeReducedMatrix (std::ostream &out) const |
Writes a human-readable version of the reduced matrix to the given output stream. More... | |
HomMarkedAbelianGroup & | operator= (const HomMarkedAbelianGroup &)=delete |
std::string | str () const |
Returns a short text representation of this object. More... | |
std::string | utf8 () const |
Returns a short text representation of this object using unicode characters. More... | |
std::string | detail () const |
Returns a detailed text representation of this object. More... | |
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
with mod p coefficients, and the range was initialized by Z^d –D--> Z^e –E--> Z^f
with mod q coefficients, 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 cycle map, which this class assumes but which the user can confirm with isCycleMap(). Moreover, q should divide p: this allows for q > 0 and p = 0, which means the domain has Z coefficients and the range has mod q coefficients.
|
inherited |
Returns a detailed text representation of this object.
This text may span many lines, and should provide the user with all the information they could want. It should be human-readable, should not contain extremely long lines (which cause problems for users reading the output in a terminal), and should end with a final newline. There are no restrictions on the underlying character set.
|
inherited |
Returns a short text representation of this object.
This text should be human-readable, should fit on a single line, and should not end with a newline. Where possible, it should use plain ASCII characters.
str()
.
|
inherited |
Returns a short text representation of this object using unicode characters.
Like str(), this text should be human-readable, should fit on a single line, and should not end with a newline. In addition, it may use unicode characters to make the output more pleasant to read. This string will be encoded in UTF-8.