6 #ifndef contrainte_header_included
7 #define contrainte_header_included
92 #define CONTRAINTE 1005
107 #define egalite_print(eg) egalite_fprint(stdout,eg)
110 #define inegalite_print(ineg) inegalite_fprint(stdout,ineg)
113 #define contrainte_vecteur(c) ((c)->vecteur)
115 #define contrainte_succ(c) ((c)->succ)
118 #define CONTRAINTE_NULLE_P(c) (VECTEUR_NUL_P(contrainte_vecteur(c)))
120 #define CONTRAINTE_UNDEFINED ((Pcontrainte) NULL)
122 #define CONTRAINTE_UNDEFINED_P(c) ((c)==CONTRAINTE_UNDEFINED)
125 #define COEFF_CST(c) vect_coeff(TCST,(c)->vecteur)
128 #define contrainte_rm(c) (void) contrainte_free(c)
130 #define VERSION_FINALE
131 #ifndef VERSION_FINALE
132 #define CONTRAINTE_RM(rd,f) dbg_contrainte_rm(rd,f)
134 #define CONTRAINTE_RM(rd,f) contrainte_rm(rd)
bool contrainte_eval_p(Pvecteur, Pvecteur, bool)
Evaluate constraint c according to values in v and return true if the constraint is met.
int contrainte_subst_ofl(Variable, Pcontrainte, Pcontrainte, bool)
binaires.c
struct Scontrainte Scontrainte
bool equality_eval_p(Pvecteur, Pvecteur)
bool contrainte_oppos(Pcontrainte, Pcontrainte)
bool contrainte_oppos(Pcontrainte ineg1, Pcontrainte ineg2): indique si 2 inegalites forment une egal...
Pcontrainte inegalite_comb(Pcontrainte, Pcontrainte, Variable)
Pcontrainte contrainte_remove_large_coef(Pcontrainte, Value)
Pcontrainte contrainte_var_min_coeff(Pcontrainte, Variable, Value *, bool)
Pcontrainte contrainte_var_min_coeff(Pcontrainte contraintes, Variable v, int *coeff) input : a list ...
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,...
void dbg_contrainte_rm(Pcontrainte, char *)
void dbg_contrainte_rm(Pcontrainte c): version debug de contrainte rm; trace de la desallocation et i...
Pcontrainte extract_common_constraints(Pcontrainte *, Pcontrainte *, bool)
common (simply equal) contraints are extracted, whether equalities or inequalities.
Pcontrainte contrainte_append(Pcontrainte, Pcontrainte)
Pcontrainte contrainte_append(c1, c2) Pcontrainte c1, c2;.
Pcontrainte contraintes_make(Pvecteur,...)
Convert a list of vectors into a list of constraints.
void eq_set_vect_nul(Pcontrainte)
void_eq_set_vect_nul(Pcontrainte c): transformation d'une contrainte en une contrainte triviale 0 == ...
bool egalite_normalize(Pcontrainte)
bool egalite_normalize(Pcontrainte eg): reduction d'une equation diophantienne par le pgcd de ses coe...
int nb_elems_list(Pcontrainte)
int nb_elems_list(Pcontrainte list): nombre de contraintes se trouvant dans une liste de contraintes
void constraints_for_bounds(Variable, Pcontrainte *, Pcontrainte *, Pcontrainte *)
void constraints_for_bounds(var, pinit, plower, pupper) Variable var; Pcontrainte *pinit,...
void sprint_operator(char *, bool, bool)
bool contrainte_equal(Pcontrainte, Pcontrainte)
bool contrainte_equal(Pcontrainte c1, Pcontrainte c2): test d'egalite des contraintes c1 et c2; elles...
void inegalites_fprint(FILE *, Pcontrainte, char *(*)(Variable))
void norm_eq(Pcontrainte)
unaires.c
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 +...
Pcontrainte contrainte_copy(Pcontrainte)
Have a look at contrainte_dup and contraintes_dup which reverse the order of the list This copy versi...
Pcontrainte inegalite_comb_ofl_ctrl(Pcontrainte, Pcontrainte, Variable, int)
Pcontrainte inegalite_comb_ofl_ctrl(Pcontrainte posit, Pcontrainte negat, Variable v,...
Pcontrainte inequalities_lexicographic_sort(Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
char * contrainte_sprint(char *, Pcontrainte, bool, char *(*)(Variable))
bool cyclic_constraint_list_p(Pcontrainte)
Check if list l contains a cycle.
int safe_nb_elems_list(Pcontrainte, int)
Compute the number of elements in the list if it is less than n.
Pcontrainte contraintes_free(Pcontrainte)
Pcontrainte contraintes_free(Pcontrainte pc): desallocation de toutes les contraintes de la liste pc.
void egalites_dump(Pcontrainte)
bool inequality_eval_p(Pvecteur, Pvecteur)
Pcontrainte inegalite_comb_ofl(Pcontrainte, Pcontrainte, Variable)
bool egalite_in_liste(Pcontrainte, Pcontrainte)
bool egalite_in_liste(Pcontrainte eg, Pcontrainte leg): test si une egalite appartient a une liste d'...
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
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.
Variable contrainte_simple_equality(Pcontrainte)
returns whether a constraint is a simple equality: X == 12 the system is expected to be normalized?
Pcontrainte contrainte_extract(Pcontrainte *, Pbase, Variable)
Pcontrainte contrainte_extract(pc, base, var) Pcontrainte *pc; Pbase base; Variable var;.
Pcontrainte constraints_lexicographic_sort_generic(Pcontrainte, int(*)(Pvecteur *, Pvecteur *), bool)
Pcontrainte contraintes_dup(Pcontrainte)
Pcontrainte contraintes_dup(Pcontrainte c_in) a list of constraints is copied.
bool egalite_equal(Pcontrainte, Pcontrainte)
bool egalite_equal(Pcontrainte eg1, Pcontrainte eg2): teste l'equivalence de deux egalites; leurs coe...
Pcontrainte contrainte_dup_extract(Pcontrainte, Variable)
Pcontrainte contrainte_dup_extract(c, var) Pcontrainte c; Variable var;.
bool contrainte_constante_p(Pcontrainte)
bool contrainte_constante_p(Pcontrainte c): test de contrainte triviale sans variables (ie du type 0<...
bool constraints_without_vars(Pcontrainte, Pbase)
bool constraints_without_vars(pc, vars) Pcontrainte pc; Pbase vars;
bool contrainte_normalize(Pcontrainte, bool)
normalize.c
Pcontrainte contrainte_dup(Pcontrainte)
Pcontrainte contrainte_dup(Pcontrainte c_in): allocation d'une contrainte c_out prenant la valeur de ...
Pcontrainte contrainte_variable_rename(Pcontrainte, Variable, Variable)
Pcontrainte contrainte_variable_rename(Pcontrainte c, Variable v_old, Variable v_new): rename the pot...
Pcontrainte equations_lexicographic_sort(Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
bool inequalities_opposite_p(Pcontrainte, Pcontrainte)
bool inequalities_opposite_p(Pcontrainte c1, Pcontrainte c2): True if the non-constant part of c1 is ...
bool inegalite_normalize(Pcontrainte)
bool inegalite_normalize(Pcontrainte ineg): normalisation d'une inegalite a variables entieres; voir ...
void inegalite_dump(Pcontrainte)
void inegalite_dump(Pcontrainte c): impression "physique" d'une inegalite; utilise en debugging
bool eq_smg(Pcontrainte, Pcontrainte)
predicats.c
void Pcontrainte_separate_on_vars(Pcontrainte, Pbase, Pcontrainte *, Pcontrainte *)
void Pcontrainte_separate_on_vars(initial, vars, pwith, pwithout) Pcontrainte initial; Pbase vars; Pc...
int inequality_lexicographic_compare(Pcontrainte, Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
int constraint_rank(Pcontrainte, Pcontrainte)
Return the rank of constraint c in constraint list lc.
void inegalites_dump(Pcontrainte)
Pcontrainte contrainte_substitute_dimension(Pcontrainte, Variable, Pvecteur)
int level_contrainte(Pcontrainte, Pbase)
int level_contrainte(Pcontrainte pc, Pbase base_index) compute the level (rank) of the constraint pc ...
Pcontrainte contrainte_make(Pvecteur)
Pcontrainte contrainte_make(Pvecteur pv): allocation et initialisation d'une contrainte avec un vecte...
Pcontrainte contrainte_new(void)
CONTRAINTE.
int contrainte_subst(Variable, Pcontrainte, Pcontrainte, bool)
void contrainte_reverse(Pcontrainte)
void contrainte_reverse(Pcontrainte eq): changement de signe d'une contrainte, i.e.
Value contrainte_eval(Pvecteur, Pvecteur)
Evaluate constraint c according to values in v and return the constant obtained.
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 ...
bool contrainte_verifiee(Pcontrainte, bool)
bool contrainte_verifiee(Pcontrainte ineg, bool eq_p): test de faisabilite d'inegalite (eq_p == false...
Pcontrainte contraintes_copy(Pcontrainte)
Pcontrainte contraintes_copy(Pcontrainte c_in) a list of constraints is copied with the same order In...
Pcontrainte contrainte_translate(Pcontrainte, Pbase, char *(*)(void))
void egalite_dump(Pcontrainte)
void egalite_dump(Pcontrainte c): impression "physique" d'une egalite; utilise en debugging
Value eq_diff_const(Pcontrainte, Pcontrainte)
Value eq_diff_const(Pcontrainte c1, Pcontrainte c2): calcul de la difference des deux termes constant...
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...
struct Scontrainte * Pcontrainte
Pcontrainte constraints_lexicographic_sort(Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
For historical reasons, equal to equations_lexicographic_sort()
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.
void contrainte_error(char *, char *,...)
error.c
bool contrainte_in_liste(Pcontrainte, Pcontrainte)
listes.c
int equation_lexicographic_compare(Pcontrainte, Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
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;
char * inegalite_sprint(char *, Pcontrainte, char *(*)(Variable))
void contrainte_vect_sort(Pcontrainte, int(*)(Pvecteur *, Pvecteur *))
struct Scontrainte * succ
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....