/*
** gset.h Birk Huber, 4/99
** -- header file with definitions and basic operations on gsets
**
**
** TiGERS, Toric Groebner Basis Enumeration by Reverse Search
** copyright (c) 1999 Birk Huber
**
*/
#include "binomial.h"
typedef struct gset_tag *gset;
struct gset_tag{
int id,nfacets,nelts,deg;
binomial bottom;
binomial cache_edge;
struct gset_tag *cache_vtx;
struct gset_tag *next;
};
#define gset_first(g) (g->bottom)
#define gset_cache_vtx(g) (g->cache_vtx)
#define gset_cache_edge(g) (g->cache_edge)
#define gset_nelts(g) (g->nelts)
#define gset_nfacets(g) (g->nfacets)
#define gset_id(g) (g->id)
#define gset_deg(g) (g->deg)
gset gset_new();
void gset_free(gset g);
int gset_read(FILE *is,gset g);
void gset_print(FILE *of,gset g);
void gset_init_print(FILE *of,gset g);
void gset_insert(gset g, binomial b);
binomial gset_downedge(gset g);
gset gset_flip(gset g1, binomial b);
void gset_autoreduce();
int gset_isfacet(gset g,binomial b);
void gset_setfacets(gset g);
gset gset_toric_ideal(int **,int,int);
void gset_rgb(gset g, int (*comp)(monomial,monomial));