Regina Calculation Engine
|
Represents a homomorphism between groups which are described via finite presentations. More...
#include <algebra/homgrouppresentation.h>
Public Member Functions | |
HomGroupPresentation (const GroupPresentation &domain, const GroupPresentation &range, const std::vector< GroupExpression > &map) | |
Creates a new homomorphism from the given data. More... | |
HomGroupPresentation (const GroupPresentation &domain, const GroupPresentation &range, const std::vector< GroupExpression > &map, const std::vector< GroupExpression > &inv) | |
Creates a declared isomorphism from the given data. More... | |
HomGroupPresentation (const GroupPresentation &groupForIdentity) | |
Creates a new identity homomorphism for the given group. More... | |
HomGroupPresentation (const HomGroupPresentation &cloneMe) | |
Creates a clone of the given group presentation. More... | |
~HomGroupPresentation () | |
Destroys the group homomorphism. More... | |
const GroupPresentation & | domain () const |
The domain of the map. More... | |
const GroupPresentation & | range () const |
The range of the map. More... | |
bool | knowsInverse () const |
Returns whether or not this is a declared isomorphism. More... | |
GroupExpression | evaluate (const GroupExpression &arg) const |
Evaluate the homomorphism at an element of the domain. More... | |
GroupExpression | evaluate (unsigned long i) const |
Evaluate the homomorphism at a generator of the domain. More... | |
GroupExpression | invEvaluate (const GroupExpression &arg) const |
Evaluate the isomorphisms's inverse at an element of the range. More... | |
GroupExpression | invEvaluate (unsigned long i) const |
Evaluate the isomorphism at a generator of the range. More... | |
bool | intelligentSimplify () |
Simultaneously simplifies: More... | |
bool | intelligentNielsen () |
Simplifies the domain and range using only Nielsen moves, keeping track of the resulting map in the progress. More... | |
bool | smallCancellation () |
Simplifies the domain and range using only small cancellation theory. More... | |
std::unique_ptr< HomGroupPresentation > | composeWith (const HomGroupPresentation &input) const |
Composes this homomorphism with the given input homomorphism. More... | |
bool | invert () |
Inverts the homomorphism. More... | |
bool | verify () const |
Verifies the map is a valid homomorphism. More... | |
bool | verifyIsomorphism () const |
Attempts to verify that a declared isomorphism is, indeed, an isomorphism. More... | |
std::unique_ptr< HomMarkedAbelianGroup > | markedAbelianisation () const |
Computes the induced map on the abelianizations of the domain and range. More... | |
void | writeTextShort (std::ostream &out) const |
Writes a short text representation of this object to the given output stream. More... | |
void | writeTextLong (std::ostream &out) const |
Writes a detailed text representation of this object to the given output stream. More... | |
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 between groups which are described via finite presentations.
Some homomorphisms may be declared isomorphisms. This means that the user (or some other function in Regina) has proven that this is an isomorphism and has explicitly provided the inverse map. To provide the inverse map, you should call the four-argument constructor HomGroupPresentation(const GroupPresentation&, const GroupPresentation&, const std::vector<GroupExpression>&, const std::vector<GroupExpression>&).
You can test for a declared isomorphism by calling knowsInverse(). Even if a homomorphism is not a declared isomorphism, it might still be an isomorphism; this just means that no inverse map was explicitly provided.
|
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.