#include "parser.h"
#include "printer.h"
#include "polynomial.h"
#include "division.h"
#include "buchberger.h"
#include "wallideal.h"
#include "lp.h"
#include "reversesearch.h"
#include "termorder.h"
#include "gfanapplication.h"
#include "wallideal.h"
#include "polyhedralcone.h"

class HomogeneitySpaceApplication : public GFanApplication
{
  FieldOption theFieldOption;
public:
  const char *helpText()
  {
    return "This program computes the homogeneity space of a list of polynomials - as a cone.\n";
  }
  HomogeneitySpaceApplication()
  {
    registerOptions();
  }
  
  char *name()
  {
    return "_homogeneityspace";
  }

  int main()
  {
    LpSolver::printList(Stderr);
    lpSetSolver("cddgmp");
    
    FileParser P(Stdin);

    PolynomialSet g=P.parsePolynomialSet();

    IntegerVectorList l=wallInequalities(g);
    IntegerVectorList a;
    PolyhedralCone c(a,l);
    
    c.canonicalize();
    AsciiPrinter(Stdout).printPolyhedralCone(c);
    //AsciiPrinter(Stdout).printPolyhedralCone(c.dualCone());
    
    return 0;
  }
};

static HomogeneitySpaceApplication theApplication;

