#include <affhom.H>
Inheritance diagram for AffineHomomorphism< K >:
The main difference with a simple AbstractHomomorphism is that an affine hom can check if it is well-defined (see is_well_defined()). Also displays better. To do: is_injective, is surjective...
@return |
Definition at line 19 of file affhom.H.
Public Member Functions | |
AffineHomomorphism (const AffineAlgebra< K > *thesource, const AffineAlgebra< K > *thetarget) | |
void | make_identity (const AffineAlgebra< K > *ptr) |
turns the homomorphism into the identity | |
void | fix_alphabets () |
makes 100% sure that the alphabets in 'images' correspond to target | |
void | remove_extra_data () |
undefines the images of variables with index too high to make sense in source, updates the kernel too | |
bool | fill_zeroes () |
sets the undefined images to zero | |
void | get_data_from (const AbstractHomomorphism< K > &f) |
creates an AffineHomomorphism from an AbstractHomomorphism | |
bool | is_well_defined () const |
as the name says... target must have a grobner basis | |
AffineHomomorphism< K > | simple_section () const |
find a section in very simple cases | |
void | read_from_GAP_file (ifstream &file) |
read information from a file | |
void | compute_kernel () |
finds kernel generators | |
void | populate_associated_algebra () |
prepares the ground for kernel/image calculations | |
bool | maps_onto (const Polynomial< K > &P) const |
bool | maps_onto (const Polynomial< K > &P, Polynomial< K > &pre_image) const |
bool | factors_through (const Ideal< K > &J) const |
returns true iff this is zero on the ideal J | |
bool | is_finite () const |
returns true iff the ideal generated by the image is of finite codimension | |
bool | is_essentially_surjective () const |
returns true iff the ideal generated by the image is all of *target | |
bool | is_essentially_contained_in (const AffineHomomorphism< K > &g) const |
returns true iff the ideal generated by the image of this is included in that of g | |
AffineHomomorphism< K > & | operator *= (const AffineHomomorphism< K > &f) |
AffineHomomorphism< K > | operator * (const AffineHomomorphism< K > &f) const |
Public Attributes | |
const AffineAlgebra< K > * | source |
const AffineAlgebra< K > * | target |
Ideal< K > | kernel |
AffineAlgebra< K > | assoc_alg |
associated algebra | |
Friends | |
ostream & | operator<< (ostream &os, const AffineHomomorphism< K > &f) |
print | |
ofstream & | operator<< (ofstream &file, AffineHomomorphism< K > &f) |
write to file | |
void | operator>> (ifstream &file, AffineHomomorphism< K > &f) |
read from file |
|
finds kernel generators This fills this->kernel.generators with, well, generators for the kernel of *this. In fact, a reduced grobner basis is provided. So far, LEX is required. |
|
returns true iff this is zero on the ideal J *target must have a grobner basis Definition at line 327 of file affhom.H. Referenced by HomFinder::get_equivalence_class(). |
|
sets the undefined images to zero Not done by default as it might be useful to keep track of the undefined images |
|
makes 100% sure that the alphabets in 'images' correspond to target
Definition at line 60 of file affhom.H. Referenced by AffineHomomorphism< F_2 >::get_data_from(), AffineHomomorphism< F_2 >::make_identity(), and MilnorAnalyzer::re_setup(). |
|
creates an AffineHomomorphism from an AbstractHomomorphism The alphabets must be set BEFORE this is called. |
|
returns true iff the ideal generated by the image of this is included in that of g
Definition at line 409 of file affhom.H. Referenced by HomFinder::get_equivalence_class(). |
|
returns true iff the ideal generated by the image is all of *target When *source and *target are graded, this returns true iff this is surjective. |
|
returns true iff the ideal generated by the image is of finite codimension When *source and *target are graded, thus, this returns true iff *target is finitely generated as a module over *source.
|
|
as the name says... target must have a grobner basis This checks if the generators of the relations ideal in *source map to 0, relying on target->reduced_form(). Of course this only makes sense if *target has a grobner basis already computed. Definition at line 142 of file affhom.H. Referenced by HomFinder::filter_GL(). |
|
turns the homomorphism into the identity
Definition at line 53 of file affhom.H. Referenced by HomFinder::filter_GL(). |
|
prepares the ground for kernel/image calculations On the surface this looks like the method compute_kernel() except that the associated algebra is kept rather than discarded. The kernel is computed, too. The point is that the algebra is needed repeatedly if you need to make lots of computations with the image.
Definition at line 269 of file affhom.H. Referenced by DerivationAnalyzer::constant_subalgebra(), MilnorAnalyzer::done(), MilnorAnalyzer::re_setup(), DerivationAnalyzer::setup(), MilnorAnalyzer::setup_for_Sq1(), and MilnorAnalyzer::start(). |
|
read information from a file This expects to find in 'file' the following information: for each variable in *source, there will be a sequence of coefficients expressing the image of the variable as a linear combination of the variables in *target. All this in the obvious order. |
|
undefines the images of variables with index too high to make sense in source, updates the kernel too Typical use: you have killed a few variables from the "top" of *source, and you want to restrict the homomorphism to this new, smaller algebra. Assuming you are using LEX, you get a grobner basis for the kernel of this restriction by simply eliminating the relations involving the old variables. Definition at line 74 of file affhom.H. Referenced by AffineHomomorphism< F_2 >::get_data_from(). |
|
find a section in very simple cases This assumes that *this is a surjective homomorphism and moreover that each variable in the target is the image of a variable with the same name in the source. This looks for preimages chiefly on the basis of the names (!!) of the variables, and constructs a section, ie an f such that *this * f is the identity. This is very much ad hoc, of course. A typical use is right after AffineAlgebra<K>::find_redundancies(). |
|
write to file
|
|
|
|
read from file
|
|
associated algebra This is empty until you call populate_associated_algebra(). When you do, it contains the associated algebra which is needed (or at least very useful) in order to compute the kernel or the image of the homomorphism. |