PIPS
contrainte-local.h File Reference

Go to the source code of this file.

Data Structures

struct  Scontrainte
 

Macros

#define CONTRAINTE   1005
 package sur les contraintes. More...
 
#define egalite_print(eg)   egalite_fprint(stdout,eg)
 MACROS ET CONSTANTES. More...
 
#define inegalite_print(ineg)   inegalite_fprint(stdout,ineg)
 FI: this macro requires an additional parameter or a default value as third parameter of inegalite_fprint() More...
 
#define contrainte_vecteur(c)   ((c)->vecteur)
 passage au champ vecteur d'une contrainte "a la Newgen" More...
 
#define contrainte_succ(c)   ((c)->succ)
 
#define CONTRAINTE_NULLE_P(c)   (VECTEUR_NUL_P(contrainte_vecteur(c)))
 contrainte nulle (non contrainte 0 == 0 ou 0 <= 0) More...
 
#define CONTRAINTE_UNDEFINED   ((Pcontrainte) NULL)
 
#define CONTRAINTE_UNDEFINED_P(c)   ((c)==CONTRAINTE_UNDEFINED)
 
#define COEFF_CST(c)   vect_coeff(TCST,(c)->vecteur)
 int COEFF_CST(Pcontrainte c): terme constant d'une contrainte More...
 
#define contrainte_rm(c)   (void) contrainte_free(c)
 the standard xxx_rm does not return a value More...
 
#define VERSION_FINALE
 
#define CONTRAINTE_RM(rd, f)   contrainte_rm(rd)
 

Typedefs

typedef struct Scontrainte Scontrainte
 
typedef struct ScontraintePcontrainte
 
typedef Scontrainte Segalite
 
typedef ScontraintePegalite
 
typedef Scontrainte Sinegalite
 
typedef ScontraintePinegalite
 

Macro Definition Documentation

◆ COEFF_CST

#define COEFF_CST (   c)    vect_coeff(TCST,(c)->vecteur)

int COEFF_CST(Pcontrainte c): terme constant d'une contrainte

Definition at line 117 of file contrainte-local.h.

◆ CONTRAINTE

#define CONTRAINTE   1005

package sur les contraintes.

Une contrainte est une egalite ou une inegalite. Elle est representee par un vecteur dont une coordonnee particuliere, TCST, represente le terme constant.

Les contraintes sont stockees sous forme de membres gauches, ce qui n'est utile a savoir que pour les inegalites:

 sum a x + b <= 0
  i   i i

ou b est le terme constant.

Les tableaux de saturations sont calcules en fonction de polyedre (systeme generateur ou systeme de contraintes) et leurs dimensions sont inconnues au niveau des contraintes. Ils sont ignores la plupart du temps.

Les contraintes sont traitees sous forme de liste de contraintes (systeme d'egalites ou systeme d'inegalites) et possedent un champ de chainage. Certaines des fonctions portent sur des listes de contraintes et non sur des contraintes. Cette double semantique complique beaucoup les choses.

Le pointeur NULL represente implicitement l'une des contraintes toujours faisables, 0 == 0 ou 0 <= 0. Au moins, la plupart du temps... car il represente la valeur CONTRAINTE_UNDEFINED dans les routines de gestion memoire.

Il vaut mieux utiliser la macro CONTRAINTE_NULLE_P() qui verifie que le vecteur associe est le VECTEUR_NUL.

Les contraintes trivialement faisables et infaisables sont representees par un unique terme constant: 0 == k, 0 <= k, 0 <= -k (k positif). Il existe deux fonctions pour les tester.

Autres packages a inclure:

Malik Imadache, Corinne Ancourt, Neil Butler, Francois Irigoin

Bugs:

  • melange de la notion de chainage et de la notion de terme constant
  • definition directe de TCST: on ne peut pas decider dynamiquement de la variable representant le terme constant
  • definition de TCST au niveau contrainte, alors que TCST doit etre utilise au niveau vecteur (cf. macro term_cst())

Modifications:

  • passage du terme constant a gauche (FI, 24/11/89)
  • deplacement de la definition du terme constant TCST et de la macro term_cst dans le package vecteur (PB, 06/06/90) constante associee a la structure de donnees "contrainte"

Definition at line 84 of file contrainte-local.h.

◆ CONTRAINTE_NULLE_P

#define CONTRAINTE_NULLE_P (   c)    (VECTEUR_NUL_P(contrainte_vecteur(c)))

contrainte nulle (non contrainte 0 == 0 ou 0 <= 0)

Definition at line 110 of file contrainte-local.h.

◆ contrainte_rm

#define contrainte_rm (   c)    (void) contrainte_free(c)

the standard xxx_rm does not return a value

Definition at line 120 of file contrainte-local.h.

◆ CONTRAINTE_RM

#define CONTRAINTE_RM (   rd,
  f 
)    contrainte_rm(rd)

Definition at line 126 of file contrainte-local.h.

◆ contrainte_succ

#define contrainte_succ (   c)    ((c)->succ)

Definition at line 107 of file contrainte-local.h.

◆ CONTRAINTE_UNDEFINED

#define CONTRAINTE_UNDEFINED   ((Pcontrainte) NULL)

Definition at line 112 of file contrainte-local.h.

◆ CONTRAINTE_UNDEFINED_P

#define CONTRAINTE_UNDEFINED_P (   c)    ((c)==CONTRAINTE_UNDEFINED)

Definition at line 114 of file contrainte-local.h.

◆ contrainte_vecteur

#define contrainte_vecteur (   c)    ((c)->vecteur)

passage au champ vecteur d'une contrainte "a la Newgen"

Definition at line 105 of file contrainte-local.h.

◆ egalite_print

#define egalite_print (   eg)    egalite_fprint(stdout,eg)

MACROS ET CONSTANTES.

Definition at line 99 of file contrainte-local.h.

◆ inegalite_print

#define inegalite_print (   ineg)    inegalite_fprint(stdout,ineg)

FI: this macro requires an additional parameter or a default value as third parameter of inegalite_fprint()

Definition at line 102 of file contrainte-local.h.

◆ VERSION_FINALE

#define VERSION_FINALE

Definition at line 122 of file contrainte-local.h.

Typedef Documentation

◆ Pcontrainte

typedef struct Scontrainte* Pcontrainte

◆ Pegalite

typedef Scontrainte * Pegalite

Definition at line 93 of file contrainte-local.h.

◆ Pinegalite

Definition at line 95 of file contrainte-local.h.

◆ Scontrainte

typedef struct Scontrainte Scontrainte

◆ Segalite

Definition at line 93 of file contrainte-local.h.

◆ Sinegalite

Definition at line 95 of file contrainte-local.h.