/****************************************************************************/
/*                                                                          */
/*                      Chaine de CAO & VLSI   Alliance                     */
/*                                                                          */
/*    Produit : Synthetiseur logique                                        */
/*    Fichier : regles.h                                                    */
/*                                                                          */
/*    (c) copyright 1991 Laboratoire MASI equipe CAO & VLSI                 */
/*    Tous droits reserves                                                  */
/*    Support : e-mail cao-vlsi@masi.ibp.fr                                 */
/*                                                                          */
/*    Auteur(s) :   DICTUS N.                           le : 14/08/1991     */
/*                                                                          */
/*    Modifie par :                                     le : ../../....     */
/*    Modifie par :                                     le : ../../....     */
/*    Modifie par :                                     le : ../../....     */
/*                                                                          */
/****************************************************************************/

int nivNot();			/* (chain_list *exp) */
short simple();			/* (chain_list *exp) */
short simpleInverse();		/* (chain_list *exp) */
char *cellOpose();		/* (char *nom) */
short cellXor();		/* (cellList *cell) */
short invOper();		/* (short oper) */
short morgOper();		/* (short oper) */
chain_list *inversArg();	/* (chain_list *exp) */
void addArite();		/* (chain_list *exp) */
void addAriteRegles();		/* (chain_list *liste) */
void displayArite();		/* (chain_list *exp) */
chain_list *moinsNot();		/* (chain_list *exp) */
chain_list *simplifNot();	/* (chain_list *exp) */
chain_list *morgan();		/* (chain_list *exp) */
chain_list *appendChain_list();	/* (chain_list *l1,*l2) */
chain_list *combin();		/* (chain_list *list) */
chain_list *solutions();	/* (chain_list *exp,short signe,short op) */
chain_list *fct();		/* (chain_list *exp) */
short findEqual();		/* (chain_list *abl,chain_list *liste) */
chain_list *triCommut();	/* (chain_list *liste) */
chain_list *consExpr();		/* (int oper, Alist *e) */
chain_list *regOpposee();		/* (int opCell, cellList *cell) */
chain_list *opposees();		/* (chain_list *liste) */
chain_list *conclu();		/* (chain_list *prems,conc) */
void acons();			/* (Alist *aListe,char *in,var) */
char *cassqVal();		/* (Alist *aListe,char *val) */
char *cassq();			/* (Alist *aListe,char *in) */
void alistEntrees();		/* (chain_list *premisse, Alist *entrees) */
chain_list *alistPrem();	/* (chain_list *premisse, Alist *entrees) */
chain_list *alistConc();	/* (chain_list *conc, Alist *entrees) */
void reportNot();		/* (chain_list *list, cellList *cell) */
void resetAlist();		/* (Alist *in) */
chain_list *reglesXor();	/* (cellList *cell) */
chain_list *reglesCellLogique();/* (cellList *cell) */
int fonc();			/* (cellList *cell) */
chain_list *findBestNot();	/* (regle_list *regles) */
void regleOperVHDL();		/* (cellList *cell) */
short testOperVHDL();		/* (cellList *cell) */
char *varF();			/* (short n, char *var) */
void parcoursConclu();		/* (chain_list *conclusion, Alist *entrees) */
void filtrePremisse();		/* (chain_list *prem, cellList *cell) */
chain_list *filtreConc();	/* (chain_list *conc, cellList *cell) */
void argsSsexpr();		/* (chain_list *args, cellList *cell) */
short nbEntrees();		/* (Alist *in) */
void filtrage();		/* (chain_list *listeRegles, cellList *cell) */
chain_list *reglesCellRegistre(); /* (cellList *cell) */
chain_list *reglesCellBus(); 	/* (cellList *cell) */
void reglesCellules(); 		/* () */
regle_list *genereObj();
chain_list *remplacenot();		/* (chain_list *,chain_list *) */
void addDeclen();
void driverLisp();
char *exprOperToChar();
char *exprOperToCharInt();
int numberOcVarExpr();
chain_list *remplaceNot();
