#define MAXTYPES 11
#define MAXOPERANDS 7

int findcgen 				_(( char *name, int len ));

void *g_mul_gre 			_(( void *el1, void *el2 ));
void *g_exp_gre 			_(( void *el1, void *el2 ));
void *g_add_gre 			_(( void *el1, void *el2 ));
void *g_sub_gre 			_(( void *el1, void *el2 ));
void *g_div_gre 			_(( void *el1, void *el2 ));
void *g_umi_gre 			_(( void *el1, void *el2 ));
void *g_lie_gre 			_(( void *el1, void *el2 ));

void *g_s_mula_gre 			_(( void *el1, void *el2 ));
void *g_s_mulb_gre 			_(( void *el1, void *el2 ));
void *g_s_diva_gre 			_(( void *el1, void *el2 ));
void *g_s_divb_gre 			_(( void *el1, void *el2 ));
void *g_s_adda_gre 			_(( void *el1, void *el2 ));
void *g_s_addb_gre 			_(( void *el1, void *el2 ));
void *g_s_suba_gre 			_(( void *el1, void *el2 ));
void *g_s_subb_gre 			_(( void *el1, void *el2 ));
void *g_s_lie_gre  			_(( void *el1, void *el2 ));

void *g_mul_gel 			_(( void *el1, void *el2 ));
void *g_exp_gel 			_(( void *el1, void *el2 ));

void *g_mul_int 			_(( void *el1, void *el2 ));
void *g_exp_int 			_(( void *el1, void *el2 ));
void *g_add_int 			_(( void *el1, void *el2 ));
void *g_sub_int 			_(( void *el1, void *el2 ));
void *g_div_int 			_(( void *el1, void *el2 ));
void *g_umi_int 			_(( void *el1, void *el2 ));
void *g_lie_int 			_(( void *el1, void *el2 ));

void *g_mul_vs 			_(( void *el1, void *el2 ));
void *g_add_vs 			_(( void *el1, void *el2 ));
void *g_exp_vs 			_(( void *el1, void *el2 ));
void *g_lie_vs 			_(( void *el1, void *el2 ));

typedef enum {O_ADD,O_SUB,O_MUL,O_DIV,O_UMI,O_EXP,O_LIE} OPTYPE;

GENVAL *galloc 			_(( TYPE of_type ));
GENVAL *gpermalloc 			_(( TYPE of_type ));
GENVAL *do_op 				_(( GENVAL *expr1, GENVAL *expr2, OPTYPE operand ));
void assign_symbol 			_(( symbol *sym, GENVAL *expr ));
void print_expr 			_(( GENVAL *expr ));
void copy_space 			_(( SPACE *src, SPACE *dest, int perm ));
void copy_group 			_(( GRPDSC *src, GRPDSC *dest, int perm ));
void copy_pcgroup 			_(( PCGRPDESC *src, PCGRPDESC *dest, int perm, HOM *autos ));
void copy_aggroup 			_(( AGGRPDESC *src, AGGRPDESC *dest, int perm, HOM *autos ));
void copy_grpring 			_(( GRPRING *src, GRPRING *dest, int perm ));
void copy_hom 				_(( HOM *src, HOM *dest, int perm, PCGRPDESC *g ));
GENVAL *code_to_expr 		_(( LISTP* intlist ));
void expr_to_code 			_(( GENVAL *expr ));
node node_cpy 				_(( node s, int perm ));

