Value Withdrawal Explanation in CSP Gerard Ferrand, Willy Lesaint, Alexandre Tessier Universite d'Orleans, LIFO Rapport N o 2000-09 Value Withdrawal Explanation in CSP Gerard Ferrand Willy Lesaint Alexandre Tessier LIFO, BP 6759, 45067 Orleans Cedex 2, Frane http://www.univ-orleans.fr/SCIENCES/LIFO Abstrat This work is devoted to onstraint solving motivated by the debugging of onstraint logi programs a la GNU-Prolog. The paper fouses only on the onstraints. In this framework, onstraint solving amounts to domain redution. A omputation is formalized by a haoti iteration. The omputed result is desribed as a losure. This model is well suited to the design of debugging notions and tools, for example failure explanations or error diagnosis. In this paper we detail an appliation of the model to an explanation of a value withdrawal in a domain. Some other works have already shown the interest of suh a notion of explanation not only for failure analysis. 1 Introdution Constraint Logi Programming (CLP) [11℄ an be viewed as the reunion of two programming paradigms : logi programming and onstraint programming. Delarative debugging of onstraints logi programs has been treated in previous works [8℄ and tools have been produed for this aim [14℄ during the DiSCiPl (Debugging Systems for Constraint Programming) ESPRIT Projet. But these works only deal with the lausal aspets of CLP. This paper fouses on the onstraint level. The tools used at this level strongly depend on the onstraint domain. Here we are interested in a wide eld of appliations of onstraint programming: nite domains. The aim of onstraint programming is to solve Constraint Satisfation Problems (CSP) [15℄, that is to provide an instantiation of the variables whih is orret with respet to the onstraints. The solver goes towards the solutions ombining two dierent methods. The rst one (labeling) onsists in partitioning the domains until to obtain singletons and, testing them. The seond one (domain redution) redues the domains eliminating the values whih annot be orret aording to the onstraints. Labeling provides exat solutions whereas domain redution simply approximates them. 2 In general, the labeling alone is very expensive and a good ombination of the two methods is more eÆient. The main ontribution of this paper is to formalize the domain redution in order to provide a notion of explanation for the basi event whih is \the withdrawal of a value from a domain". We are inspired by a onstraint programming language over nite domains, GNU-Prolog [5℄, beause its glass-box approah allows a good understanding of the links between the onstraints and the rules. In this work labeling mehanism is not onsidered and explanations are only dened for ar onsisteny rules. An explanation is a subset of rules used during the omputation and whih are responsible for the removal of a value from a domain. Several works shown that detailed analysis of explanations have a lot of appliations [9, 10℄. In dynami problems, the explanations allow to retrat onstraints without beginning the omputation again. In baktraking algorithms, the explanations avoid to repeatedly perform the same searh work. This intelligent baktraking an be applied to sheduling problems. It has been proved eÆient for Open-shop appliations. They are useful for over-onstrained problems too. Explanations provide a set of onstraints whih an be relaxed in order to obtain a solution. But appliations of explanations are outside the sope of this paper. An aspet of the debugging of onstraint programs is to understand why we have a failure (i.e. we do not obtain any solution) [2℄. This ase appears when a domain beomes empty, that is no value of the domain belongs to a solution. So, an explanation of why these values have disappeared provides an explanation of the failure. Another aspet is error diagnosis. Let us assume an expeted semantis for the CSP. Consider we are waiting for a solution ontaining a ertain value for a variable, but this value does not appear in the nal domain. An explanation of the value withdrawal help us to nd what is wrong in our program. The paper is organized as follows. Setion 2 gives some notations and basi denitions for Constraint Satisfation Problems. Setion 3 desribes a model for domain redution. Setion 4 applies the model to explanations. Next setion is a onlusion. 2 Preliminaries We use the following notations: If = ( i )i2I is a family indexed by , and , we denote by jJ the family ( j )j2J indexed by . If = ( i )i2I is a family of sets indexed by , we denote by Q the produt Qi2I i = f( i)i2I j for eah 2 i 2 i g. Here we only onsider the framework of domain redution as in [17, 5, 4, 16℄. More general frameworks are desribed in [3, 12℄. F J I F F F I i I; e I J F F 3 F F F e A Constraint Satisfation Problem (CSP) is made of two parts, the syntati part: a nite set of variable symbols ; a nite set of onstraint symbols ; a funtion var : ! P ( ), whih assoiates with eah onstraint symbol the set of variables of the onstraint; and the semanti part: a family of non empty domains indexed by the set of variables = ( x)x2V , eah x is the domain of the variable denoted by ( x 6= ;); a family of tables (sets of tuples) = ( )2C 2 Q2C P (Q Qjvar ) indexed by the set of onstraints , i.e., for eah 2 , jvar , the members of are the solutions of . A tuple 2 Q is a solution of the CSP ( var ) if for eah 2 , jvar 2 . For a given CSP, one is interested in the omputation of the solutions. The simplest method onsists in generating all the tuples from the initial domains, then testing them. This generate and test method is learly expensive for wide domains. So, one prefers to redue the domains rst (\test" and generate). Here, we fous on the redution stage. The omputing domains must ontain all the solutions and must be as small as possible. So, these domains are \approximations" of the set of solutions. We desribe now, a model for the omputation of suh approximations. V C C V D D x T t 3 ( ) D T t D T C C D T ( ) D ( ) D V; C; ; D; T C T A Model of the Operational Semantis Our model is well suited to dene explanations of basi events during the omputation of approximations. Moreover lassial results [3, 12℄ are proved again in this model. We assume xed a CSP ( var ). We want to ompute an approximation of the solutions. The solver is desribed by a set of rules assoiated with the onstraints. We an hoose more or less aurate rules for eah onstraint (in general, the more aurate are the rules, the more expensive is the omputation). A rule works on a subset of the variables of the CSP. It eliminates some values of one (and only one in our framework) domain whih are inonsistent with respet to the other domains. Intuitively, the solver applies the rules one by one replaing the domains of the variables with those it omputes. The omputation stops when one domain V; C; ; D; T 4 beomes empty (in this ase, there is no solution), or when the rules annot redue domains anymore. We rst desribe the rules, then we show that if no rule is \forgotten", the resulting domains are the same whatever the order the rules are used. Denition Q 1 A redution rule of type ( ), where Qand 2 , is a 02 funtion : x2W P ( x ) ! P ( y ) suh that: for eah x2W P ( x ), (monotoniity) (for eah 2 , x 0x) ) ( ) ( 0); (ontratane) ( ) y . Other works onsider more general kinds of rules [4, 3℄, their types have the form ( ) with . r r D W; y D r d Z V y d; d x W; Z W W d d r d W D r d d W V Example 1 Hyper-ar onsisteny Q Let , 2 , jW and 2QQx2W P ( x). The redution rule of type ( ) dened by ( ) = f y j 2 ( ) \ g is an hyper-ar onsisteny rule. removes inonsistent values with respet to the variable domains. When is f g it is the well known ar onsisteny framework. W V y W T D W; y r d t d t D d r T r W x; y Example 2 GNU-Prolog In GNU-Prolog, suh rules are written [5℄, where is a range dependent on domains of a set of variables. The rule x in 0..max(y) of type (f g ) is the funtion whih omputes the intersetion between the domain of and the domain f0 1 ( )g where ( ) is the greatest value in the domain of . For the sake of simpliity, for eah rule, we dene its assoiated redution operator. This operator applies to the whole family of domains. A single domain is modied, the domain redued by the redution rule. operator assoiated with the rule Q of type ( ) is redu r : Q TheP (redution Q x ) ! x2V P ( x ) dened by: for eah 2 x2V P ( x ), x2V redu r ( )jV nfyg = jV nfyg ; redu r ( )y = ( jW ). Note that redution operators are monotoni and ontratant (but they are not neessarily idempotent). Q P ( ), for eah solution AQ redution rule is orret if, for eah 2 x x2V 2 , 2 Q ) 2 Q redu r ( ). x in r r x; y ; x x ; ; : : : ; max y max y y r D D d d r d r D t D d d t W; y d d t Lemma 1 A redution rule D d of type solution t, r((ftxg)x2W ) = fty g. r ( W; y 5 ) is orret if and only if, for eah ): apply the denition with \redued" to a solution. (: beause redution operators are monotoni. Let 2 . A redution rule of type ( ) with var ( Q) is orret with Q respet to if, for eah 2 x2V P ( x), for eah 2 , 2 jvar ) 2 Q redu r ( )jvar . Lemma 2 A redution rule of type ( ) is orret w.r.t. a onstraint if and only if, for eah 2 , ((f xg)x2W ) = f y g. Proof. ): apply the denition with = (f xg)x2V suh that ( x)x2var 2 . (: beause redution operators are monotoni. Note that if a redution rule is orret w.r.t. a onstraint then is orret. But the onverse does not hold. Proof. d C r d W; y d W D t T t d t ( ) ( ) r t T r W; y t t d t t T ( ) r r Example 3 GNU-Prolog The rule : x in 0..max(y) is orret with respet to the onstraint dened by var ( ) = f g and = f( 7! 0 7! 0) ( 7! 0 7! 1) ( 7! 1 7! 1)g ( x = y = f0 1g and is the onstraint ). Indeed, ( 7! f0g 7! f0g) = f0g \ f0g = f0g; ( 7! f0g 7! f1g) = f0g \ f0 1g = f0g; ( 7! f1g 7! f1g) = f1g \ f0 1g = f1g. r D x; y D ; T x ;y ; x r x ;y r x ;y ; r x ;y ; x ;y ; x ;y y Let be a set of redution rules. The omputation starts from and tries to redue as muh as possible the domain of eah variable using the redution rules. The downward losure of by the set of redution rules is the greatest ommon xpoint of the redution operators assoiated with the redution rules of . The downward losure is the most aurate family of domains whih an be omputed using a set of orret rules. Obviously, eah solution belongs to this family. Now, for eah 2 , the inlusion over P ( x) is assumed to be a well-founded ordering (i.e. eah x is nite). There exists at least two ways to ompute the downward losure of by a set of redution rules : Q P ( ) ! Q P ( ) dened 1. the rst one is to iterate the operator x x x2V x2V by 7! (Tr2R redu r ( )x)x2V from until to reah a xpoint; R D D R R x V D D D R D d d D 6 D 2. the seond one is the haoti iteration that we are going to reall [3℄. A run is an innite sequene of operators of . A run is fair if eah 2 appears in it innitely often. Let us dene an iteration of a set of rules w.r.t. a run. R r R Denition 2 The iteration of the set of redution rules R from the domain d 2 Q x2V P ( x ) with respet to the run D dened indutively by: 1. 0 d = r1 ; r2 ; : : : is the innite sequene d0 ; d1 ; d2 ; : : : ; d j 2 IN, j = r +1 ( ). A haoti iteration is an iteration w.r.t. a fair run. The operator 7! (Tr2R redu r ( )x)x2V may redue several domains at eah step. But the omputations are more intriate and some an be useless. In pratie haoti iterations are preferred, they proeed by elementary steps, reduing only one domain at eah step. The next result of onuene [6℄ ensure that any haoti iteration reahes the losure. Note that, beause is a family of nite domains, every iteration from is stationary. 2. for eah j d +1 redu j d d d D D Lemma 3 The limit of every haoti iteration of the redution rules R from D is the downward losure of by . Proof. Let be the downward losure of by . Let be a haoti iteration of from with respet to . Let ! be the limit of the haoti iteration. Let ( i)i2I v ( i )i2I denotes: for eah 2 , i i. For eah , v i, by indution: v = . Assume v i, by i i . monotoniity, r +1 () = v redu r +1 ( ) = ! v : There exists 2 IN suh that ! = k beause v is a wellfounded ordering. The run is fair, hene k is a ommon xpoint of the redution operators, thus k v (the greatest ommon xpoint). D R D R D r1 ; r2 ; : : : A i I i A d B B 0 d d redu i d 0 1 d ;d ;::: R d i k D d d d +1 d d d The fairness of runs is a onvenient theoretial notion to state the previous lemma. Every haoti iteration stabilizes, so in pratie the omputation ends when a ommon xpoint is reahed. Moreover, implementations of solvers use various strategies in order to determinate the order of invoation of the rules. Moreover if a domain beomes empty, we know that there is no solution, so an optimization onsists in stopping the omputation before the losure is reahed. In that ase, we say that we have a failure iteration. 7 4 Appliation to Event Explanations Sometimes, when a domain beomes empty or just when a value is removed from a domain, the user wants an explanation of this phenomenon [10, 2℄. The ase of failure is the partiular ase where all the values are removed. The basi event here will be a value withdrawal. Let us onsider an iteration, and let us assume that at a step a value is removed from the domain of a variable. In general, all the rules used from the beginning of the iteration are not neessary to explain the value withdrawal. It is possible to explain the value withdrawal by a subset of these rules suh that every iteration using this subset of rules removes the onsidered value. This subset of rules is an explanation of the value withdrawal. We are going to dene a more preise notion of explanation: this subset will be strutured as a tree. It will be ahieved in a basi but signiant ar onsisteny like framework. So we onsider speial redution rules alled rules of abstrat ar onsisteny. Suh a rule is binary and its type has the form (f g ), that is it redues the domain of using the domains of and . Two funtions : ! and : ! are given. Intuitively, for a rule , ( ) will be the variable whose domain is modied aording to the domain of ( ) the other variable. An abstrat ar onsisteny redution rule (AAC-redution rule in short) is dened by : its type is (f ( ) ( )g ( )); for eah 2 Qx2fin r ;out r g P ( x ), ( ) = f 2 out r j r ( ) \ in r 6= ;g where r is a funtion out r ! P ( in r ). Note that is fully haraterized by ( ( ) ( ) r ) and vie versa. in r is the input domain and out r is the output domain. Intuitively, ( r ) is a superset of the values onneted to by the onstraint assoiated with . x; y ; y y x in r R V y out R V out r in r r in r ; out r d ( ) ar ; out r ( ) D D D ( ) r D ar r d e d ( ) ar e d ( ) ( ) in r ; out r ; ar D ( ) ( ) e e r Example 4 Ar onsisteny In the framework of ar onsisteny, eah onstraint is binary, that is var ( ) = f g, and it provides two rules: of type (f g ), ( ) = f 2 x j 9 2 7! ) 2 g, that is, for eah 2 x, r1 ( ) = f 2 y j ( 7! y ( 7! 7! ) 2 g, and the other rule of type (f g ) dened similarly. Note that it is possible to dene more weak notions of ar onsisteny, with, for example, r1 ( ) f 2 y j ( 7! 7! ) 2 g. x; y d ; e; y r1 x e; y f f T e T ar x; y ; x r2 e f D x D ar r1 d e e f d D f x x; y ; y e; y Example 5 GNU-Prolog f T Let us onsider the onstraint \x #=< y" in GNU-Prolog. This onstraint is implemented by two redution rules, it is the glass-box paradigm [5, 18℄: 8 of type (f g ) (i.e. ( ) = , ( ) = ), with, for eah 2 x, r1 ( ) = f 2 y j g; 2. of type (f g ) (i.e. ( ) = , ( ) = ), with, for eah 2 y , r2 ( ) = f 2 x j g. now a set rules, in the sense of indutive denitions [1℄, over S We( dene x f g). x2V Denition 3 For eah redution rule , for eah 2 out r , we dene the dedution rule: ( ( )) f( ( )) j 2 r ( )g The rule only depends on and , so it is named ( ) and it is written ( ) : ( ( )) f( ( )) j 2 r ( )g When r ( ) = ; the dedution rule is redued to \the fat" ( ) : ( ( )) ;, written in short ( ) : ( ( )) . Intuitively, a dedution rule ( ) : ( ( )) f( ( )) j 2 r ( )g should be understood as follow: if all the 2 r ( ) are removed from the domain of ( ) then is removed from the domain Q of ( ). The instane of the dedution rule ( ) by 2 x2fin r ;out r g P ( x) is the following impliation: 1. r1 x; y ; x ar e f r2 D e x; y ; y ar e D f D in r1 y out r1 x e D in r2 x out r2 y e D f f e x r e; out r f; in r e e; r ar e f D ar r ( ) e e; r e; out r f; in r f ar e e e; r e; r e; out r e; r e; out r f; in r f in r e; out r ar e f ar e e out r e; r 0 ^ d ( ) 1 26 in r A ) 26 ( ) f 2ar e Q Lemma 4 For eah dedution rule ( ), for eah 2 f d e ( ) D ( ) r d r( ) e; r d x2fin(r);out(r)g P ( x), the D ( ) by holds. Proof. Beause of the denition of AAC-redution rules. From now on, a set of AAC-redution rules is assumed to be xed. The set of dedution rules for eah 2 and for eah 2 out r forms an indutive denition [1℄. A proof tree rooted by ( ), 2 y and 2 , is an explanation for ( ). Intuitively, it provides an explanation of the reason why has been removed from the domain of . Note that a leaf of an explanation orresponds to a fat ( ) : ( ( )) , that is the ase where r ( ) = ;. instane of e; r d R r R e e; y e D D ( ) y V e; y e y e; r e; out r ar e Example 6 GNU-Prolog Let us onsider the 3 onstraints x #< y, y #< z, z #< x with x = y = z = f0 1 2g. The redution rules are: of type (f g ), dened by ( ) = f 2 g and, dened in the same way, of type (f g ), of type xj9 2 y (f g ), of type (f g ), of type (f g ), and of type (f g ). D ; ; d r1 f y; z x; y ; x d ;e < f ;y r4 r2 y; z ;z r5 z; x ; z 9 D D r1 d x; y ; y r6 e r3 z; x ; x (0 ) (0 ) ;x ;x (1; r3 ) ;y ;y (2; r3 ) (0 ) ;z (0; r1 ) (2 ) (1 ) ;y ;y (2 ) (0; r1 ) (2 ) (1 ) (1; r2 ) (2; r3 ) ;x (2; r5 ) (0; r6 ) (0 ) ;x (0; r6 ) Figure 1: Value Withdrawal Explanations For example, in GNU-Prolog, is written \x in 0..max(y)-1" and is written \y in min(x)+1..2". Figure 1 shows three dierent explanations for (0 ). The rst explanation says: 0 has been removed from the domain of by the redution rule beause 1 and 2 have been removed from the domain of , 1 has been removed from the domain of by the redution rule beause 2 has been removed from the domain of , and so on ... r1 r2 ;x x r1 y y r3 z We are going to dene the explanation assoiated with an event \withdrawal of a value from a domain" in an iteration. But before, we give an intermediary denition. Let us onsider an iteration of from with respet to the run . Let us assume that the value has disappeared from the domain of the variable ( i) at the -th step, that is 2 iout r but 62 iout r . Note that iout r = i( i jfin r ;out r g ) = f 2 iout r j r ( ) \ iin r 6= ;g. So i i r ( ) \ in r = ;, i.e. for eah 2 r ( ), 62 in r , so there exists f suh that 62 jin r but 2 inj r (note that ( i) = ( j )). We dene : j ( ) = f( ) j 2 r ( ) 62 jout r 2 out r g. Let us now dene explanations. The withdrawal of from iout r will be explained by the tree expl ( ( i) ) indutively dened as follows : its root is labeled by ( ( i)); the rule used to onnet the root to its hildren is ( i) : ( ( i)) f( ( i)) j 2 r ( )g (the hildren of the root are labeled by the ( ( i))); the immediate subtrees are every expl ( ( i) ) suh that ( ) 2 ( ). 0 1 d ;d ;::: r1 ; r2 ; : : : ( i) ar i e d r 1 ( i) f p e; i D e out r d R f; j d i 1 d ( i) e e ( i) f f ( i) f f d 1 ( i) d ar i e f 1 f d ( j) ;f d e ar i e 1 d ( i) in r ( i) ar i e ; f 1 ( i) d d ( i) 1 ( i) j < i out r f 1 ( j) e e; out r d d ( i) ;i e; out r e; r f; in r f e; out r ar i e f; in r f; in r 10 ;j f; j p e; i It is important to note that an explanation only depends on the rules : the are not parts of the explanation. The notion of explanation does not depend on the i unlike in the instanes of dedution rules. In general, all the redution rules of the iteration are not used in the explanation. i d d ( )) if and only if (there exists 62 !y ) if and only if ( 62 y , where Theorem 1 (There exists an explanation for a haoti iteration with limit is the downward losure). ! d suh that e e; y d e The last equivalene is proved by lemma 3. About the rst one: (: Let be the haoti iteration. There exists suh that 2 iy but 62 iy , the explanation is expl ( ). ): let us onsider a numbering 1 of the nodes of the explanation suh that the traversal aording to the numbering from to 1 orresponds to a breadth rst searh algorithm. For eah 2 f1 g, let ( i i) be the name of the rule whih links the node to its hildren, and let n be the prex of every iteration w.r.t. a run whih starts by i ! n . By indution we show that i 62 out r , so 62 y for every iteration whose run starts by n. It is important to note that the previous proof is onstrutive. The denition of expl ( ) gives an inremental algorithm to ompute explanations. Proof. e 0 1 d ; d ; ::: d 1 e i d e; y; i ;:::;n n i ;:::;n e ;r i 0 d ;:::;d r1 ; : : : ; r e d ( i) e d r1 ; : : : ; r e; y; i 5 Conlusion This paper has given a model for the operational semantis of CSP solvers by domain redution. This model is applied to the denition of a notion of explanation. An explanation is a set of rules strutured as a tree. An interesting aspet of our denition is that a subtree of an explanation is also an explanation (indutive denition). In the modeling of the operational semantis the rules are any hyper-ar onsisteny rules while in the denition of explanation the rules are assumed to be only ar onsisteny rules. A rst perspetive of future work is to extend explanation to hyper-ar onsisteny rules. As it is written in the introdution, onstraint solving ombines domain redution and labeling. A seond perspetive is to introdue labeling in our model. We plan to use explanations in order to diagnose errors in a CSP (aording to an expeted semantis), in the style of [13, 7℄. 11 Aknowledgements Disussions with Patrie Boizumault and Narendra Jussien are graefully aknowledged. Referenes [1℄ P. Azel. An introdution to indutive denitions. In J. Barwise, editor, Handbook of Mathematial Logi, volume 90 of Studies in Logi and the Foundations of Mathematis, hapter C.7, pages 739{782. North-Holland Publishing Company, 1977. [2℄ A. Aggoun, F. Bueno, M. Carro, P. Deransart, M. Fabris, W. Drabent, G. Ferrand, M. Hermenegildo, C. Lai, J. Lloyd, J. Maluszynski, G. Puebla, and A. Tessier. CP Debugging Needs and Tools. In M. Kamkar, editor, International Workshop on Automated Debugging, volume 2 of Linkoping Eletroni Artiles in Computer and Information Siene, 1997. [3℄ K. R. Apt. The Essene of Constraint Propagation. Theorial Computer Siene, 221(1{2):179{210, 1999. [4℄ F. Benhamou. Heterogeneous Constraint Solving. In M. Hanus and M. Rofrguez-Artalejo, editors, International Conferene on Algebrai and Logi Programming, volume 1139 of Leture Notes in Computer Siene, pages 62{76. Springer-Verlag, 1996. [5℄ P. Codognet and D. Diaz. Compiling Constraints in lp(FD). Journal of Logi Programming, 27(3):185{226, 1996. [6℄ P. Cousot and R. Cousot. Automati synthesis of optimal invariant assertions mathematial foundation. In Symposium on Artiial Intelligene and Programming Languages, volume 12(8) of ACM SIGPLAN Not., pages 1{12, 1977. [7℄ G. Ferrand. The Notions of Symptom and Error in Delarative Diagnosis of Logi Programs. In P. A. Fritzson, editor, Automated and Algorithmi Debugging, volume 749 of Leture Notes in Computer Siene, pages 40{57. Springer-Verlag, 1993. [8℄ G. Ferrand and A. Tessier. Positive and Negative Diagnosis for Constraint Logi Programs in terms of Proof Skeletons. In M. Kamkar, editor, International Workshop on Automated Debugging, volume 2 of Linkoping Eletroni Artiles in Computer and Information Siene, 1997. 12 [9℄ C. Gueret, N. Jussien, and C. Prins. Using intelligent baktraking to improve branh and bound methods: an appliation to Open-Shop problems. European Journal of Operational Researh, 2000. [10℄ N. Jussien. Relaxation de Contraintes pour les Problemes dynamiques. PhD thesis, Universite de Rennes 1, 1997. [11℄ K. Marriott and P. J. Stukey. Programming with Constraints: An Introdution. MIT Press, 1998. [12℄ U. Montanari and F. Rossi. Constraint relaxation may be perfet. Artiial Intelligene, 48:143{170, 1991. [13℄ E. Y. Shapiro. Algorithmi Program Debugging. ACM Distinguished Dissertation. MIT Press, 1982. [14℄ A. Tessier and G. Ferrand. Delarative Diagnosis in the CLP sheme. In P. Deransart, M. Hermenegildo, and J. Maluszynski, editors, Analysis and Visualisation Tools for Constraint Programming, hapter 5. Springer-Verlag, 2000. (to appear). [15℄ E. Tsang. Foundations of Constraint Satisfation. Aademi Press, 1993. [16℄ M. H. Van Emden. Value Constraints in the CLP sheme. In International Logi Programming Symposium, post-onferene workshop on Interval Constraints, 1995. [17℄ P. Van Hentenryk. Constraint Satisfation in Logi Programming. Logi Programming. MIT Press, 1989. [18℄ P. Van Hentenryk, V. Saraswat, and Y. Deville. Constraint Proessing in (FD). Draft, 1991. 13