
/*******************************************************************************
*									       *
* structures pour factorisation.					       *
* Version du 27.3.91							       *
*******************************************************************************/

#define TAILLE_TAB_FACT 9999
#define TAILLE_TAB_INPUT 100
#define TAILLE_TAB_OUTPUT 100
#define NUMBER_MAX_ACCES 10
char *car; 

#define VIDE_FACT (pFact)VIDE

	/* table des pointeurs d'expressions en fonction des noeuds BDD */

int MODE;
int ORDON;

/*----------------- structure d'arbre de factorisation -----------------*/

typedef struct factor
	{
	pNode g ;
	struct factor *h, *r ;
	}*pFact ;

/*----------- structure table pour arbre de factorisation -----------*/ 

typedef struct tabfactor
	{
	int lenTable ;
	pFact tetFact ;	
	int counter ;
	}*pTabFact ;

pFact oneFact ;
pFact zeroFact ;
/*------------------ Declaration des fonctions -------------------------*/

int hashFact() ;
pTabFact createTabFact() ;
void destroyTabFact() ;
void destroyFact() ;
pFact searchTabFact() ;
pFact addTabFact() ;
void displayFact() ;
void displayTabFact() ;
void displayTabRH() ;

pFact factorise0() ;
pFact factorise1() ;
pFact factorise2() ;
pFact factorise3() ;
pFact initFact() ;
void initTabVar() ;
void sizeBdd() ;
pFact reduceGF() ;

char *driveBdd() ;
chain_list *GFToAbl() ;
pNode GFToBdd() ;
int searchBdd() ;

pNode simplifDc() ;
void monomBdd() ;
void syf_expanse() ;
void expanseMonom() ;
void initializeTabPBddFSM() ;
void addBddFSM() ;
void countLiteralBddFSM() ;
void displayTabPBdd() ;
pNode orMonom() ;

int numberAtomFact() ;
int numberAtomFact2() ;
pNode simplifDcOneBdd() ;

chain_list *factBdd() ;
