Main Page | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

AbstractHomomorphism< K > Class Template Reference

#include <abshom.H>

Inheritance diagram for AbstractHomomorphism< K >:

AffineHomomorphism< K > List of all members.

Detailed Description

template<class K>
class AbstractHomomorphism< K >

AbstractHomomorphism class: maps between polynomial algebras.

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

See also:
of.

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


Member Function Documentation

template<class K>
void AbstractHomomorphism< K >::clear  )  [inline]
 

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().

template<class K>
bool AbstractHomomorphism< K >::has_image_set long  var  )  const [inline]
 

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().

template<class K>
void AbstractHomomorphism< K >::make_identity long  n  )  [inline]
 

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().

template<class K>
Polynomial<K> AbstractHomomorphism< K >::of const Polynomial< K > &  P  )  const [inline]
 

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().

template<class K>
AbstractHomomorphism<K> AbstractHomomorphism< K >::operator * const AbstractHomomorphism< K > &  f  )  const [inline]
 

* = composition

Definition at line 135 of file abshom.H.

template<class K>
AbstractHomomorphism<K>& AbstractHomomorphism< K >::operator *= const AbstractHomomorphism< K > &  f  )  [inline]
 

* = composition

Definition at line 123 of file abshom.H.

template<class K>
void AbstractHomomorphism< K >::set_image long  var,
const Polynomial< K > &  P
[inline]
 

set f(var)= P

Definition at line 58 of file abshom.H.

Referenced by SW_Maker::add_complex_relations(), HomFinder::branch(), DerivationAnalyzer::constant_subalgebra(), GradedAlgebra< F_2 >::even_subalgebra(), HomFinder::extend(), AffineHomomorphism< F_2 >::fill_zeroes(), AffineAlgebra< F_2 >::find_redundancies(), AffineAlgebra< F_2 >::find_unitary_redundancies(), AbstractHomomorphism< F_2 >::operator *(), AbstractHomomorphism< F_2 >::operator *=(), MilnorAnalyzer::re_setup(), AffineHomomorphism< F_2 >::read_from_GAP_file(), UnstableAlgebra::saturate_and_reduce(), HomFinder::set_hom_from_matrix(), DerivationAnalyzer::setup(), MilnorAnalyzer::setup_for_Sq1(), AffineHomomorphism< F_2 >::simple_section(), and HomFinder::sort().

template<class K>
void AbstractHomomorphism< K >::swap long  i,
long  j
[inline]
 

self-obvious...

Definition at line 82 of file abshom.H.

Referenced by MilnorAnalyzer::re_setup(), and MilnorAnalyzer::setup_for_Sq1().


Friends And Related Function Documentation

template<class K>
ofstream& operator<< ofstream &  file,
AbstractHomomorphism< K > &  f
[friend]
 

write to file

Definition at line 156 of file abshom.H.

template<class K>
ostream& operator<< ostream &  os,
const AbstractHomomorphism< K > &  f
[friend]
 

print

Definition at line 145 of file abshom.H.

template<class K>
void operator>> ifstream &  file,
AbstractHomomorphism< K > &  f
[friend]
 

read from file

Definition at line 170 of file abshom.H.


Member Data Documentation

template<class K>
long AbstractHomomorphism< K >::highest_var [protected]
 

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).

Definition at line 38 of file abshom.H.

template<class K>
map<long, Polynomial<K> > AbstractHomomorphism< K >::images [protected]
 

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 *=().


The documentation for this class was generated from the following file:
Generated on Wed Jun 18 17:22:42 2008 for Pierre Guillot by  doxygen 1.3.9.1