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

UnstableAlgebra Class Reference

#include <unstable.H>

Inheritance diagram for UnstableAlgebra:

GradedAlgebra< F_2 > AffineAlgebra< F_2 > SimpleAlphabet Alphabet List of all members.

Detailed Description

Unstable Algebra over F_2.

This is a graded algebra with Steenrod operations. It can compute the steenrod square of any polynomial using Sq(), and can do many other basic things. Among the less trivial features, see saturate_and_reduce().

Definition at line 20 of file unstable.H.

Public Member Functions

virtual void swap_variables_order (long i, long j, list< Polynomial< F_2 > > &polys)
 changes the order of two variables
virtual void swap_variables_order (long i, long j)
virtual void kill_top_variable (const Polynomial< F_2 > &replacement, list< Polynomial< F_2 > > &polys)
 replaces the top variable by a polynomial in the others
virtual void kill_top_variable (const Polynomial< F_2 > &replacement)
virtual void fix_alphabets ()
 fixes the alphabets of the relations, if needed
void write_trivial_steenrod_operations ()
Polynomial< F_2 > Sq (long i, const Polynomial< F_2 > &x) const
 compute a steenrod square
Polynomial< F_2 > Q (long i, const Polynomial< F_2 > &x) const
 compute a Milnor operation
void display () const
 display the comments
AbstractHomomorphism< F_2 > saturate_and_reduce ()
 find redundancies, and add steenrod images
bool is_saturated () const
 checks if the ideal of relations is saturated for Sq()
bool has_closure_of (const AffineHomomorphism< F_2 > &f) const
 checks if given homomorphism has an image which is Steenrod stable

Public Attributes

list< string > comments
 comments on the relations
map< long, Tuple< Polynomial<
F_2 > > > 
steenrod
 the steenrod operations

Private Member Functions

void insert (const Polynomial< F_2 > &P, const string &com, list< Polynomial< F_2 > > &thelist)

Friends

ostream & operator<< (ostream &os, const UnstableAlgebra &A)
 friend printing
ofstream & operator<< (ofstream &file, UnstableAlgebra &A)
void operator>> (ifstream &file, UnstableAlgebra &A)


Member Function Documentation

void UnstableAlgebra::display  )  const
 

display the comments

similar to cout << *this, but also displays the comments next to the equations. Typically this is called right after saturate_and_reduce(), which is the only method that actually fills the comments.

See also:
comments

Definition at line 261 of file unstable.cpp.

References comments, Ideal< K >::generators, SimpleAlphabet::nameof(), and steenrod.

void UnstableAlgebra::fix_alphabets  )  [virtual]
 

fixes the alphabets of the relations, if needed

This makes sure that the polynomials in the relations have this as their alphabet. It is necessary, in particular, to call fix_alphabet after an assignment of the form A= B;

Todo:
make this a virtual method, and write an operator overload for =.

Reimplemented from AffineAlgebra< F_2 >.

Definition at line 52 of file unstable.cpp.

References AffineAlgebra< K >::fix_alphabets(), and steenrod.

Referenced by HomFinder::test_steenrod().

bool UnstableAlgebra::has_closure_of const AffineHomomorphism< F_2 > &  f  )  const
 

checks if given homomorphism has an image which is Steenrod stable

This assumes that f has called populate_associated_algebra().

Definition at line 315 of file unstable.cpp.

References GradedAlgebra< F_2 >::hom_degree_of(), AffineHomomorphism< K >::maps_onto(), AbstractHomomorphism< K >::of_generator(), AffineHomomorphism< K >::source, Sq(), and SimpleAlphabet::variables_in_use().

Referenced by MilnorAnalyzer::done().

bool UnstableAlgebra::is_saturated  )  const
 

checks if the ideal of relations is saturated for Sq()

Definition at line 299 of file unstable.cpp.

References Ideal< K >::generators, GradedAlgebra< F_2 >::hom_degree_of(), Polynomial< K >::is_zero(), AffineAlgebra< F_2 >::reduced_form(), and Sq().

Referenced by HomFinder::test_steenrod().

void UnstableAlgebra::kill_top_variable const Polynomial< F_2 > &  replacement,
list< Polynomial< F_2 > > &  polys
[virtual]
 

replaces the top variable by a polynomial in the others

This modifies the list polys so its members take the changes into account.

Reimplemented from GradedAlgebra< F_2 >.

Definition at line 28 of file unstable.cpp.

