/***************************************
*                                      *
*   Copyright (c) 1998 Jean-Eric Pin   *
*   All rights reserved.               *
*                                      *
*   TAB = 2 spaces                     *
*                                      *
***************************************/

/*-------------------------------------------------------------------
 * Globales.c    Jean-Eric Pin 07/12/96
 * Merci a Alair Pereira Lago et a Mario Branco pour la version portugaise
 * Merci a Anca Muscholl pour la version allemande
 * Merci a Roberto Mantaci pour la version italienne
 * Merci a Antonio Cano Gomez pour la version espagnole
 *-------------------------------------------------------------------
 */     

/*************************************************
*  
*  Variables globales du programme  semigroupe
*  
*************************************************/

#include <stdio.h>
#include "Main.h"
#include "Globales.h"
#include "Initialisation.h"

#ifdef DEBUG
  long ElementsAlloues = 0;
#endif   /* DEBUG */

float Version = VERSION;  /* Version de Semigroupe */
unsigned short NbEtats, NbLettres, NbChiffresNbElements, Longueur, LongueurMax,
    TypeSemigroupe, TypeCalcul, PartiePointee, EtatInitial1, InitiauxDejaSpecifies,
    FinauxDejaSpecifies, PossedeUnZero, PossedeUnNeutre,
    OptionAction, EstRegulier, SemigroupeRenverse, SauvegardeSouhaitee, 
    MemoireInitiauxAllouee, MemoireFinauxAllouee, MemoireAllouee, SortieLaTeX, 
    SemiReduit, AvecNumero, FichierExempleOuvert, FichierLaTeXOuvert;
unsigned long Periode, Seuil, TestsEffectues, CalculsEffectues, Varietes;
unsigned long TailleElement;
unsigned long NbRelations, TailleTableDeHachage, TailleTableDeHachageMoinsUn;
unsigned long DernierMot, nZero, NbElements, NbReelElements, NbIdempotents, NbRclasses, NbLclasses,
       NbDclasses, NbHclasses, NbLclassesMinimales, TailleRIdealMinimal, TailleMaxi;
element Identite;    /* L'identite du monoide ou du semigroupe */
element *Generateurs;  /* Les generateurs du semigroupe */
element *TableDesValeurs;  /* Les valeurs des elements du semigroupe dans l'univers. */
unsigned long *TableDeHachage;  /* La table de l'adresse des elements. On y accede par hachage et adressage ouvert. */
unsigned long *TableIdempotents;  /* La table des idempotents */
info *Table;     /* La table contenant les informations sur les elements */
info2 *Table2;  /* La table contenant les autres informations sur les elements (R-classe, L-classe, D-classe, xOmega, etc.) */
unsigned long **TableDeS;  /* La table de multiplication du semigroupe */
ProduitsDG *TableInfo;
Copie_ Copie;
Hachage_ Hachage;
Hachage_ HachageSecondaire;
Produit_ Produit;
Produit_ ProduitNormal;
ProduitRapide_ ProduitRapide;
EstEgal_ EstEgal;
FaireIdentite_ FaireIdentite;
Entree_ Entree;
Sortie_ SortieElement;
SortieLaTeX_ SortieLaTeXElement;
Sauvegarde_ Sauvegarde;
Lecture_ LectureFichier;
Alloue_ AlloueMemoireElement, AlloueMemoireGenerateur;
Libere_ LibereMemoireElement, LibereMemoireGenerateur;
EntreePartie_ EntreePartie;
char **Messages; 
unsigned short *EtatsInitiaux, *EtatsFinaux;