#ifndef TROPICAL2_H_INCLUDED
#define TROPICAL2_H_INCLUDED

#include "polyhedralfan.h"
#include "polynomial.h"

/* This file contains tropical procedures implemented after April 1st 2005 */

Polynomial initialForm(Polynomial const &p, IntegerVector const &weight);
PolynomialSet initialForms(PolynomialSet const &groebnerBasis, IntegerVector const &weight);
PolyhedralFan tropicalPrincipalIntersection(int n, PolynomialSet const &g, int linealitySpaceDimension=-1);
PolynomialSet iterativeTropicalBasis(int n, PolynomialSet g, PolyhedralFan *intersectionFan=0, int linealitySpaceDimension=-1, bool doPrint=false); //Assuming g is homogeneous and has dimension 1 modulo homogeneous space
// intersectionFan specifies a fan to use for the temporary hypersurface intersections. This is useful since we then don't have to call tropicalPrincipalIntersection to get the variety after having computed a tropical basis. No PolyhedralFan needs to be specified. If specified, the fan does not have to be initialized in any way. Its data is simply overwritten.
PolynomialSet guessInitialIdealWithoutMonomial(PolynomialSet const &groebnerBasis, PolynomialSet *fullNeighbourBasis, bool onlyCheckRays); //ideal must be homogeneous
  // fullNeighbourBasis is set to a Groebner basis of the full ideal. The returned basis and fullNeighbourBasis have at least one termorder in common

#endif