References GradedAlgebra< K >::kill_top_variable(), and steenrod.

Polynomial< F_2 > UnstableAlgebra::Q long  i,
const Polynomial< F_2 > &  x
const
 

compute a Milnor operation

Definition at line 118 of file unstable.cpp.

References Sq().

Referenced by MilnorAnalyzer::re_setup().

AbstractHomomorphism< F_2 > UnstableAlgebra::saturate_and_reduce  ) 
 

find redundancies, and add steenrod images

This is similar to find_redundancies(). The differences are:

  • This time it is EXPECTED that the relations are sorted with the degrees nondecreasing before we start. The algorithm still stops otherwise but the result has no meaning.
  • This produces a minimal set of generators for an ideal of relations which may increase in the process: we add all the images under Sq() of the generators until the ideal is stable by Sq(). Note that otherwise, the relations kept are taken from the current relations.
  • Comments are written in 'comments', so the user knows when a relation is obtained by applying Sq() to another one. These are preferred to other relations -- in other words, the comments allow one to see immediately a minimal collection of "generators for the ideal as a Steerod ideal": simply discard the equations whose comments start with Sq.

Definition at line 156 of file unstable.cpp.

References GradedAlgebra< F_2 >::add_relation(), AbstractHomomorphism< K >::clear(), comments, AffineAlgebra< F_2 >::find_grobner_basis(), Ideal< K >::generators, GradedAlgebra< F_2 >::hom_degree_of(), Polynomial< K >::is_zero(), AffineAlgebra< F_2 >::kill_variable(), AbstractHomomorphism< K >::make_identity(), SimpleAlphabet::nameof(), AffineAlgebra< F_2 >::reduced_form(), AbstractHomomorphism< K >::set_image(), Sq(), and Polynomial< K >::swap_variables().

Polynomial< F_2 > UnstableAlgebra::Sq long  i,
const Polynomial< F_2 > &  x
const
 

compute a steenrod square

Definition at line 78 of file unstable.cpp.

References Polynomial< K >::alphabet, GradedAlgebra< F_2 >::hom_degree_of(), Polynomial< K >::is_zero(), Polynomial< K >::lp(), Polynomial< K >::lt(), PowProd::nvars(), Polynomial< K >::sets_to_zero(), and steenrod.

Referenced by has_closure_of(), is_saturated(), Q(), saturate_and_reduce(), and MilnorAnalyzer::setup_for_Sq1().

void UnstableAlgebra::swap_variables_order long  i,
long  j,
list< Polynomial< F_2 > > &  polys
[virtual]
 

changes the order of two variables

This corrects all the relations generators so they take the change of order into account. Likewise all polynomials created with this before should be modified.

Parameters:
 polys, a list of polynomials to update.

Reimplemented from GradedAlgebra< F_2 >.

Definition at line 5 of file unstable.cpp.

References Tuple< T >::steal(), steenrod, and GradedAlgebra< K >::swap_variables_order().

void UnstableAlgebra::write_trivial_steenrod_operations  ) 
 

This resizes the tuples in steenrod, if they are not of the right size, and fills Sq 0 and Sq (top degree) with the identity and the square, respectively. p> Other steenrod operations are expected to be set manually (steenrod is public).

Definition at line 65 of file unstable.cpp.

References AffineAlgebra< F_2 >::get_variables(), Tuple< T >::resize(), and steenrod.

Referenced by SW_Maker::create_regular_variables().


Friends And Related Function Documentation

ostream& operator<< ostream &  os,
const UnstableAlgebra A
[friend]
 

friend printing

Definition at line 339 of file unstable.cpp.


Member Data Documentation

list< string > UnstableAlgebra::comments
 

comments on the relations

This is filled by saturate_and_reduce(). It is a list of comments for the relations; either a number eg (2) or an expression with Steenrod operations eg Sq 3Sq 2(2). Of course if you change the relations after calling saturate_and_reduce(), this becomes bogus!

You can display the whole thing with display().

Definition at line 39 of file unstable.H.

Referenced by display(), and saturate_and_reduce().

map< long, Tuple< Polynomial<F_2> > > UnstableAlgebra::steenrod
 

the steenrod operations

Definition at line 41 of file unstable.H.

Referenced by SW_Maker::create_regular_variables(), display(), fix_alphabets(), kill_top_variable(), Sq(), swap_variables_order(), and write_trivial_steenrod_operations().


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