Sophie

Sophie

distrib > Mandriva > 2011.0 > i586 > by-pkgid > e1c4a3050d44123471c4053e4926e965 > files > 223

gfan-debug-0.4plus-2mdv2011.0.i586.rpm

#ifndef SUBSPACE_H_INCLUDED
#define SUBSPACE_H_INCLUDED

#include "vektor.h"
#include "polynomial.h"
#include "linalg.h"

/**
   @brief A subspace of Q^n.

   An object of this class represents a linear subspace of Q^n. All
   functionality is already available in the class FieldMatrix.
   However, the Subspace class is different in two ways: a Subspace
   cannot be changed after construction and the Subspace class
   provides operator< for sorting and distinguishing mathematical
   subspaces.
*/
class Subspace
{
  int n;//ambient dimension

  //  PolynomialSet basis;
  FieldMatrix basis2;
  IntegerVectorList integerRep;//REMOVE THIS
 public:
  /**
     Constructs a subspace given a generating set.

     @param generators generators for the subspace.
     @param ambientDimension the dimension of the ambient space.
     This number must equal the sizes of the vectors in generators.
   */
  Subspace(IntegerVectorList const &generators, int ambientDimension=-1);
  bool contains(IntegerVector const &v)const;
  int dimension();
  friend Subspace sum(Subspace const &a, Subspace const &b);
  int ambientDimension()const;
  IntegerVectorList getRepresentation()const;
  IntegerVector canonicalizeVector(IntegerVector const &v)const;
  bool operator<(Subspace const &b)const;
};

#endif