PIPS
contrainte.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/contrainte/contrainte-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef contrainte_header_included
7 #define contrainte_header_included
8 /* contrainte-local.h */
9 /*
10 
11  $Id: contrainte-local.h 1641 2016-03-02 08:20:19Z coelho $
12 
13  Copyright 1989-2016 MINES ParisTech
14 
15  This file is part of Linear/C3 Library.
16 
17  Linear/C3 Library is free software: you can redistribute it and/or modify it
18  under the terms of the GNU Lesser General Public License as published by
19  the Free Software Foundation, either version 3 of the License, or
20  any later version.
21 
22  Linear/C3 Library is distributed in the hope that it will be useful, but WITHOUT ANY
23  WARRANTY; without even the implied warranty of MERCHANTABILITY or
24  FITNESS FOR A PARTICULAR PURPOSE.
25 
26  See the GNU Lesser General Public License for more details.
27 
28  You should have received a copy of the GNU Lesser General Public License
29  along with Linear/C3 Library. If not, see <http://www.gnu.org/licenses/>.
30 
31 */
32 
33 /* package sur les contraintes.
34  *
35  * Une contrainte est une egalite ou une inegalite. Elle est representee
36  * par un vecteur dont une coordonnee particuliere, TCST, represente
37  * le terme constant.
38  *
39  * Les contraintes sont stockees sous forme de membres gauches, ce qui
40  * n'est utile a savoir que pour les inegalites:
41  *
42  * sum a x + b <= 0
43  * i i i
44  * ou b est le terme constant.
45  *
46  * Les tableaux de saturations sont calcules en fonction de polyedre
47  * (systeme generateur ou systeme de contraintes) et leurs dimensions
48  * sont inconnues au niveau des contraintes. Ils sont ignores la
49  * plupart du temps.
50  *
51  * Les contraintes sont traitees sous forme de liste de contraintes
52  * (systeme d'egalites ou systeme d'inegalites) et possedent un champ
53  * de chainage. Certaines des fonctions portent sur des listes de
54  * contraintes et non sur des contraintes. Cette double semantique
55  * complique beaucoup les choses.
56  *
57  * Le pointeur NULL represente implicitement l'une des contraintes toujours
58  * faisables, 0 == 0 ou 0 <= 0. Au moins, la plupart du temps... car
59  * il represente la valeur CONTRAINTE_UNDEFINED dans les routines de gestion
60  * memoire.
61  *
62  * Il vaut mieux utiliser la macro CONTRAINTE_NULLE_P() qui verifie que
63  * le vecteur associe est le VECTEUR_NUL.
64  *
65  * Les contraintes trivialement faisables et infaisables sont representees
66  * par un unique terme constant: 0 == k, 0 <= k, 0 <= -k (k positif).
67  * Il existe deux fonctions pour les tester.
68  *
69  * Autres packages a inclure:
70  * - types.h
71  * - boolean.h
72  * - vecteur.h
73  *
74  * Malik Imadache, Corinne Ancourt, Neil Butler, Francois Irigoin
75  *
76  * Bugs:
77  * - melange de la notion de chainage et de la notion de terme constant
78  * - definition directe de TCST: on ne peut pas decider dynamiquement
79  * de la variable representant le terme constant
80  * - definition de TCST au niveau contrainte, alors que TCST doit etre
81  * utilise au niveau vecteur (cf. macro term_cst())
82  *
83  * Modifications:
84  * - passage du terme constant a gauche (FI, 24/11/89)
85  * - deplacement de la definition du terme constant TCST et de la macro
86  * term_cst dans le package vecteur (PB, 06/06/90)
87  */
88 
89 #ifndef CONTRAINTE
90 
91 /* constante associee a la structure de donnees "contrainte" */
92 #define CONTRAINTE 1005
93 
94 typedef struct Scontrainte {
95  int *eq_sat;
96  int *s_sat,*r_sat;
98  struct Scontrainte *succ;
100 
102 
104 
105 /* MACROS ET CONSTANTES */
106 
107 #define egalite_print(eg) egalite_fprint(stdout,eg)
108 /* FI: this macro requires an additional parameter or a default value
109  as third parameter of inegalite_fprint() */
110 #define inegalite_print(ineg) inegalite_fprint(stdout,ineg)
111 
112 /* passage au champ vecteur d'une contrainte "a la Newgen" */
113 #define contrainte_vecteur(c) ((c)->vecteur)
114 
115 #define contrainte_succ(c) ((c)->succ)
116 
117 /* contrainte nulle (non contrainte 0 == 0 ou 0 <= 0) */
118 #define CONTRAINTE_NULLE_P(c) (VECTEUR_NUL_P(contrainte_vecteur(c)))
119 
120 #define CONTRAINTE_UNDEFINED ((Pcontrainte) NULL)
121 
122 #define CONTRAINTE_UNDEFINED_P(c) ((c)==CONTRAINTE_UNDEFINED)
123 
124 /* int COEFF_CST(Pcontrainte c): terme constant d'une contrainte */
125 #define COEFF_CST(c) vect_coeff(TCST,(c)->vecteur)
126 
127 /* the standard xxx_rm does not return a value */
128 #define contrainte_rm(c) (void) contrainte_free(c)
129 
130 #define VERSION_FINALE
131 #ifndef VERSION_FINALE
132 #define CONTRAINTE_RM(rd,f) dbg_contrainte_rm(rd,f)
133 #else
134 #define CONTRAINTE_RM(rd,f) contrainte_rm(rd)
135 #endif
136 
137 
138 #endif /* CONTRAINTE */
139 /* cproto-generated files */
140 /* alloc.c */
141 extern Pcontrainte contrainte_new(void);
142 extern Pcontrainte contrainte_make(Pvecteur /*pv*/);
143 extern Pcontrainte contrainte_make_1D(Value /*a*/, Variable /*x*/, Value /*b*/, bool /*less_p*/);
144 extern Pcontrainte contraintes_make(Pvecteur /*pv*/, ...);
145 extern Pcontrainte contrainte_dup(Pcontrainte /*c_in*/);
146 extern Pcontrainte contraintes_dup(Pcontrainte /*c_in*/);
149 extern void dbg_contrainte_rm(Pcontrainte /*c*/, char */*f*/);
150 extern Pcontrainte contrainte_copy(Pcontrainte /*c_in*/);
151 extern Pcontrainte contraintes_copy(Pcontrainte /*c_in*/);
152 /* binaires.c */
153 extern int contrainte_subst_ofl(Variable /*v*/, Pcontrainte /*def*/, Pcontrainte /*c*/, bool /*eq_p*/);
154 extern int contrainte_subst(Variable /*v*/, Pcontrainte /*def*/, Pcontrainte /*c*/, bool /*eq_p*/);
156 extern Pcontrainte inegalite_comb(Pcontrainte /*posit*/, Pcontrainte /*negat*/, Variable /*v*/);
157 extern Pcontrainte inegalite_comb_ofl(Pcontrainte /*posit*/, Pcontrainte /*negat*/, Variable /*v*/);
158 extern int contrainte_subst_ofl_ctrl(Variable /*v*/, Pcontrainte /*def*/, Pcontrainte /*c*/, bool /*eq_p*/, int /*ofl_ctrl*/);
159 extern Pcontrainte inegalite_comb_ofl_ctrl(Pcontrainte /*posit*/, Pcontrainte /*negat*/, Variable /*v*/, int /*ofl_ctrl*/);
160 extern Value eq_diff_const(Pcontrainte /*c1*/, Pcontrainte /*c2*/);
161 extern Value eq_sum_const(Pcontrainte /*c1*/, Pcontrainte /*c2*/);
163 extern Pcontrainte extract_common_constraints(Pcontrainte */*pc1*/, Pcontrainte */*pc2*/, bool /*eq*/);
164 /* error.c */
165 extern void contrainte_error(char */*name*/, char */*fmt*/, ...);
166 /* io.c */
167 extern void contrainte_fprint(FILE */*fp*/, Pcontrainte /*c*/, bool /*is_inegalite*/, char *(* /*variable_name*/)(Variable));
168 extern void egalite_fprint(FILE */*fp*/, Pcontrainte /*eg*/, char *(* /*variable_name*/)(Variable));
169 extern void egalite_dump(Pcontrainte /*c*/);
170 extern void inegalite_fprint(FILE */*fp*/, Pcontrainte /*ineg*/, char *(* /*variable_name*/)(Variable));
171 extern void inegalite_dump(Pcontrainte /*c*/);
172 extern void egalites_fprint(FILE */*fp*/, Pcontrainte /*eg*/, char *(* /*variable_name*/)(Variable));
173 extern void egalites_dump(Pcontrainte /*eg*/);
174 extern void inegalites_fprint(FILE */*fp*/, Pcontrainte /*ineg*/, char *(* /*variable_name*/)(Variable));
175 extern void inegalites_dump(Pcontrainte /*eg*/);
176 extern void sprint_operator(char */*s*/, bool /*is_inegalite*/, bool /*a_la_fortran*/);
177 extern char *contrainte_sprint(char */*s*/, Pcontrainte /*c*/, bool /*is_inegalite*/, char *(* /*variable_name*/)(Variable));
178 extern char *contrainte_sprint_format(char */*s*/, Pcontrainte /*c*/, bool /*is_inegalite*/, char *(* /*variable_name*/)(Variable), bool /*a_la_fortran*/);
179 extern char *egalite_sprint(char */*s*/, Pcontrainte /*eg*/, char *(* /*variable_name*/)(Variable));
180 extern char *inegalite_sprint(char */*s*/, Pcontrainte /*ineg*/, char *(* /*variable_name*/)(Variable));
181 extern char *egalite_sprint_format(char */*s*/, Pcontrainte /*eg*/, char *(* /*variable_name*/)(Variable), bool /*a_la_fortran*/);
182 extern char *inegalite_sprint_format(char */*s*/, Pcontrainte /*ineg*/, char *(* /*variable_name*/)(Variable), bool /*a_la_fortran*/);
183 /* listes.c */
184 extern bool contrainte_in_liste(Pcontrainte /*c*/, Pcontrainte /*lc*/);
185 extern int constraint_rank(Pcontrainte /*c*/, Pcontrainte /*lc*/);
186 extern bool egalite_in_liste(Pcontrainte /*v*/, Pcontrainte /*listev*/);
187 extern int nb_elems_list(Pcontrainte /*list*/);
188 extern bool cyclic_constraint_list_p(Pcontrainte /*l*/);
189 extern int safe_nb_elems_list(Pcontrainte /*list*/, int /*n*/);
191 /* normalize.c */
192 extern bool contrainte_normalize(Pcontrainte /*c*/, bool /*is_egalite*/);
193 extern bool egalite_normalize(Pcontrainte /*eg*/);
194 extern bool inegalite_normalize(Pcontrainte /*ineg*/);
195 /* predicats.c */
196 extern bool eq_smg(Pcontrainte /*c1*/, Pcontrainte /*c2*/);
197 extern bool inequalities_opposite_p(Pcontrainte /*c1*/, Pcontrainte /*c2*/);
198 extern bool egalite_equal(Pcontrainte /*eg1*/, Pcontrainte /*eg2*/);
199 extern bool contrainte_equal(Pcontrainte /*c1*/, Pcontrainte /*c2*/);
200 extern bool contrainte_parallele(Pcontrainte /*c1*/, Pcontrainte /*c2*/, Value */*pa1*/, Value */*pa2*/);
201 extern bool contrainte_constante_p(Pcontrainte /*c*/);
202 extern bool vect_constant_p(Pvecteur /*v*/);
203 extern bool contrainte_verifiee(Pcontrainte /*ineg*/, bool /*eq_p*/);
204 extern bool contrainte_oppos(Pcontrainte /*ineg1*/, Pcontrainte /*ineg2*/);
205 extern bool constraint_without_vars(Pcontrainte /*c*/, Pbase /*vars*/);
206 extern bool constraints_without_vars(Pcontrainte /*pc*/, Pbase /*vars*/);
207 extern Value contrainte_eval(Pvecteur /*c*/, Pvecteur /*v*/);
208 extern bool contrainte_eval_p(Pvecteur /*c*/, Pvecteur /*v*/, bool /*is_equality_p*/);
209 extern bool equality_eval_p(Pvecteur /*c*/, Pvecteur /*v*/);
210 extern bool inequality_eval_p(Pvecteur /*c*/, Pvecteur /*v*/);
211 /* unaires.c */
212 extern void norm_eq(Pcontrainte /*nr*/);
213 extern void contrainte_chg_sgn(Pcontrainte /*c*/);
214 extern void contrainte_reverse(Pcontrainte /*c*/);
215 extern void eq_set_vect_nul(Pcontrainte /*c*/);
216 extern Pcontrainte contrainte_translate(Pcontrainte /*c*/, Pbase /*b*/, char *(* /*variable_name*/)(void));
217 extern Pcontrainte contrainte_variable_rename(Pcontrainte /*c*/, Variable /*v_old*/, Variable /*v_new*/);
218 extern void Pcontrainte_separate_on_vars(Pcontrainte /*initial*/, Pbase /*vars*/, Pcontrainte */*pwith*/, Pcontrainte */*pwithout*/);
219 extern void constraints_for_bounds(Variable /*var*/, Pcontrainte */*pinit*/, Pcontrainte */*plower*/, Pcontrainte */*pupper*/);
221 extern Pcontrainte contrainte_extract(Pcontrainte */*pc*/, Pbase /*base*/, Variable /*var*/);
222 extern int level_contrainte(Pcontrainte /*pc*/, Pbase /*base_index*/);
223 extern void contrainte_vect_sort(Pcontrainte /*c*/, int (* /*compare*/)(Pvecteur *, Pvecteur *));
224 extern Pcontrainte contrainte_var_min_coeff(Pcontrainte /*contraintes*/, Variable /*v*/, Value */*coeff*/, bool /*rm_if_not_first_p*/);
225 extern int equation_lexicographic_compare(Pcontrainte /*c1*/, Pcontrainte /*c2*/, int (* /*compare*/)(Pvecteur *, Pvecteur *));
226 extern int inequality_lexicographic_compare(Pcontrainte /*c1*/, Pcontrainte /*c2*/, int (* /*compare*/)(Pvecteur *, Pvecteur *));
227 extern Pcontrainte equations_lexicographic_sort(Pcontrainte /*cl*/, int (* /*compare*/)(Pvecteur *, Pvecteur *));
228 extern Pcontrainte inequalities_lexicographic_sort(Pcontrainte /*cl*/, int (* /*compare*/)(Pvecteur *, Pvecteur *));
229 extern Pcontrainte constraints_lexicographic_sort(Pcontrainte /*cl*/, int (* /*compare*/)(Pvecteur *, Pvecteur *));
230 extern Pcontrainte constraints_lexicographic_sort_generic(Pcontrainte /*cl*/, int (* /*compare*/)(Pvecteur *, Pvecteur *), bool /*is_equation*/);
232 #endif /* contrainte_header_included */
int Value
bool contrainte_eval_p(Pvecteur, Pvecteur, bool)
Evaluate constraint c according to values in v and return true if the constraint is met.
Definition: predicats.c:354
int contrainte_subst_ofl(Variable, Pcontrainte, Pcontrainte, bool)
binaires.c
Definition: binaires.c:40
struct Scontrainte Scontrainte
bool equality_eval_p(Pvecteur, Pvecteur)
Definition: predicats.c:369
bool contrainte_oppos(Pcontrainte, Pcontrainte)
bool contrainte_oppos(Pcontrainte ineg1, Pcontrainte ineg2): indique si 2 inegalites forment une egal...
Definition: predicats.c:258
Pcontrainte inegalite_comb(Pcontrainte, Pcontrainte, Variable)
Definition: binaires.c:65
Pcontrainte contrainte_remove_large_coef(Pcontrainte, Value)
Definition: listes.c:179
Pcontrainte contrainte_var_min_coeff(Pcontrainte, Variable, Value *, bool)
Pcontrainte contrainte_var_min_coeff(Pcontrainte contraintes, Variable v, int *coeff) input : a list ...
Definition: unaires.c:345
char * egalite_sprint(char *, Pcontrainte, char *(*)(Variable))
int contrainte_subst_ofl_ctrl(Variable, Pcontrainte, Pcontrainte, bool, int)
int contrainte_subst_ofl_ctrl(Variable v, Pcontrainte def, Pcontrainte c Boolean eq_p,...
Definition: binaires.c:107
void dbg_contrainte_rm(Pcontrainte, char *)
void dbg_contrainte_rm(Pcontrainte c): version debug de contrainte rm; trace de la desallocation et i...
Definition: alloc.c:239
Pcontrainte extract_common_constraints(Pcontrainte *, Pcontrainte *, bool)
common (simply equal) contraints are extracted, whether equalities or inequalities.
Definition: binaires.c:285
Pcontrainte contrainte_append(Pcontrainte, Pcontrainte)
Pcontrainte contrainte_append(c1, c2) Pcontrainte c1, c2;.
Definition: binaires.c:267
Pcontrainte contraintes_make(Pvecteur,...)
Convert a list of vectors into a list of constraints.
Definition: alloc.c:99
void eq_set_vect_nul(Pcontrainte)
void_eq_set_vect_nul(Pcontrainte c): transformation d'une contrainte en une contrainte triviale 0 == ...
Definition: unaires.c:84
bool egalite_normalize(Pcontrainte)
bool egalite_normalize(Pcontrainte eg): reduction d'une equation diophantienne par le pgcd de ses coe...
Definition: normalize.c:136
int nb_elems_list(Pcontrainte)
int nb_elems_list(Pcontrainte list): nombre de contraintes se trouvant dans une liste de contraintes
Definition: listes.c:129
Scontrainte Segalite
Definition: contrainte.h:101
void constraints_for_bounds(Variable, Pcontrainte *, Pcontrainte *, Pcontrainte *)
void constraints_for_bounds(var, pinit, plower, pupper) Variable var; Pcontrainte *pinit,...
Definition: unaires.c:176
void sprint_operator(char *, bool, bool)
Definition: io.c:224
bool contrainte_equal(Pcontrainte, Pcontrainte)
bool contrainte_equal(Pcontrainte c1, Pcontrainte c2): test d'egalite des contraintes c1 et c2; elles...
Definition: predicats.c:128
void inegalites_fprint(FILE *, Pcontrainte, char *(*)(Variable))
void norm_eq(Pcontrainte)
unaires.c
Definition: unaires.c:44
bool contrainte_parallele(Pcontrainte, Pcontrainte, Value *, Value *)
Les deux contraintes c1 et c2 sont paralleles s'il existe deux coefficients a1 et a2 tels que a1 c1 +...
Definition: predicats.c:145
Pcontrainte contrainte_copy(Pcontrainte)
Have a look at contrainte_dup and contraintes_dup which reverse the order of the list This copy versi...
Definition: alloc.c:254
Pcontrainte inegalite_comb_ofl_ctrl(Pcontrainte, Pcontrainte, Variable, int)
Pcontrainte inegalite_comb_ofl_ctrl(Pcontrainte posit, Pcontrainte negat, Variable v,...
Definition: binaires.c:179
Pcontrainte inequalities_lexicographic_sort(Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
Definition: unaires.c:449
char * contrainte_sprint(char *, Pcontrainte, bool, char *(*)(Variable))
bool cyclic_constraint_list_p(Pcontrainte)
Check if list l contains a cycle.
Definition: listes.c:141
int safe_nb_elems_list(Pcontrainte, int)
Compute the number of elements in the list if it is less than n.
Definition: listes.c:162
Pcontrainte contraintes_free(Pcontrainte)
Pcontrainte contraintes_free(Pcontrainte pc): desallocation de toutes les contraintes de la liste pc.
Definition: alloc.c:226
void egalites_dump(Pcontrainte)
Definition: io.c:201
bool inequality_eval_p(Pvecteur, Pvecteur)
Definition: predicats.c:374
Pcontrainte inegalite_comb_ofl(Pcontrainte, Pcontrainte, Variable)
Definition: binaires.c:72
bool egalite_in_liste(Pcontrainte, Pcontrainte)
bool egalite_in_liste(Pcontrainte eg, Pcontrainte leg): test si une egalite appartient a une liste d'...
Definition: listes.c:108
char * egalite_sprint_format(char *, Pcontrainte, char *(*)(Variable), bool)
bool vect_constant_p(Pvecteur)
bool vect_constant_p(Pvecteur v): v contains only a constant term, may be zero
Definition: predicats.c:211
Pcontrainte contrainte_make_1D(Value, Variable, Value, bool)
Generate a constraint a x <= b or a x >= b, according to less_p, or ax==b, regardless of less_p.
Definition: alloc.c:86
Variable contrainte_simple_equality(Pcontrainte)
returns whether a constraint is a simple equality: X == 12 the system is expected to be normalized?
Definition: unaires.c:521
Pcontrainte contrainte_extract(Pcontrainte *, Pbase, Variable)
Pcontrainte contrainte_extract(pc, base, var) Pcontrainte *pc; Pbase base; Variable var;.
Definition: unaires.c:242
Pcontrainte constraints_lexicographic_sort_generic(Pcontrainte, int(*)(Pvecteur *, Pvecteur *), bool)
Definition: unaires.c:472
Pcontrainte contraintes_dup(Pcontrainte)
Pcontrainte contraintes_dup(Pcontrainte c_in) a list of constraints is copied.
Definition: alloc.c:146
bool egalite_equal(Pcontrainte, Pcontrainte)
bool egalite_equal(Pcontrainte eg1, Pcontrainte eg2): teste l'equivalence de deux egalites; leurs coe...
Definition: predicats.c:98
Pcontrainte contrainte_dup_extract(Pcontrainte, Variable)
Pcontrainte contrainte_dup_extract(c, var) Pcontrainte c; Variable var;.
Definition: unaires.c:215
bool contrainte_constante_p(Pcontrainte)
bool contrainte_constante_p(Pcontrainte c): test de contrainte triviale sans variables (ie du type 0<...
Definition: predicats.c:192
bool constraints_without_vars(Pcontrainte, Pbase)
bool constraints_without_vars(pc, vars) Pcontrainte pc; Pbase vars;
Definition: predicats.c:300
bool contrainte_normalize(Pcontrainte, bool)
normalize.c
Definition: normalize.c:56
Pcontrainte contrainte_dup(Pcontrainte)
Pcontrainte contrainte_dup(Pcontrainte c_in): allocation d'une contrainte c_out prenant la valeur de ...
Definition: alloc.c:132
Scontrainte * Pinegalite
Definition: contrainte.h:103
Pcontrainte contrainte_variable_rename(Pcontrainte, Variable, Variable)
Pcontrainte contrainte_variable_rename(Pcontrainte c, Variable v_old, Variable v_new): rename the pot...
Definition: unaires.c:115
Pcontrainte equations_lexicographic_sort(Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
Definition: unaires.c:438
bool inequalities_opposite_p(Pcontrainte, Pcontrainte)
bool inequalities_opposite_p(Pcontrainte c1, Pcontrainte c2): True if the non-constant part of c1 is ...
Definition: predicats.c:71
bool inegalite_normalize(Pcontrainte)
bool inegalite_normalize(Pcontrainte ineg): normalisation d'une inegalite a variables entieres; voir ...
Definition: normalize.c:156
void inegalite_dump(Pcontrainte)
void inegalite_dump(Pcontrainte c): impression "physique" d'une inegalite; utilise en debugging
Definition: io.c:182
bool eq_smg(Pcontrainte, Pcontrainte)
predicats.c
Definition: predicats.c:52
void Pcontrainte_separate_on_vars(Pcontrainte, Pbase, Pcontrainte *, Pcontrainte *)
void Pcontrainte_separate_on_vars(initial, vars, pwith, pwithout) Pcontrainte initial; Pbase vars; Pc...
Definition: unaires.c:140
int inequality_lexicographic_compare(Pcontrainte, Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
Definition: unaires.c:416
int constraint_rank(Pcontrainte, Pcontrainte)
Return the rank of constraint c in constraint list lc.
Definition: listes.c:75
void inegalites_dump(Pcontrainte)
Definition: io.c:220
Pcontrainte contrainte_substitute_dimension(Pcontrainte, Variable, Pvecteur)
Definition: binaires.c:57
int level_contrainte(Pcontrainte, Pbase)
int level_contrainte(Pcontrainte pc, Pbase base_index) compute the level (rank) of the constraint pc ...
Definition: unaires.c:292
Pcontrainte contrainte_make(Pvecteur)
Pcontrainte contrainte_make(Pvecteur pv): allocation et initialisation d'une contrainte avec un vecte...
Definition: alloc.c:73
Pcontrainte contrainte_new(void)
CONTRAINTE.
Definition: alloc.c:47
int contrainte_subst(Variable, Pcontrainte, Pcontrainte, bool)
Definition: binaires.c:48
Scontrainte Sinegalite
Definition: contrainte.h:103
void contrainte_reverse(Pcontrainte)
void contrainte_reverse(Pcontrainte eq): changement de signe d'une contrainte, i.e.
Definition: unaires.c:67
Value contrainte_eval(Pvecteur, Pvecteur)
Evaluate constraint c according to values in v and return the constant obtained.
Definition: predicats.c:331
void contrainte_fprint(FILE *, Pcontrainte, bool, char *(*)(Variable))
io.c
Value eq_sum_const(Pcontrainte, Pcontrainte)
Value eq_sum_const(Pcontrainte c1, Pcontrainte c2): calcul de la somme des deux termes constants des ...
Definition: binaires.c:243
bool contrainte_verifiee(Pcontrainte, bool)
bool contrainte_verifiee(Pcontrainte ineg, bool eq_p): test de faisabilite d'inegalite (eq_p == false...
Definition: predicats.c:234
Pcontrainte contraintes_copy(Pcontrainte)
Pcontrainte contraintes_copy(Pcontrainte c_in) a list of constraints is copied with the same order In...
Definition: alloc.c:270
Pcontrainte contrainte_translate(Pcontrainte, Pbase, char *(*)(void))
void egalite_dump(Pcontrainte)
void egalite_dump(Pcontrainte c): impression "physique" d'une egalite; utilise en debugging
Definition: io.c:160
Value eq_diff_const(Pcontrainte, Pcontrainte)
Value eq_diff_const(Pcontrainte c1, Pcontrainte c2): calcul de la difference des deux termes constant...
Definition: binaires.c:218
void egalite_fprint(FILE *, Pcontrainte, char *(*)(Variable))
Pcontrainte contrainte_free(Pcontrainte)
Pcontrainte contrainte_free(Pcontrainte c): liberation de l'espace memoire alloue a la contrainte c a...
Definition: alloc.c:184
struct Scontrainte * Pcontrainte
Pcontrainte constraints_lexicographic_sort(Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
For historical reasons, equal to equations_lexicographic_sort()
Definition: unaires.c:461
char * contrainte_sprint_format(char *, Pcontrainte, bool, char *(*)(Variable), bool)
void contrainte_chg_sgn(Pcontrainte)
void contrainte_chg_sgn(Pcontrainte eq): changement de signe d'une contrainte, i.e.
Definition: unaires.c:56
void contrainte_error(char *, char *,...)
error.c
Definition: error.c:49
bool contrainte_in_liste(Pcontrainte, Pcontrainte)
listes.c
Definition: listes.c:52
int equation_lexicographic_compare(Pcontrainte, Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
Definition: unaires.c:395
char * inegalite_sprint_format(char *, Pcontrainte, char *(*)(Variable), bool)
void inegalite_fprint(FILE *, Pcontrainte, char *(*)(Variable))
void egalites_fprint(FILE *, Pcontrainte, char *(*)(Variable))
bool constraint_without_vars(Pcontrainte, Pbase)
bool constraint_without_vars(c, vars) Pcontrainte c; Pbase vars;
Definition: predicats.c:276
char * inegalite_sprint(char *, Pcontrainte, char *(*)(Variable))
Scontrainte * Pegalite
Definition: contrainte.h:101
void contrainte_vect_sort(Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
Pvecteur vecteur
struct Scontrainte * succ
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
Definition: vecteur-local.h:60