#include <abshom.H>
Inheritance diagram for AbstractHomomorphism< K >:
This models a ring homomorphism between a polynomial ring on a countable set of variables, to another such ring (or itself, if you want). So quite simply, it remembers a bunch of polynomials, corresponding to some integers. Objects of this class know how to compose themselves using the * operator (f * g is really f AFTER g). In particular, these objects can be used in order to evaluate polynomials
Definition at line 22 of file abshom.H.
Public Member Functions | |
void | clear () |
undefine everything (ie set to zero) | |
Polynomial< K > | of_generator (long var) const |
void | set_image (long var, const Polynomial< K > &P) |
set f(var)= P | |
bool | has_image_set (long var) const |
returns true iff var has already an image defined | |
void | make_identity (long n) |
turns this into the identity on the first n variables | |
void | swap (long i, long j) |
self-obvious... | |
Polynomial< K > | of (const Polynomial< K > &P) const |
evaluate | |
AbstractHomomorphism< K > & | operator *= (const AbstractHomomorphism< K > &f) |
* = composition | |
AbstractHomomorphism< K > | operator * (const AbstractHomomorphism< K > &f) const |
* = composition | |
Protected Attributes | |
map< long, Polynomial< K > > | images |
the images of the generators -- nondefined means 0 | |
long | highest_var |
the highest index of a variable showing up in 'images' | |
Friends | |
ostream & | operator<< (ostream &os, const AbstractHomomorphism< K > &f) |
print | |
ofstream & | operator<< (ofstream &file, AbstractHomomorphism< K > &f) |
write to file | |
void | operator>> (ifstream &file, AbstractHomomorphism< K > &f) |
read from file |
|
undefine everything (ie set to zero)
Definition at line 45 of file abshom.H. Referenced by GradedAlgebra< F_2 >::even_subalgebra(), AffineAlgebra< F_2 >::find_redundancies(), AffineAlgebra< F_2 >::find_unitary_redundancies(), HomFinder::populate_GL(), MilnorAnalyzer::re_setup(), AffineHomomorphism< F_2 >::read_from_GAP_file(), UnstableAlgebra::saturate_and_reduce(), MilnorAnalyzer::setup_for_Sq1(), and DerivationAnalyzer::write_gens(). |
|
returns true iff var has already an image defined
Definition at line 67 of file abshom.H. Referenced by HomFinder::branch(), AffineHomomorphism< F_2 >::fill_zeroes(), and HomFinder::weight(). |
|
turns this into the identity on the first n variables
Definition at line 72 of file abshom.H. Referenced by AffineAlgebra< F_2 >::find_redundancies(), AffineAlgebra< F_2 >::find_unitary_redundancies(), AffineHomomorphism< F_2 >::make_identity(), and UnstableAlgebra::saturate_and_reduce(). |
|
evaluate The funny name allows one to write f.of(P). highest_var must be set properly for this to work (which is none of the user's concern!) Definition at line 96 of file abshom.H. Referenced by SW_Maker::add_complex_relations(), HomFinder::branch(), DerivationAnalyzer::constant_subalgebra(), MilnorAnalyzer::re_setup(), and MilnorAnalyzer::setup_for_Sq1(). |
|
* = composition
|
|
* = composition
|
|
|
self-obvious...
Definition at line 82 of file abshom.H. Referenced by MilnorAnalyzer::re_setup(), and MilnorAnalyzer::setup_for_Sq1(). |
|
write to file
|
|
|
|
read from file
|
|
the highest index of a variable showing up in 'images' This is useful to know when evaluating a polynomial, so the substitutions can go smoothly. The value is protected, so we can be sure that it is kept in a correct state. Note : In fact, we only make sure that highest_var contains an index that is >= to the highest index of a variable actually showing up. This is all we need. In some unlucky cases, there will be a tiny waste of memory when evaluating, if highest_var is too high. It does not seem worth fixing this (and speed would suffer). |
|
the images of the generators -- nondefined means 0
Definition at line 25 of file abshom.H. Referenced by AbstractHomomorphism< F_2 >::operator *(), and AbstractHomomorphism< F_2 >::operator *=(). |