Home
L`UNIVERSITE D`ORLEANS
Contents
1. 69 wamcc versus Prolog professionnels temps en sec 71 fragment du code g n r pour x y c 88 fragment de code C g n r pour x ytc 92 fragment de code assembleur Sparc g n r pour x y c 92 version de base de clp FD versus CHIP temps en sec 94 d composition des Tells dans la version de base 95 gain de la file optimis e sn wm mie ea ets tea A E 98 d composition des Tells avec une file optimis e 98 gain de optimisation 2 A a EN en eae 100 d composition des Tells dans la version finale 104 rainde la version male a i destins a O el AS 104 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 d tail du sain nnal a aa al Gen ee tas 104 clp FD versus CHIP temps en sec 106 clp FD versus compilateur CHIP temps en sec 106 th orie de propagation bool enne B 114 d finition du r solveur bool en de c1p B FD 116 clp B FD versus CHIP temps en sec 118 clp B FD versus un BDD temps en sec 119 clp B FD versus une m thode num rative temps en sec 120 clp B FD versus la consistance locale bool enne temps en sec 121 clp B FD versus une
2. Enfin nous avons t agr ablement surpris de constater que clp FD tait utilis comme support de cours sur les contraintes SICS par M Carlsson l universit de G nes par A Messora et dans une universit de Gr ce Notre exp rience nous a montr combien l extensibilit du r solveur tait cruciale pour les applications r elles A tel point qu il nous faut maintenant sortir du moule trop restrictif des calculs dirig s par les instructions pour nous orienter vers des calculs dirig s par les donn es Le cadre CC langages concurrents avec contraintes semble le plus prometteur gr ce la simplicit avec laquelle il permet les synchronisations En effet par rapport au cadre PLC il ne n cessite qu une seule nouvelle op ration nomm e Ask permettant de suspendre l ex cution d un calcul jusqu au succ s d une certaine contrainte La d tection de la satisfaction de cette contrainte est videmment le point cl pour implanter le Ask L encore nous b n ficions de l approche bo te de verre puisqu il nous suffit de savoir d tecter la satisfaction de l unique primitive La m thode pr sent e permet de d river d apr s la syntaxe de la contrainte i e statiquement une condition qui aussit t vraie nous assure que la contrainte consid r e est satisfaite i e condition suffisante Nous avons donc en main les outils n cessaires au passage la concurrence Au travail
3. obtenir un comportement actif des contraintes disjonctives C est ainsi qu vu le jour l op rateur de disjonction constructive du langage cc FD 69 Le concept de base de cette notion tant de factoriser les contraintes satisfaites par toutes les branches alternatives et de les ajouter au store aussit t que possible sans cr er de point de choix Ceci peut tre formalis simplement pour des syst mes de contraintes d finis par des treillis 63 en consid rant un op rateur glb greatest lower bound entre contraintes en plus du classique lub associ la conjonction d fini comme glb c c e c Hen cz E c Ainsi une contrainte disjonctive est utilis e de mani re active pour laguer l arbre de recherche et sans cr er de points de choix La puissance d une telle approche dans des applications r elles a t d montr e dans 48 Toutefois ce m canisme peut tre assez co teux dans le cas des DF du fait que les contraintes disjonctives doivent tre reconsid r es chaque tape de propagation pour r valuer l information commune issue des disjonctions i e contraintes satisfaites ajouter au store La solution consiste ici aussi n utiliser qu une approximation et ne d tecter qu un sous ensemble de l information commune Dans cette section nous montrons que notre syst me de contraintes permet d encoder un cas particulier de disjonction constructive pour lequel le m me lagage est effe
4. val X I 201 Annexe F Programme five Benchmark Finite Domain Name five pl Title five house puzzle Original Source P Van Hentenryck s book Adapted by Daniel Diaz INRIA France Date September 1992 A logic puzzle Solution N1 N2 N3 N4 N5 3 4 5 2 1 C1 C2 C3 C4 C5 5 3 1 2 4 P1 P2 P3 P4 P5 5 1 4 2 3 A1 A2 A3 A4 A5 4 5 1 3 2 D1 D2 D3 D4 D5 4152 54 3 five_house L fd_vector_max 5 L N1 N2 N3 N4 N5 C1 C2 C3 C4 C5 P1 P2 P3 P4 P5 A1 A2 A3 A4 A5 D1 D2 D3 D4 D5 INRIA Rocquencourt ChLoE Project 202 ANNEXE F PROGRAMME FIVE domain L 1 5 N5 1 D5 3 alldifferent C1 C2 C3 C4 C5 alldifferent P1 P2 P3 P4 P5 alldifferent N1 N2 N3 N4 N5 alldifferent A1 A2 A3 A4 A5 alldifferent D1 D2 D3 D4 D5 N1 C2 N2 Al N3 P1 N4 D3 P3 Di Ci D4 P5 A4 P2 C3 C1 Cb 1 plus_or_minus A3 P4 1 plus_or_minus A5 P2 1 plus_or_minus N5 C4 1 labeling L partial lookahead plus_or_minus X Y C X Y C plus_or_minus X Y C X C Y constructive disjunction and partial lookahead plus_or_minus X Y C X in min V C max Y C min Y C max Y C Y in min X C max X C min X C max X C 203 Annexe G Programme cars PE Benchmark Finite Domain
5. Annexe A Programme crypta PE Benchmark Finite Domain INRIA Rocquencourt ChLoE Project Name crypta pl Title crypt arithmetic Original Source P Van Hentenryck s book Adapted by Daniel Diaz INRIA France Date September 1992 Solve the operation fe BAIJJAJIIAHFCFEBBJEA fe DHFGABCDIDBIFFAGFEJE GJEGACDDHFAFJBFIHEEF Solution A B C D E F G H 1 J pe 1 2 3 4 5 6 7 8 9 0 JR crypta LD fd_vector_max 9 LD A B C D E F G H 1 J alldifferent LD domain LD 0 9 191 ANNEXE A PROGRAMME CRYPTA 192 domain Sr1 Sr2 0 1 B in 1 9 D in 1 9 G in 1 9 A 10 E 100 J 1000 B 10000 B 100000 E 1000000xF E 10 J 100 E 1000 F 10000 G 100000 A 1000000 F F 10 E 100 E 1000 H 10000 1 100000 F 1000000 B 10000000 Sri1 C 10 F 100 H 1000 A 10000 I 100000 I 1000000 J F 10 1I 100 B 1000 D 10000 I 100000 D 1000000 C Sri J 10 F 100 A 1000 F 10000 H 100000 D 1000000 D 10000000 Sr2 A 10 J 100 J 1000 I 10000 A 100000 B B 10 A 100 G 1000 F 10000 H 100000 D Sr2 C 10 A 100 G 1000 E 10000 J 100000 G labeling LD Annexe B Programme eql0 PE Benchmark Finite Domain INRIA Rocquencourt ChLoE Project Name eq10 pl Title linear equations Original Source Thomson LCR Adapted by Daniel Diaz INRIA F
6. c est dire que VS S C S gt Xs C rs ce qui revient dire que SH c O Remarques e la propri t 6 2 nous indique que E c est une condition suffisante pour d tecter la satisfaction de toute contrainte c anti monotone e cette propri t reste vraie si au lieu de tester tout le domaine de X on se contente de tester l intervalle qui le contient i e E X in r min X max X C r puisque VS Xs C min X max X s Ceci constitue une approximation suppl mentaire Dans ce qui suit nous pr senterons des approximations de r et non pas de X Ainsi lorsque nous en viendrons avoir des conditions du type min X max X C r ce sera uniquement qu elles sont quivalentes dom X C r i e r est un intervalle Il est toutefois possible d ajouter cette approximation tous les sch mas que nous pr senterons e l aspect statique de cette condition g n r e partir de la syntaxe d une contrainte CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 137 permet d envisager une compilation de ces conditions e E c contient toutes les variables pr sentes dans c Ainsi cette condition doit tre re test e chaque fois qu une de ces variables est modifi e Du point de vue de Vimplantation les cha nages de d pendances des variables DF pourront tre tendus pour galement r f rencer ces conditions qui seront alors r valu es au moment propice e il est facile de g n raliser cette con
7. Supposons alors que la contrainte Y 8 soit ajout e Apr s modification du domaine de Y la phase de propagation r ex cutera Cy v rifiant inutilement que 5 8 En effet la contrainte Cy est d sormais satisfaite puisque 5 n appartient plus au domaine de Y Du fait qu un r solveur sur les DF bas sur la propagation locale n est pas complet il ne serait pas r aliste de vouloir d tecter au plus juste la satisfaction d une contrainte Ceci entrainerait souvent l num ration des variables chaque Tell A nsi la meilleure mani re de faire consiste a utiliser une approximation de la condition de satisfaction Au chapitre 6 nous d taillerons ce principe Pour l instant consid rons que la seule approximation i e condition suffisante pour d tecter la satisfaction d une contrainte X in r est un test de cl ture sur X i e si X est clos dans S alors S satisfait X in r Ainsi dans l exemple pr c dent quand la contrainte Y 8 est ajout e X in val Y est d tect e comme tant satisfaite car X est clos Evidemment ceci n est vrai que si X est devenu clos avant et non pas pendant la phase de propagation courante i e toutes les propagations dues a la r duction de X doivent avoir t effectu es Optimisation 2 il est inutile de r ex cuter une contrainte X in r si X a t instanci e avant la phase de propagation courante Le registre DATE introduit pour la gestion de notre file optimis e est
8. clp FD Nous pr sentons ici les premiers r sultats des travaux men s en collaboration avec le Centre d Etudes de la Navigation A rienne CENA situ Orly Ce centre la charge de r gu ler le trafic a rien traversant tout le territoire fran ais Les r sultats pr liminaires nous ont encourag crire un article 18 Nous int grons celui ci tel quel en anglais car il correspond un travail principalement men par les personnels du CENA Notre r le a consit aider ces personnes dans la formalisation du probl me et d finir les contraintes sp cifiques n cessaires l application le contenu de ce chapitre a t publi e dans 18 170 CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 171 Using clp FD to Support Air Traffic Flow Management Denise Chemla Daniel Diaz Philippe Kerlirzin Serge Manchon CENA Orly Sud 205 94542 Orly A rogare Cedex France INRIA Domaine de Voluceau 78153 Le Chesnay France 3 SYSECA 315 bureaux de la Colline 92213 Saint Cloud France Abstract In this paper a Constraint Logic Programming CLP approach is used to solve an Air Traffic Flow Management ATFM problem the aircraft departure slot allocation Moreover our purpose is to show that CLP combining the declarativity of logic program ming with the efficiency of constraint solving is well suited to model many combinatorial optimization problems involved in the ATFM domain clp FD a C
9. member B Bd Ba L greatereqc Ba Aa C make_min_af R L make_min_sf _ make_min_sf A B C R L member A Ad Aa L member B Bd Ba L Ci is C Bd smallereqc Ba Aa C1 make_min_sf R L make_min_nf _ make_min_nf A B C R L member A Ad Aa L member B Bd Ba L Ci is C Ad greateregc Ba Ad C1 make_min_nf R L make_disj R D D make_disj H R T K Din Dout el_list R K R1 make_disj1 R1 Din D1 make_disj T K D1 Dout 211 Ba lt Aa C1 Ba lt Aa C1 Ba gt AatC Ba lt Aa C1 Ba gt Ad C1 ANNEXE H PROGRAMME BRIDGE 212 make_disj1 D D make_disj1 H T Din Dout make_disj2 H T Din D1 make_disj1 T D1 Dout make_disj2 H D D make_disj2 A B C D S Din Dout make_disj2 A B S A B C D Din Dout el_list _ el_list HIT L A D 1S member H D A L el_list T L S disjunct disjunct A B C D R disj A B C D disjunct R disj Aa Ad Ba Bd greateregc Ba Aa Ad Ba gt Aa Ad disj Aa Ad Ba Bd greatereqc Aa Ba Bd Aa gt Ba Bd label label A Ad Aa R indomain Aa label R constraint definitions smallereqc X Y C 4 X H lt Y C X in 0 max Y C Y in min X C infinity ANNEXE H PROGRAMME BRIDGE greatereqc X Y C A X gt Y C X in min Y C infinity Y in 0 max X C DATA jobs start a1 a2 a3
10. min Y 1 V min X min X 1 V min Y max Y 1 max X 1 IN IA IV IV puisque cy et cy sont quivalents CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 145 BX YS Bi AE ee Ce max X lt min Y 1 V min X gt max Y 1 Ainsi la satisfaction de X 4 Y est d tect e aussit t que les domaines de X et Y ne se chevauchent plus Ez est donc moins pr cis que Ey mais bien plus que e partir de l exemple 6 2 nous d rivons E cx dom X C 2 max Y infinity E cy dom Y C 0 min X lt 2 et apr s r criture E3 cx min X E3 cy min Y 2 max Y min X lt 2 2 max Y A max X lt infinity min X 0 A max Y lt min X lt 2 max Y IA IV 2 z puisque cx et cy sont quivalents Es X gt 2 Y E3 cx A E3 cy E3 cx min X gt 2 max Y Nous obtenons donc la m me pr cision que celle fournie par l approximation 2 e Ez c ne contient que des op rations sur les entiers et devient de ce fait beaucoup plus efficace tester que E2 c dans le cas g n ral Ici encore les cas d tectables o Ex c ne peut tre vraie que sous certaines conditions de cl tures peuvent tre optimis s cf remarques pour l approximation 2 e Ez c moins pr cis que Ez c seulement si c contient des op rations de compl men tation du fait de la red finition de M r 6 4 1 Equivalence des conditions suffisantes Dans ce qui suit nous d finissons des r
11. process setof Template Goal Set Read this as Set is the set of all instances of Template such that Goal is satis fied where that set is non empty The term Goal specifies a goal or goals as in ANNEXE I MANUEL D UTILISATION DE WAMCC 241 call Goal Set is a set of terms represented as a list of those terms without du plicates in the standard order for terms see section 1 3 3 If there are no instances of Template such that Goal is satisfied then the predicate fails The variables appearing in the term Template should not appear anywhere else in the clause except within the term Goal Obviously the set to be enumerated should be finite and should be enumerable by Prolog in finite time It is possible for the provable instances to contain variables but in this case the list Set will only provide an imperfect representation of what is in reality an infinite set If there are uninstantiated variables in Goal which do not also appear in Template then a call to this built in predicate may backtrack generating alternative values for Set corresponding to different instantiations of the free variables of Goal It is to cater for such usage that the set Set is constrained to be non empty Two instan tiations are different iff no renaming of variables can make them literally identical Variables occurring in Goal will not be treated as free if they are explicitly bound within Goal by an existential quantifier An exis
12. x A y V z et l ordre z lt y lt z donnent le BDD de la figure 15 Notons que la taille et la forme des BDD d pendent fortement de l ordre des variables choisi car un bon ordre permettra de partager un plus grand nombre de sous expressions De la sorte le nombre des noeuds d un BDD en fonction du nombre de variables de la formule peut varier de lin aire exponentiel CHAPITRE 5 CONTRAINTES BOOL ENNES 110 Figure 15 BDD repr sentant la formule x A y Vz Les BDD ont t utilis s dans de nombreux r solveurs ainsi l unification bool enne 50 du r solveur de CHIP utilise une telle repr sentation des formules bool ennes 14 65 Citons encore le r solveur d Adia 57 sa version am lior e la deuxi me m thode de 59 et la combinaison de wamcc cf section 3 et de Adia 35 Ce dernier syst me consiste en l int gration d un r solveur bool en bas sur les BDD l int rieur d un compilateur Prolog bas sur la WAM Ses performances sont quatre fois meilleures que celles de l unification bool enne de CHIP 35 De tels r solveurs sont efficaces pour des applications telles que la v rification de circuits bool ens mais d s que les probl mes ne sont plus aussi sym triques il y a d gradation des performances car les BDD construits durant le calcul sont extr mement grands Il est de plus co teux de maintenir i e recalculer une forme nor male telle que les BDD chaque fois qu un
13. 1 6U9 10 et de celui de T2 1 2U5 10 Valeur absolue Dans beaucoup de probl mes il est n cessaire de pouvoir raisonner sur des distances donc en termes de valeur absolue ex placements allocation de fr quences A cet effet CHIP CHAPITRE 7 CONTRAINTES COMPLEXES 168 propose une contrainte cabl e distance et 70 d finit une contrainte X Y gt C Celle ci peut tre d finie en clp FD partir de la d finition de X gt Y cf exemple 2 4 comme suit Exemple 7 13 May A AOS X in min Y C infinity 0 max Y C Y in min X C infinity 0 max X C Consid rons le store X in 1 10 Y in 1 10 l ajout de la contrainte x y gt c X Y 8 r duit le domaine de X et de Y a 1 2 9 10 similairement ce qui est pr sent dans 70 7 5 Contraintes d finies par des relations Nous allons nous int resser ici la d finition de contraintes v rifiant des relations d finies en extensions par un ensemble de tuples Consid rons par exemple la relation d finissant la multiplication qualitative entre x et y not e x y L on ne s int resse qu au signe de x et de y qui peut tre positif n gatif ou ind fini Choisissons de coder par 0 par 1 et par 2 La table de multiplication qualitative se pr sente donc comme suit 0 1 0 2 1 1 1 0 1 2 2 2 2 2 2 2 table A table B D finissons alors la contrainte mul_qualit X Y Z telle que X Y
14. ajout d une contrainte c ne puisse se faire que si c est monotone i e tout store S ne contient donc que des contraintes monotones De ce fait le domaine de toute variable X Vy est monotone D finition 2 14 Un store S est consistant ssi il ne contient aucune variable de domaine vide i e VX Va Xs 9 D finition 2 15 Une variable X est instanci e l entier n dans un store S ssi Xs n On dit aussi que X est clos dans S not ground X On tend de mani re vidente cette d finition un domaine et une contrainte 2 3 4 La relation de satisfaction D finissons maintenant la relation de satisfaction au coeur de notre syst me de contraintes D finition 2 16 Un store S satisfait une contrainte c X in r ssi c est vraie dans tout store S plus contraint que S i e SFe ssi VS S E S gt Xg Cre Un store S contredit une contrainte c X in r ssi S satisfait ac i e SH X in r Gr ce cette relation nous pouvons d finir une quivalence entre contraintes permettant d assurer que deux contraintes fournissent les m mes tuples de variables comme solutions D finition 2 17 Deux contraintes c et cz sont quivalentes ssi VS Ska amp Sk cp Proposition 2 1 Si SF c alors SU c amp S CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 23 Preuve montrons la proposition contrapos e Supposons que SU c S du fait que SU c E S on en d duit que SU c IS Autrement dit SY Ysu
15. fail otherwise true These always succeed ANNEXE I MANUEL D UTILISATION DE WAMCC 236 false fail These always fail repeat Generates an infinite sequence of backtracking choices for I A B Generates on backtracking values for I ranging from A to B call Term Term must be instantiated to a term which would be acceptable as the body of a clause The goal call Term is then executed exactly as if that term appeared textually in its place except that any cut occurring in Term only cuts alternatives in the execution of Term halt Status halt Terminates the Prolog process with the status Status halt 0 is a shorthand for halt 0 halt_or_else Program Status halt_or_else Program Same as halt Status if there is a top level else same as call Program abort Stops the current goal and returns under the top level if exists or exits with the status 1 catch Goal Catcher Recovery throw Ball catch 3 calls Goal If this succeeds or fails so does the call to catch 3 If however during the execution of Goal there is a call to throw Ball i e an exception is raised then Ball is copied and the stack is unwound back to the call to catch 3 whereupon the copy of Ball is unified with Catcher If this unification succeeds ANNEXE I MANUEL D UTILISATION DE WAMCC 237 then catch 3 calls the goal Recovery a handler in order to determine the success or failure of catch 3 Otherwise
16. qu une seule fois La repr sentation initiale d un domaine D est toujours une repr sentation Min Maz et devient une repr sentation Sparse aussit t qu un trou appara t dans D ex cause d une CHAPITRE 4 IMPLANTATION DE CLP FD 79 op ration de compl mentation d une union Lorsqu un domaine est devenu Sparse il ne reviendra pas une repr sentation Min Maz Le domaine vide est repr sent avec un min gt max Ceci permet en mode Min Maz d effectuer l intersection op ration la plus utilis e entre D et D sans tester si l un ou l autre des domaines est vide En effet le r sultat obtenu par max min D min D min max D max D retourne un min gt maz dans le cas ou soit D soit D est vide Lorsque un domaine D repr sent en Min Maz passe une repr sentation Sparse certaines valeurs peuvent tre perdues du fait que vector max est bien plus petit que infinity Pour g rer ces pertes influant sur la compl tude des r ponses c1p FD consid re que ce domaine a t extra contraint puisque tout se passe comme si D avait t soumis une contrainte D in O vector_max par le r solveur Un indicateur est alors adjoint tout domaine pour indiquer s il a perdu des valeurs i e s il est extra contraint Cet indicateur est mis jour par toutes les op rations sur les domaines Par exemple l union de deux domaines est extra contraint si au moins l un des deux l est i e
17. setenv VECTORMAX 512 Finally note that bit vectors are not dynamic 1 e all vectors must have the same size 0 vector_max So the use of fd_vector_max 1 is limited to the initial definition of vector sizes and must occur before any constraint J 3 Finite Domain built in predicates constraints J 3 1 The constraint X in r X in R enforces X to belong to one element of the range denoted by R The syntax of X in r is given by the following table ANNEXE J MANUEL D UTILISATION DE CLP FD 258 ld min Y max Y val Y constraint interval range singleton range range parameter indexical domain union intersection complementation range by term addition range by term subtraction range by term multiplication range by term division range by term modulo range by range addition range by range subtraction range by range multiplication range by range division range by range modulo user range function user function argument indexical min indexical max delayed value ct ty o ti to t t ti lt to t1 gt t f a1 0g C user term function term parameter n infinity cty cty cti cta ctix cta cti lt cta ct gt cta J 3 2 Linear arithmetic constraints A linear term is of the for A x Xy A x Xn where each A must be an integer and can be omitted if it is 1 Each Xy i
18. un branchement direct de l assembleur de la machine Du fait que le d coupage en fonctions est obligatoire ces branchements doivent atteindre du code l int rieur d un fonction Le fait de vouloir produire des branchements directs implique une r solution des adresses de branchement statique la compilation plut t que dynamique l ex cution Or le couple form par le compilateur et l diteur de liens sait se charger de cela en ce qui concerne les adresses de fonctions i e de code Le compilateur g n re des instructions avec trous lorsque qu elles r f rencent l adresse d une fonction non d finie dans le source courant L diteur de liens en pr sence de tous CHAPITRE 3 IMPLANTATION DE WAMCC 57 les objets se charge alors de combler les trous en r solvant les adresses La solution con siste ins rer dans l assembleur produit par le compilateur un label en d but de chaque fonction gr ce une directive asm Pour manipuler l adresse d un de ces labels disons x il suffit de faire croire au compilateur que x est une fonction externe Ce qui se fait simplement en d clarant un prototype pour la fonction x et en utilisant le symbole constante x puisqu en C le nom d une fonction repr sente son adresse Le compilateur g n re donc une instruction avec un trou qui sera r solue par l diteur de liens la vue des noms de labels ins r s et ce qu ils soient dans le module
19. une technique appel e consistance d arcs qui propage travers le r seau uniquement les contraintes unaires domaines des variables plut t que la consistance de chemin ou la technique plus g n rale de k consistance qui propage des relations concernant k variables L efficacit de la consistance d arc ainsi que de certaines extensions simplifications dont il sera question dans cette th se a t montr e pour le traitement des quations in quations et dis quations lin aires par exemple ainsi que pour de nombreuses applications industrielles trait es avec le langage CHIP qui integre de telles techniques Il est noter cependant que la consistance d arc ne permet pas d obtenir par elle seule une m thode correcte pour s assurer de la satisfiabilit d un ensemble de contraintes La consistance d arc peut en effet ignorer certaines valeurs inconsistantes des domaines et r pondre qu un ensemble de contraintes est consistant alors qu il ne l est pas Consid rons par exemple 3 variables X Y et Z dont les domaines sont 0 1 et l ensemble de contraintes X Y Y 4 7 7 X En propageant uniquement les domaines des variables 0 1 travers le r seau de contraintes on ne peut d duire que cet ensemble est inconsistant puisque pour chaque contrainte il y a une instanciation possible des variables satisfaisant cette contrainte Chaque contrainte est trait e localement d o encore le nom de pro pagation
20. A amp B pr c demment tudi e cf exemple 7 1 7 2 3 Contrainte de cardinalit La contrainte cardinality L C Cm U 68 69 est vraie ssi parmi les m con traintes C il y en a au moins L et au plus U de vraies Cette contrainte cabl e dans les solveurs bo tes noires peut tre d finie en associant une variable bool enne B la r ussite de chaque contrainte C et en posant m LES B lt N j 0 ce qui peut s encoder par Exemple 7 2 CHAPITRE 7 CONTRAINTES COMPLEXES 156 cardinality L Cs U N in L U card Cs N card 0 card C Cs N B in 0 1 C B 1 C B 0 B 1 gt C B 0 C N M B card Cs M 7 2 4 Contrainte element La contrainte element I E E J X est vraie ssi X Ej o I et X sont des variables DF et E des entiers Ce qui revient encoder les relations V e amp Jini ip pour toutes les occurrences 21 de la valeur e 7 2 5 Contraintes arithm tiques non lin aires Traditionnellement les contraintes non lin aires ne sont pas directement support es par les r solveurs et sont retard es jusqu ce qu elles deviennent lin aires Par exemple la r solution de X xY Z n aura lieu qu partir du moment o X ou Y est clos Toutefois un tel d clenchement tardif diminue les possibilit s d lagage Dans le cas de X x Y Z le probl me provient du fait que X doit tre mis jour chaque modification de Y o
21. Cette mani re d crire une contrainte permet en effet le meilleur lagage Que se passe t il si cette m thodologie n est pas respect e Reconsid rons la contrainte X gt 2 Y pour la d finir comme Exemple 6 4 x gt 2y X Y X in 2 min Y infinity cx Y in 0 max X gt 2 cy donc Mex E3 cx min X II cy Es cy max Y 2xmax Y et gt lt min X lt 2 les 2 formules sont normalis es donc pas gales Ceci n est pas un cas d incompl tude de la m thode car ces deux formules ne sont pas quivalentes comme on peut le v rifier sur le store suivant S X in 9 15 Y in 0 4 puisque Esz cx s est vraie alors que Ez cy s est fausse Ces deux conditions n ont pas la m me pr cision l approximation de E3 cy est plus grande que celle de E3 cx Enfin notons que cet algorithme est incomplet puisque par exemple il ne peut d tecter l quivalence entre les deux formules suivantes Es X in 1 5 6 10 min X gt 1 A max X lt 5 v min X gt 6 A max X lt 10 Zz lt Ez X in 1 10 min X 1 A max X 10 Chapitre 7 Contraintes complexes Dans ce chapitre nous tudierons comment peuvent tre d finies certaines contraintes de haut niveau Cela nous amenera parfois a d finir certaines extensions au systeme pr sent jusqu alors 7 1 Contraintes arithm tiques lin aires D finition 7 1 Une contrainte arithm tique lin aire est une expression E F o E
22. IMPLANTATION DE CLP FD Informations de dependances a Informations sur le domaine Chain_Val Chain_Dom Chain_Min_Max Chain_Max Chain_Min Chains_Mask Chains_Stamp Vector Max Min Extra_Cstr variable DF 82 Listes de contraintes dependant de la variable Masque listes non vides Estampille pour trail Domaine Nombre d elements du domaine Estampille pour trail Figure 10 repr sentation interne d une variable DF Contraintes X in r Ptr sur code Ptr sur var Environnement Environnement pour evaluer r code calculant r puis reduisant X Environnements ptr sur var DF ou valeur entiere ou ptr sur domaine Argument 0 Bool contrainte eval r Tell X r Contraintes dependant de la variable Variables DF Info chainages Info domaine Figure 11 structures de donn es pour les contraintes CHAPITRE 4 IMPLANTATION DE CLP FD 83 Registres En vue de g rer les diff rentes structures de donn es pr sent es ci dessus les registres suivants sont n cessaires CC Constraint Cont pointeur de continuation apr s contrainte STAMP Stamp compteur d estampilles des points de choix BP Base Pointer pointeur de d but de la file de propagation TP Top Pointer pointeur de fin de la file de propagation AF Argument Frame pointeur d environnement courant CF Constraint Frame pointeur de contrainte courante T i Terms banc de registres
23. INRIA Rocquencourt ChLoE Project Name cars pl Title car sequencing problem Original Source Dincbas Simonis and Van Hentenryck Adapted by Daniel Diaz INRIA France Date September 1992 Car sequencing problem with 10 cars Solution fe 1 2 6 3 5 4 4 5 3 6 F4 1 3 6 2 5 4 3 5 4 6 11 8 6 2 6 4 5 3 4 5 5 4 3 5 4 6 2 6 3 1 6 3 5 4 4 5 3 6 2 1 eo 6 4 5 3 4 5 2 6 3 1 JR cars X fd_vector_max 6 X X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 Y 011 012 013 014 015 021 022 023 024 025 031 032 033 034 035 204 ANNEXE G PROGRAMME CARS 205 041 042 043 044 045 051 052 053 054 055 061 062 063 064 065 071 072 073 074 075 081 082 083 084 085 091 092 093 094 095 0101 0102 0103 0104 0105 L1 1 0 0 0 1 1 L2 0 0 1 1 0 1 L3 1 0 0 0 1 0 L4 1 1 0 1 0 0 L5 0 0 1 0 0 0 domain Y 0 1 domain X 1 6 atmost 1 X 1 atmost 1 X 2 atmost 2 X 3 atmost 2 X 4 atmost 2 X 5 atmost 2 X 6 element X1 L1 011 element X1 L2 012 element X1 L3 013 element X1 L4 014 element X1 L5 015 element X2 L1 021 element X2 L2 022 element X2 L3 023 element X2 L4 024 element X2 L5 025 element X3 L1 031 element X3 L2 032 element X3 L3 033 element X3 L4 034 element X3 L5 035 ANNEXE G PROGRAMME CARS 206 element X4 L1 041 element X4 L2 042 element X
24. In Constraint Logic Programming Selected Research A Colmerauer and F Benhamou Eds MIT Press 1993 C S Mellish An alternative to Structure Sharing in Logic Programming edited by K L Clark and S A Tarnlund Academic Press pp99 106 1982 B A Nadel Constraint Satisfaction Algorithms Computational Intelligence 5 1989 pp 188 224 W J Older and F Benhamou Programming in clp BNR In Position Papers of 1st PPCP Newport Rhode Island 1993 L M Pereira and A Porto Intelligent backtracking and sidetracking in horn clause programs Technical Report CIUNL 2 79 Universitade Nova de Lisboa 1979 A Rauzy L Evaluation S mantique en Calcul Propositionnel PhD thesis Universit Aix Marseille IT Marseille France January 1989 A Rauzy Adia Technical Report LaBRI Universit Bordeaux I 1991 A Rauzy Using Enumerative Methods for Boolean Unification In Constraint Logic Programming Selected Research A Colmerauer and F Benhamou Eds MIT Press 1993 A Rauzy Some Practical Results on the SAT Problem Draft 1993 BIBLIOGRAPHIE 269 60 61 62 63 64 65 69 70 71 72 V A Saraswat Concurrent Constraint Programming Languages PhD thesis Research Report CMU CS 89 108 Carnegie Mellon University 1989 Also revised MIT Press 1993 V A Saraswat Concurrent Constraint Programming MIT Press 1993 T Solla PhD thesis forthcoming THOMSON CSF Fr
25. Les re gistres de la WAM seront allou s si possible dans des registres de la machine cible en CHAPITRE 3 IMPLANTATION DE WAMCC 64 respectant les priorit s indiqu es Ceci est possible avec gcc qui permet d acc der aux registres machines Un registre WAM ne pouvant tre assign un registre machine est allou au tout d but du tas c est aussi le cas pour les registres arguments types de donn es l on d finit ici tous les types de mots lt tiquette valeur gt pour les donn es en heap Plus pr cis ment l on nomme les tiquettes et l on pr cise la nature de la partie valeur qui peut tre un entier sign ou non une adresse dans l une des piles de la WAM ou une adresse dans l espace allou dynamiquement par C i e par malloc piles pour chaque pile l on pr cise son nom sa taille par d faut et son sommet Ces piles sont allou es dans l ordre o elles sont d crites begin regs reg 3 WamCont CP continuation pointer reg 2 WamWordP E last environment pointer reg 2 WamWordP B last choice point pointer reg 1 WamWordP H top of the heap reg 2 WamWordP TR top of the trail reg 9 WamWordP S Unification pointer end regs 2 2 reg 4 WamWordP BC backtrack cut pointer 1 2 9 begin tags tag INT int Integer tag REF stack Reference tag CST malloc Constant tag LST stack List tag STC stack Structure end tags begin stacks stack trail 512 TR Trail stack stack globa
26. Un des ap ports essentiels de cette th se est la d finition d une machine abstraite pour la compilation des contraintes sur les domaines finis Ceci est important pour deux raisons e c est la premi re fois qu un sch ma de compilation pour les contraintes sur les do maines finis est pr sent De plus ce sch ma est la fois simple et efficace et sa granularit est suffisamment fine pour permettre une compr hension ais e et une traduction instantan e dans tout langage y compris l assembleur e cette machine abstraite permet r ellement de comprendre comment implanter un compilateur pour les contraintes sur les domaines finis L on peut comparer cela toutes proportions gard es ce qui s est pass avec la WAM Avant cette machine la compilation de Prolog semblait impossible on a dit de Prolog comme de Lisp que c tait un langage incompilable ou r serv e un cercle restreint d implanteurs Depuis la WAM l criture d un compilateur Prolog ne fait plus figure d pouvan tail et bon nombre d quipes de recherche ont d velopp leur propre syst me Il en est de m me avec la d finition de notre machine abstraite pour la compilation des contraintes sur les domaines finis qui sert aujourd hui de base pour l int gration de contraintes dans des syst mes tels que AKL FD SICS S Janson B Carlson Oz FD au DFKI G Smolka J Wuertz langage successeur de LIFE Simon Fraser Univer
27. X Y true if X Y and X Y Z trueifZ XAY and0 X Y true if0O X AY Le 7X V Y and0 X Y Z true if0O X AY AZ Le nX VAY V AZ ANNEXE J MANUEL D UTILISATION DE CLP FD 263 or X Y 7Z true if Z X V Y or1 X Y true if1 X VY Le X VY ori 7X 71 72 true ifl XVYVZ Le X VY v Z xor X Y Z true if Z X zor Y equiv X 7Y Z trueifZ X Sy equivi X Y trueifl X SY ie X SY J 4 2 Symbolic boolean constraints at_least_one L true if at least one boolean variable of the list L is equal to 1 at_most_one L true if at most one boolean variable of the list L is equal to 1 only_one L true if only one boolean variable of the list L is equal to 1 Bibliographie 1 3 A Aggoun and N Beldiceanu Time Stamps Techniques for the Trailed Data in CLP Systems In Actes du S minaire 1990 Programmation en Logique Tregastel France CNET 1990 A Aggoun and N Beldiceanu Overview of the CHIP Compiler System In Sth International Conference on Logic Programming Paris France MIT Press 1991 Also in Constraint Logic Programming Selected Research A Colmerauer and F Benhamou Eds MIT Press 1993 H Ait Kaci Warren s Abstract Machine A Tutorial Reconstruction Logic Program ming Series MIT Press 1991 F Benhamou Boolean Algorithms in ProloglIl In Constraint Logic Programming Selected Research A Colmerauer and F Benhamou Eds MIT Press
28. Y vient juste d tre valu partir de X et que Cy et Cy sont quivalents Optimisation 1 lors de l ajout de la contrainte c il est inutile de r ex cuter d si c est quivalent c Dans la premi re version de clp FD cf 24 cette optimisation tait implant e Il n y avait pas proprement parler de d tection des contraintes quivalentes mais plut t un imp ratif pour l utilisateur toutes les contraintes d finies dans une m me clause devaient tre quivalentes Du fait que toutes ces contraintes se partageaient le m me environne ment point par AF le test d quivalence revenait tester l adresse des environnements n cessaires aux contraintes impliqu es L conomie r alis e tait de l ordre de 18 de Tell repr sentant 12 du temps d ex cution dans le meilleur des cas quations lin aires mais tait nulle dans le pire des cas ex queens Cette optimisation a t abandonn e dans la version actuelle de clp FD car d une part son gain en temps d ex cution est marginal et d autre part elle est soumise des conditions assez fortes ex inutilisable avec des divisions cause des arrondis et ou difficiles contr ler ex quivalence des contraintes crites par l utilisateur Enfin la file de propagation devait contenir des triplets de la forme lt variable X AF listes r activer gt pour permettre de r activer les listes indiqu es de contraintes d pendant de X en tes
29. Z C est dire que lt X Y Z gt doit v rifier un des tuples de la table B Pour cela introduisons une nouvelle variable T indiquant le num ro du tuple solution Au d part T donc pour domaine 1 9 CHAPITRE 7 CONTRAINTES COMPLEXES 169 Des lors il nous suffit de relier toute colonne 1 de la table B T par une contrainte du type element T 1i V o V est la variable associ e la colonne i i e X Y ou Z Ceci nous conduit la d finition suivante Exemple 7 14 mul qualit X Y Z element T 0 0 0 1 1 1 2 2 2 X element T 0 1 2 0 1 2 0 1 21 Y element T 0 1 2 1 0 2 2 2 2 Z Consid rons le store X in 0 2 Y in 0 2 Z in 0 1 Pajout de la contrainte mul_qualit X Y Z r duira le domaine de X et de Y 0 1 car si le signe de Z est d fini ceux de X et Y le sont aussi Il serait videmment possible d crire de mani re plus optimis e cette contrainte en te nant compte des propri t s de la multiplication qualitative notamment gr ce des Asks Toutefois cette mani re de proc der permet d encoder d clarativement n importe quelle relation quelque soit son arit sans se soucier de ses propri t s Dans c1p FD une con trainte pr d finie relation Tuples Vars est fournie pour permettre l utilisateur de contraindre un tuples de variables Vars prendre comme solution un des tuples fournie sous forme de liste dans Tuples Chapitre 8 R gulation du trafic a rien avec
30. a constraint fd_max X N Unifies N with the current maximum value of the FD variable X fd_dom X L Unifies L with the current domain of the FD variable X L is a list of integers fd_size X N Unifies N with the current size of the domain of the FD variable X fd_extra_cstr X F Unifies F with the current extra constraint flag i e 0 1 of the FD variable X see section J 2 fd_has_vector X Succeeds if X is an FD variable not an integer which uses a bit vector representation fd_use_vector X Enforces the FD variable X to use a bit vector representation ANNEXE J MANUEL D UTILISATION DE CLP FD 261 J 3 5 Enumeration predicates indomain X assignes a consistent value to the FD variable X from the minimum of X trough backtracking all possible values can be enumerated labeling L assignes a value for each FD variable of the list L using indomain 1 labelingff L assignes a value for each FD variable of the list L using the first fail heuristics deleteff X L Rest Unifies X with the FD variable with the smallest domain among the FD variables in the list L Also unifies Rest with the list of remainding FD variables except X J 3 6 Symbolic constraints alldifferent L enforces the constraint X Y for each pair of variable X Y in the list of FD variables L element 71 L V the Ith element of the list of integers L must be equal to the value V I and V are FD va
31. aires avec parfois des pointes 6 et 3 fois plus rapide pour les autres programmes Ces performances sont tr s honn tes au regard de la simplicit du syst me Toutefois l analyse de la d composition des op rations Tell nous r v le qu en moyenne 72 de ces op rations sont inutiles parce que r ussissant sans aucune r duction de domaine cf table 12 Le meilleur cas tant five avec seulement 57 et le pire tant queens 70 ff avec 91 Nous allons donc tudier comment r duire le nombre de Tells inutiles CHIP clp FD facteur Programme 3 2 2 21 acc l ration 0120 vw 135 Po Cao foro omo tsr e20 om oro 1 crypta alpha 61 800 9 290 6 65 queens 16 queens 64 ff queens 70 ff queens 81 ff five 0030 oo 300 cars oro 006 300 Tableau 11 version de base de clp FD versus CHIP temps en sec CHAPITRE 4 IMPLANTATION DE CLP FD 95 Implantation de base D composition des Tells Temps Tell R duc V rif V rif Echec Echec Programme ex c nombre domaine domaine entier entier domaine eme 0000 ww 25 ww 20 1 a eqio oi 15716 ws so o e e20 oi 26 sn 127 se 12 sr alpha 9 290 904936 254349 348261 293866 3810 4630 alpha ff 0 160 15124 2668 7793 4646 14 3 queens 16 64619 21132 834 999 queens 64 ff 4556 1813 2 1 queens 70 ff E 2009404 171859 81159 1747810 5387 3189 queens 81 ff 10633 3004 6 3 five 0010 se
32. aires clp FD est environ 2 fois plus rapide que CHIP avec des pointes 8 et sur les autres problemes le facteur moyen est de l ordre de 4 en faveur de clp FD CHIP clp FD facteur Programme 32 Cow oor a eao oro 2 13 a0 om om 3 30 alpha 61 800 7 770 7 95 fame se omo ono 25 queens 16 crypta queens 64 ff queens 70 ff queens 81 ff five 0030 oom Cars 0 120 003 Cris 27580 0600 Tableau 19 clp FD versus CHIP temps en sec Nous pouvons galement comparer clp FD au compilateur CHIP Celui ci n est pas dis ponible mais 2 pr sente les temps pour le probl me queens et de bridge sur un Sparc 1 les temps ont donc t normalis s par un facteur 1 6 Sur ces exemples clp FD est environ 3 fois plus rapide que le compilateur CHIP cf table 20 queens 16 ff A 0 010 queens 64 ff i 0 130 queens 256 ff oriage 208 060 323 Tableau 20 c1p FD versus compilateur CHIP temps en sec Chapitre 5 Contraintes bool ennes Un exemple int ressant pour montrer la flexibilit de l approche RISC est l tude des contraintes bool ennes celles ci et ou et non pour rester simple sont valeur dans un domaine fini 0 1 mais sont cependant diff rentes des contraintes usuelles sur les DF Il est donc int ressant de voir s il est possible d encoder efficacement ces contraintes en contraintes primitives X in r et de comparer le r solveur bool en ainsi obt
33. arithm tique manipulation de termes test de types contr le gestion de listes op rateurs wamcc offre des extensions non d claratives telles que variables globales affectations destructives backtrackables ou non tableaux e la possibilit d inclure du code C e un top level permettant de charger du code dynamiquement Ce mode interpr t est particulierement pratique en phase de mise au point e un debugger Prolog similaire ceux de Sicstus ou Quintus e un debugger WAM permettant de v rifier modifer les structures de base de la WAM Ceci est tr s utile lorsque la WAM doit tre modifi e tendue e un utilitaire de g n ration de fichiers pour make Le compilateur wamcc traduisant un module Prolog en un source C est enti rement crit en Prolog 3000 lignes Il est d ailleurs auto amorc pour fournir un ex cutable de 400 Ko en moins de 5 minutes En ce qui concerne la librairie de wamcc cf section 3 3 1 elle comprend e les fonctions d pendantes de la machine ex allocation de piles 600 lignes de C e les fonctions d ex cutions des instructions WAM 2500 lignes de C e les fonctions de gestion de table de hash code 500 lignes de C e les fonctions de gestion des atomes des pr dicats et du code dynamique i e assert retract consult 2000 lignes de C traduction de bootstrapped CHAPITRE 3 IMPLANTATION DE WAMCC 68 e les fonctions du debugger
34. backtracking intelligent test d occurrence parall lisme contraintes etc Nous nous proposons d aboutir la d finition de la WAM en partant de la notion d arbre de recherche qui traduit la s mantique op rationnelle d un programme Prolog Cette d marche a pour int r t d introduire les particularit s de la WAM tout au long du cheminement alors qu une pr sentation par num ration du jeu d instructions n cessite autant de digressions le contenu de ce chapitre a t publi e dans 23 24 CHAPITRE 3 IMPLANTATION DE WAMCC 25 pour tenter de les justifier Notons que nous partons tout de suite de l ex cution de Prolog complet inverse de 3 qui introduit plusieurs niveaux de programmes logiques uni quement des faits clos des faits quelconques puis une clause par pr dicat et enfin les pr dicats ind terministes Pour une autre pr sentation de la WAM le lecteur pourra se r f rer 3 3 1 1 La pile locale ou de contr le Le lecteur tant suppos familier avec les concepts de base de Prolog nous nous contente rons de rappeler bri vement la notion d arbre de recherche D finition 3 1 Un tat de recherche est un triplet lt r o b gt o e r est un num ro de clause e o est une substitution sous la forme Xy ty Xn tn e b est une suite d atomes B By D finition 3 2 Un arbre de recherche standard partir du but Q1 Qm est un arbre fini ou
35. current_size is its actual size in Kbytes and env_var_name is the name of the environment variable which is consulted to define the size of this stack You can then re define this variable e g with the Unix setenv command and reexecute the program see also directive main in section 1 1 1 2 5 Makefile Generator bmf_wamcc Utility In order to simplify the overall compilation process it is possible to define makefiles A simple program bmf_wamcc Build Make File provides a way to define automatically makefiles The obtained makefile can be customized if necessary The general syntax of bmf_wamcc is as follows bmf_wamcc option filename Options ANNEXE I MANUEL D UTILISATION DE WAMCC 223 o file choose file as main module default first module P pflags use pflags for the wamcc compiler C cflags use pflags for the w_gcc compiler default O2 L cflags use pflags for the linker default s v verbose mode h display help A filename is a module name possibly suffixed p1 another object file 0 or an archive file a This command creates a makefile main_module mk For instance to create the executable x corresponding to the example given in section 1 1 bmf_wamcc x y z v This creates the makefile x mk The following command then re creates the executable x make f x mk Each makefile generated by bmf_wamcc can re create a profile executable whose name is executable name pp For instanc
36. due to union complementation When this switching occurs some values can be lost since vector _mazx is less than infinity We say that X is extra constrained since X is cons trained by the solver to the domain 0 vector_maz A flag extra_cstr is associated to each FD variable to indicate if some values have been lost and is updated by all operations An extra constrained FD variable is written followed by the symbol When a failure occurs on a variable extra constrained a message Warning Vector too small maybe lost solutions is displayed 1 As soon as a variable uses a sparse representation it will not switch back to an interval representation even if there are no longer holes in its domain ANNEXE J MANUEL D UTILISATION DE CLP FD 257 Example vector_ max 127 Constraint on X Domain of X Lost values Extra Cstr Flag X in 0 512 0 512 0 off X in 0 3 10 512 0 3 10 127 128 512 on X 100 100 0 3 10 100 off In this example when the constraint X in 0 3 10 512 is told some solutions are lost However when constraint X in 0 100 is told no longer values are lost Other example Constraint on X Domain of X Lost values Extra Cstr Flag X in 0 512 0 512 0 off X in 0 3 10 512 0 3 10 127 128 512 on X in 256 300 0 Warning on In this example the constraint X in 256 300 fails due to the lost of 128 512 so a message is displayed onto the terminal The solution would consist in defining
37. finition 2 7 Soit d un domaine et i un entier le domaine associ d i avec est d fini par d i k tqq k k i et k d Enfin d i k t q k 1 3 et k d Notons que le comportement des op rations en cas de d bordement par rapport au do maine 0 infinity n est pas sp cifi et correspond une utilisation erron e de ces op ra tions D finition 2 8 Soit d un domaine une variable domaine sur d est une variable ne pouvant tre instanci e qu une des valeurs de d Nous noterons V4 l ensemble des variables DF 2 3 2 La contrainte X in r syntaxe et intuition Le syst me de contraintes FD est bas sur une unique contrainte d appartenance liant une variable un domaine Nous avons 3 types de donn es syntaxiques les contraintes c les domaines r et les termes arithm tiques t et ct pour les termes constants L ensemble 2du point de vue de l implantation cette valeur d pend de la machine et du param trage du syst me CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 16 des contraintes syntaxiques est nomm Contr celui des domaines syntaxiques DomSyn et celui des termes syntaxiques TermSyn D finition 2 9 Une contrainte est une formule de la forme X in r o X EM etr DomSyn cf syntaze en table 1 intervalle singleton param tre domaine domaine indexical union intersection compl mentation addition poin
38. mais il faut alors tester toutes les piles soit gr ce des instructions sp cialis es ins r es dans le code WAM Dans tous les cas ce contr le est co teux d autant plus que le mat riel des machines r centes contient tout ce qu il faut pour le prendre en charge En effet rappelons que ces machines utilisent la CHAPITRE 3 IMPLANTATION DE WAMCC 63 notion de m moire virtuelle C est dire que le programmeur n a pas s occuper de la taille r elle ni des adresses physiques pour lui la m moire est lin aire de tr s grande taille ex 4 Go sur une machine 32 bits Lorsqu une donn e doit tre lue crite le gestionnaire de m moire d tecte si la page o elle r side est physiquement pr sente en m moire ou non on parle alors de d faut de page Dans ce cas le gestionnaire de m moire la charge apr s avoir si besoin recopi une autre page sur disque Le gestionnaire d clenche un signal d exception lors d un d faut de page alors que celle ci n a pas t allou L id e consiste donc d clencher un tel signal lors du d bordement d une pile Pour cela il suffit que toute pile soit suivie d une page non allou e cf figure 6 Lors du d bordement de la pile la tentative de lecture ou d criture dans cette page d clenchera un signal qui sera captur par une fonction C ayant charge de diagnostiquer quelle pile est fautive et d mettre un message d erreur La m thode la plus simple consiste util
39. me wamcc 34 2 he jeu de benchmarks 2 46 base rss RAM a 3 4 3 wamcc versus des Prolog universitaires 3 4 4 wamcc versus des Prolog professionnels 4 Implantation de clp FD 4 1 4 2 4 3 Extension del WAM Sireci p a as Bo Bae Ee oe ee 4 1 1 Int gration des variables domaine 4 1 2 Nouvelles structures de donn es Alga Jeu d AS TUCAONS 2 dd Me at ek ATA Y o Lell aa ne An ne An CS eel need ek dos Int gration de clp FD dans wamcc Evaluation de clp FD 4 4 gene BR et ah ao EE ee OS 4 3 1 Le jeu de benchmarks e pd A Le B Mali BS 4 3 2 Evaluation de l implantation de base 4 3 3 NN 4 3 4 Evaluation de l implantation finale 5 Contraintes bool ennes 9 1 Un panorama des r solveurs bool ens 5 1 1 M thodes bas es sur la r solution 5 1 2 M thodes bas es sur les diagrammes de d cisions binaires BDD Sige M thodes num ratives y Lee ei sent hee Go aus SR es 5 1 4 Programmation en nombres entiers 0 1 74 74 74 TT 83 89 90 93 93 94 95 103 107 108 108 109 5 1 5 M thodes bas es sur la propagation 112 5 1 6 PLC versus r solveurs d di s 112 5 2 Contraintes bool ennes 4 4 4 4 ee AA A NE 113 5 3 Codag
40. une variable DF 6 du temps d ex cution nb de Tells Temps exc Pire cars 5 6 25 Moyen 34 47 24 Meilleur queens 70 ff 85 94 74 Tableau 15 gain de l optimisation 2 Occurrences multiples de contraintes en propagation La derni re source de r activations inutiles de contraintes vient du fait qu il y a dans la file de propagation plusieurs occurrences d une m me contrainte Nous pouvons distinguer deux sources pour ce ph nomene a raffinements successifs d une m me variable entra nant des occurrences multiples des contraintes d pendant de cette variable b raffinements de variables distinctes dont d pend une m me contrainte entra nant des occurrences multiples de cette contrainte CHAPITRE 4 IMPLANTATION DE CLP FD 101 Du fait que l ordre dans lequel ces contraintes seront r veill es n a pas d importance du point de vue de la correction cela peut conduire des r activations inutiles tout instant il suffit qu au plus une occurrence de chaque contrainte soit en file Optimisation 3 si une contrainte est d j pr sente en file de propagation il est inutile de l y ajouter nouveau Dans la version initiale de clp FD 24 l optimisation 3 tait implant e en datant les mises en file des contraintes ainsi que les ex cutions de contraintes gr ce un mot suppl mentaire dans la repr sentation des contraintes L ex cution d une con
41. 055 gt 025 035 045 055 065 gt 035 045 055 065 075 gt 045 055 065 075 085 gt 055 065 075 085 095 gt 065 075 085 095 0105 RhRRRR RRSNNNNNNR OR R SR gt 2 NNNNNNNNRE 65 RRP pa ops pa redundant constraints 011 021 031 041 051 061 071 081 gt 4 ANNEXE G PROGRAMME CARS 208 011 021 031 041 051 061 gt 3 011 021 031 041 gt 2 011 021 gt 1 012 022 032 042 052 062 072 gt 4 012 022 032 042 gt 2 012 gt 0 013 023 033 043 053 063 073 gt 2 013 023 033 043 gt 1 013 gt 0 014 024 034 044 054 gt 2 015 025 035 045 055 gt 1 labeling X Annexe H Programme bridge PE Benchmark Finite Domain INRIA Rocquencourt ChLoE Project Name bridge pl Title bridge scheduling problem Original Source P Van Hentenryck s book and COSYTEC vers of Overview of a CHIP Compiler Adapted by Daniel Diaz INRIA France Date October 1994 Find a scheduling that minimizes the time to build a 5 segment bridge Solution Optimal End 104 x start 0 0 a1 4 3 a2 2 13 a3 2 7 a4 2 15 a5 2 1 a6 5 38 p1 20 9 p2 13 29 ue 10 0 s1 8 10 s2 4 18 s3 4 29 s4 4 42 s5 4 6 s6 10 46 b1 1 18 b2 1 22 b3 1 33 b4 1 46 b5 1 10 x b6 1 56 ab1 1 19 ab2 1 23 ab3 1 34 ab4 1 47 ab5
42. 1993 H Bennaceur and G Plateau FASTLI An Exact Algorithm for the Constraint Satis faction Problem Application to Logical Inference Research Report LIPN Universit Paris Nord Paris France 1991 H Bennaceur and G Plateau Logical Inference Problem in Variables 0 1 in IFORS 93 Conference Lisboa Portugal 1993 BNR Prolog User s Manual Bell Northern Research Ottawa Canada 1988 A Bockmayr Logic Programming with Pseudo Boolean Constraints Research Report MPI I 91 227 Max Planck Institut Saarbrucken Germany 1991 M Bonnard S Manchon and P Planchon Bilan des tudes de la division AOC sur la r gulation du trafic a rien 1992 264 BIBLIOGRAPHIE 265 10 11 12 13 14 15 16 17 18 19 20 S Manchon D Chemla C Gobier and P Kerlirzin Dossier de sp cifications du Syst me Pr tactique pour Optimiser la R gulation du Trafic a rien SPORT V4 3 1992 M Bruynooghe An Interpreter for Predicate Logic Programs Basic Principles Re search Report cw10 Katholieke Universiteit Leuven Belgium 1976 M Bruynooghe The Memory Management of Prolog Implemantations in Work shop 80 pp12 20 1980 R E Bryant Graph Based Algorithms for Boolean Function Manipulation IEEE Transactions on computers no 35 8 1986 pp 677 691 W B ttner and H Simonis Embedding Boolean Expressions into Logic Program ming Journal of Symbolic Computation
43. 27 a 2 a ol cars oo 28 o 2 swf of o Tableau 12 d composition des Tells dans la version de base 4 3 3 Optimisations Nous allons d terminer les sources des appels inutiles a Tell et dans certains cas d finir des optimisations pour les viter L impact de celles ci sera valu en pourcentage de Tells totaux et inutiles vit s et en pourcentage de temps d ex cution conomis La premi re mesure est int ressante parce que ind pendante de la machine donc g n rale La seconde mesure permet toutefois de se faire une id e de l impact d une optimisation sur le temps de calcul Equivalence de contraintes Le fait d crire plusieurs contraintes X in r pour une m me contrainte de haut niveau a pour cons quence que ces contraintes sont souvent quivalentes et donnent lieu des appels inutiles Consid rons la contrainte X Y 5 x y c X Y 5 cf exemple 2 1 dans le store courant x in 5 15 Y in 0 10 donnant CHAPITRE 4 IMPLANTATION DE CLP FD 96 X in 5 15 Y in 0 10 X in min Y 5 max Y 5 Cx Y in min X 5 max X 5 Cy Que se passe t il lors de l ajout de la contrainte X in 12 100 X est initialis 12 15 donc son min est propag Y via Cy Y in 7 10 Or du fait que le min de Y a t modifi Cy X in 12 15 sera r ex cut inutilement i e le Tell ne modifie pas le domaine de X Evidemment il est inutile d valuer nouveau X partir de Y puisque
44. 32 64 yes g_assign k g_array 3 null g_read k X X g_array null null nul1 yes Example array extension g_assign a g_array 10 20 30 g_read a X X g_array 10 20 30 ANNEXE I MANUEL D UTILISATION DE WAMCC 246 yes g_assign a g_array_extend 5 null g_read a X X g_array 10 20 30 nu11 nu11 yes g_assign a g_array 10 20 30 g_read a X X g_array 10 20 30 yes g_assign a g_array_extend 1 2 3 4 5 6 g_read a X X g_array 10 20 30 4 5 6 yes Example 2 D array definition g assign w g_array 2 g_array 3 g_read w X X g_array g_array 0 0 0 g_array 0 0 0 yes for I 0 1 for J 0 2 K is I 3 J g_assign w I J K fail g_read w X X g_array g_array 0 1 2 g_array 3 4 5 yes g_read w 1 X X g_array 3 4 5 yes Example hybrid array g_assign w g_array 1 2 g_array a b c g_array 2 z 5 g_read w X X g_array 1 2 g_array a b c g_array z z 5 yes g_read w 1 X g_read w 2 1 Y g_read w 3 1 Z X 2 Y b ANNEXE I MANUEL D UTILISATION DE WAMCC 247 yes g_read w 1 2 X Error Illegal array index lt 2 gt for lt w gt 1 3 11 Miscellaneous pragma_c Code inline predicate Inserts at compile time the C code Code in the resulting C file The use of this predicates requires a good knowledge of the underlying Prolog engine stat
45. A e autre occurrence d une variable V si V n est pas dangereuse ou si le but courant n est pas le dernier put_value V A sinon put_unsafe_value V A e constante C put_constant C A CHAPITRE 3 IMPLANTATION DE WAMCC 43 e entier N put_integer N A e liste vide put_nil A e liste non vide put_list A unify_ chargement par recopie du Car unify_ chargement par recopie du Cdr e structure F N put_structure F N A unify_ chargement par recopie du premier sous terme unify_ chargement par recopie du dernier sous terme L instruction put_variable V A initialise V et A avec une variable libre si V est permanente sinon elle lie V et A a une variable libre empil e sur le heap L instruction put_value V A effectue une simple copie de V dans A ce qui peut don ner lieu une optimisation si V est une variable temporaire Dans le cas d une variable permanente du dernier but nous devons tre certain que la copie ne liera pas A a l envi ronnement courant pour pouvoir r cup rer l environnement de fa on s re L instruction put_unsafe_value V A prend en charge les variables dangereuses susceptibles de cr er des r f rences fant mes Cette instruction d r f rence V et teste si le mot obtenu pointe vers l environnement courant i e le mot est lt REF a gt avec a gt E Dans l affirmative il y a globalisation de la variable sinon put_unsafe_value V A copie ce mot
46. CF ld i0 4 00 o0 adresse de X ld 03 4 02 02 adresse de Y ld 03 81 03 03 C ld 02 32 hot oi min Y ld 02 36 02 o2 max Y add o01 03 01 o0o1 min Y C call _Tell_Interval 0 o0 Tell_Interval 00 o01 02 add 02 03 02 02 max Y C delay slot ret retour de 00 rstore g0 00 00 pilogue delay slot Tableau 10 fragment de code assembleur Sparc g n r pour x y c CHAPITRE 4 IMPLANTATION DE CLP FD 93 4 3 Evaluation de clp FD 4 3 1 Le jeu de benchmarks Un ensemble de benckmarks classiques a t utilis pour tester les performances de la version de clp FD e crypta une addition crypt e portant sur 10 variables de domaine initial 0 9 2 de domaine 0 1 3 quations lin aires et 45 dis quations 67 e eq10 un syst me de 10 quations lin aires sur 7 variables de domaine initial 0 10 e eq20 un syst me de 20 quations lin aires sur 7 variables de domaine initial 0 10 e alpha un probl me de chiffrage codage n cessitant 26 variables de domaines ini tiaux 1 26 20 quations et 325 dis quations e queens le tr s c l bre probl me des N reines 67 avec N variables de domaine initial 1 N et 3 N N 1 2 dis quations e five le puzzle des cinq maisons 67 n cessitant 25 variables de domaine intial 1 5 11 quations lin aires 50 dis quations et 3 disjonctions de 2 quations lin aires e cars le probl me du car sequencin
47. Figures 22 and 23 show traffic histograms of UM sector before and after the clp FD process Fig 22 depicts an overload between 10a m and 11a m while Fig 23 has absorbed it Table 41 provides some runtime characteristics the total number of variables is equal to the sum of the number of indomain constraints and of the number of equality constraints clp FD was processed on a pattern containing about 100 days of a year This proves a certain stability with regard to the density of the trafic When no solution is found we decrease the period length and or increase the maximum delay that can be undergone by a flight To conclude this subsection we can underline the fact that dealing only with capacity constraints to make slot allocation has some weaknesses delays are distributed among all flights without any discrimination So if a regulation plan were created in such a way it CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 184 Chart Origins Visualisation FTGF y 00 4 Capa y 00 4 Nb of a c per hour UM DEMAND CAPACITY BAR CHART Capacity Traffic increased by 0 for the center Figure 22 UM traffic before CLP process Chart Origins Visualisation FTGF y 00 4 CAPA y 00 4 Nb of a c per hour UM DEMAND CAPACITY BAR CHART Capacity Traffic increased by 0 for the center Figure 23 UM traffic after CLP process CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 185 period runtime a
48. Modification of the Program 4 44 4 4 4 aoe oe a 239 Rada AUS ute ana Ue TSB do a A 240 1 3 10 Global Variables ai eua o a by AEA eo inf ge a a a 242 ad Miscellaneous e ae ee ety a ee tp Re Odd ng nn 247 LA WWebieoer car ele ae o A ete Se ae a 249 Manuel d utilisation de clp FD 254 JI ntrod ction a A SE oe ee ee ee ee ee A 255 J 2 Finite Domain variables lao rs A Gor Bee AAA AAA A 256 J 3 Finite Domain built in predicates constraints 257 Sad Th constraint X MR EN es o Eo ee a 257 J 3 2 Linear arithmetic constraints 258 J 3 3 Other arithmetic constraints 259 LT Doma IM si ee ae ee pin Ae ah de a oh oh ea 260 J 3 5 Enumeration predicates ica a Se 261 J 3 6 Symbolic constraints AAA e AA as 261 J 3 7 Symbolic constraints dc ds a Be ashe ad 262 J 4 Boolean built in predicates constraints 262 J 4 1 Basic boolean constraints ir a Fe ee Pee ee eee 262 J 4 2 Symbolic boolean constraints 263 Table des tableaux 10 11 12 13 14 15 16 17 syntaxe de la contrainte X in PA A A ma OS 16 s mantique d notationnelle de op ration Tell 20 exemple decode WAM 2 a r TA REA A AL ie A AE A 48 fichier de description de la WAM 64 performances de wamcc temps en sec 68 wamcc versus autres Prolog universitaires temps en sec
49. Or ce n est l qu un cas particulier de YS S E S gt Xg Crog ie St c du fait que SU X n CS O Soit D la cl ture par quantification existentielle et pour la conjonction de Contr Par souci de simplification on notera aussi F la cl ture par les r gles d inf rences de notre relation de satisfaction Le th or me 2 1 nous indique que FD D est un syst me de contraintes Chapitre 3 Implantation de wamcc Dans cette partie nous d taillerons l implantation de wamcc le langage Prolog de base sur lequel est construit clp FD La solution propos e tant bas e sur l incontournable machine abstraite de Warren WAM nous commencerons par son tude Apr s quoi nous nous poserons le probl me de l ex cution du code abstrait obtenu pour aboutir la solution retenue traduire Prolog vers C Une analyse des performances terminera ce chapitre 3 1 La machine abstraite de Warren Jusqu en 1983 la compilation de Prolog semblait r serv e quelques illumin s et pour le commun des implanteurs il y avait contradiction dans les termes Prolog et compilation La r v lation de la WAM 75 r ellement rendu abordable la compilation de Prolog par tous Et bien que certaines alternatives plus optimis es aient t propos es ex la BAM 73 la WAM reste un standard gr ce sa simplicit et son efficacit Le succ s de la WAM tient galement au fait que sa conception permet des extensions ais es ex
50. Prolog d terministe 3 2 4 Le probl me du contr le de Prolog en C Dans cette section nous nous concentrerons uniquement sur la mani re dont Janus KL1 Erlang et wamcc g rent le contr le En effet celui ci est le point crucial de la traduction vers C du fait que le code WAM est un code plat o tous les transferts de contr le sont effectu s l aide de simples branchements Ce contr le a du mal s accommoder de celui de C pr vu au contraire pour supporter les structures de haut niveau que constituent blocs et fonctions et paradoxalement peu fourni pour supporter du contr le de bas niveau Ainsi le probl me majeur consiste trouver un moyen efficace de traduire les branchements WAM Notre pr sentation se basera sur l exemple suivant p allocate PE p q r call q deallocate execute r q proceed q Ce petit exemple met en oeuvre toutes les instructions de contr le de Prolog dans le cas d terministe Notamment la mani re de traduire les instructions call et execute fera appara tre comment sont g r s les branchements directs i e branchement un label pr cis alors que la traduction de l instruction proceed devra r soudre le probl me des branchements indirects i e branchement l adresse point e par une variable le registre CP en l occurrence 5classiquement appel s commited choice languages CHAPITRE 3 IMPLANTATION DE WAMCC 52 3 2 5 La m thode Janus Dans m
51. Prolog n utilisant pas les variables DF Ainsi un mot de la forme lt FDV valeur gt n est jamais dissoci des autres informations associ es une variable DF domaine liste de d pendances La partie valeur d un mot lt FDV valeur gt est alors inutile ou peut tre utilis e pour encoder une des informations de la variable Dans notre cas nous utilisons une auto r f rence pour permettre la vue du seul mot lt FDV a gt de conna tre l adresse a de la variable DF concern e Ceci permet de r utiliser les fonctions de manipulation des donn es Prolog ex affichage qui acceptent en entr e un mot tiquet Il suffit alors d tendre ces fonctions en prenant en compte le cas tiquette FDV En aucun cas il n est n cessaire d ajouter un argument aux fonctions pour passer l adresse des variables DF lau contraire de ce qui se passe pour les structures o il y peut y avoir plusieurs mots lt STC a gt pointant la m me structure qui se trouve alors s par e de ces mots et r side l adresse a CHAPITRE 4 IMPLANTATION DE CLP FD 76 Unification Du fait de la compatibilit entre variables Prolog variables DF et entiers une variable DF X peut tre unifi e avec e une variable Prolog Y Y est simplement li e X e un entier n ceci revient ajouter la contrainte X in n n e une autre variables DF Y ceci revient ajouter les contraintes X in dom Y et Y in dom X Sauvegarde et restauration de
52. Prolog se caract rise par une tr s grande vitesse de compilation et par la grande vari t de pr d finis dont il dispose Il est ce jour l un des Prolog amateurs les plus utilis s La table 6 montre les temps d ex cution des diff rents syst mes ainsi que les facteurs d acc l ration de wamcc par rapport aux autres syst mes Dans cette table over flow signifie que trop de m moire est requise et ce malgr nos tentatives d accro tre les tailles de piles En moyenne wamcc est 2 fois plus efficace que BinProlog 2 7 fois plus rapide que XSB Prolog et 5 6 fois plus rapide que SWI Prolog sans tenir compte de tak sur lequel SWI Prolog est extr mement inefficace 3 4 4 wamcc versus des Prolog professionnels Ici nous comparerons wamcc des Prolog ayant t d velopp s par plusieurs personnes sur plusieurs ann es Toutes ces implantations reposent sur des techniques d optimisations unanimement reconnues au sein de la communaut Prolog comme le prouve le grand nombre d articles ICLP ILPS les pr sentant Notre comparaison fera intervenir Sicstus ce Prolog est tr s populaire pour avoir t une des premi res implantations efficaces et de co t tres faible Il est m me devenu une r f rence syst matique en mati re d efficacit Les versions initiales ne comprenaient qu un mulateur crit en C Aujourd hui Sicstus a t remani et comprend en plus de l mulateur un mode natif sur certai
53. The clp FD implementation of the small problem presented in 4 3 is provided in table 40 The solution found by clp FD to this problem is S1 V1 2 V2 3 V3 6 V4 4 CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 182 Solution V1 V2 V3 V4 V1 in 2 12 V2 in 3 13 V3 in 6 16 V4 in 2 12 v 11 Vi 1 v 21 V2 V 41 V4 V 12 V1 2 V 22 V2 2 V 32 V3 v 42 V4 3 atmost_interval 2 V 11 V 21 V 41 2 3 atmost_interval 3 V 12 V 22 V 32 V 42 3 5 labeling V1 V2 V3 V4 Tableau 40 implementation of our small problem with c1p FD constraints Flights 1 2 and 3 can take off at their requested time while flight 4 undergoes a 2 unit of time delay 8 4 4 Optimization Trials Heuristics To solve real cases we needed to implement some heuristics that we describe in the three points here below 1 labeling strategy clp FD labeling works on a list of variables L and backtracks first on the last element of L then on the last but one and so on This has a shortcoming a solution of average delay d can be labeled before a solution of average delay d with dy lt d In our small example the solution S2 V1 2 V2 4 V3 6 V4 2 is not found whereas it is better in term of average delay than S1 For that reason we have implemented a new labeling strategy that enumerates solutions in the order of increasing average delays The solution S2 is encountered by suc
54. X s C A r s gt dom X s rs Ce qui se d duit triviale ment de la proposition pr c dente O D finition 6 7 Soit une contrainte c X in r Ex c est la formule syntarique d finie comme Es c dom X C Ar Remarques CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 141 cette strat gie peut tre vue comme un full lookahead pour la d tection partir de l exemple 6 1 nous d rivons Exlex dom X C dom Y dom X N dom Y Ex cy dom Y C dom X dom Y N dom X ao QAQ puisque cx et cy sont quivalents E X Y Excx A Ex cy Exlcx dom X N dom Y La satisfaction de X Y est donc d tect e aussit t que les domaines de X et Y sont disjoints Ey est donc bien plus pr cis que partir de l exemple 6 2 nous d rivons Ey cx dom X C 2 max Y infinity min X gt 2 max Y Ey cy dom Y C 0 min X lt 2 max Y lt min X lt 2 puisque cy et cy sont quivalents E X gt 2x Y Exlcx A Ey cy Exlex min X gt 2 max Y La satisfaction de X gt 2 x Y sera d tect e aussit t que tout le domaine de X sera plus grand droite que le domaine 2 x Y Ici aussi Ez est donc bien plus pr cis que E l avantage de cette approximation est la pr cision de la d tection Son inconv nient majeur est le co t des op rations sur les domaines Par exemple la d tection de X Y demande une intersection chaque modification du doma
55. auto r f rence i e si a est son adresse son contenu est lt REF a gt Notons que l affectation d un tel mot un registre cr e un lien du registre vers la variable On appelle d r f renciation l op ration consistant suivre un chainage de variables li es jusqu ce qu une variable libre ou un terme diff rent d une variable soit rencontr constante la partie valeur pointe dans une table de hash code stockant toutes les cons tantes ramenant ainsi la comparaison de deux constantes la comparaison de deux entiers entier la partie valeur code l entier liste vide elle est simplement repr sent e par la constante particuli re liste non vide la partie valeur pointe une cellule du tas contenant le Car la suivante contenant le Cdr structure la partie valeur pointe une cellule du tas contenant le foncteur une adresse dans la table de hash code des constantes et l arit nombre n de sous termes Cons cutivement ce mot viennent les n mots tiquet s associ s aux sous termes Une des principales caract ristiques de la WAM est due au choix de repr sentation des termes compos s i e listes structures par recopie de structure En effet un terme est trait diff remment suivant qu il est d compos acc s une instance d j existante ou construit cr ation d une nouvelle instance partir d un mod le Pour une liaison en d composition CHAPITRE 3 IMPLANTATION DE WAM
56. base du tableau dans un registre R puis par une instruction d acc s l l ment appropri Si plusieurs acc s au m me tableau ont lieu ex comme c est le cas dans label_p et label_p1 le compilateur peut d cider de calculer une seule fois le chargement de l adresse de base dans le registre R et de placer cette instruction en d but de fonction o il suppose qu elle sera toujours ex cut e Le pro bl me surviendra lorsque par la suite un branchement au milieu du code entra nera l utilisation du registre R non encore initialis Notons que de tels d placements de code sont courants et permettent d optimiser le pipe line des processeurs RISC qui est l origine des bonnes performances de ces processeurs 3 2 8 La m thode wamcc Les trois solutions propos es jusqu ici ont ceci en commun qu elles se comportent similaire ment en pr sence d un seul module donnant alors lieu une seule norme fonction que le compilateur C a du mal compiler De plus l appel extra modules quand il est possible est plus co teux que l appel intra modules A nsi la mani re de d couper une application en modules influence t elle non seulement les temps de compilations mais galement les temps d ex cutions et ce bien videmment de mani re inversement proportionnelle D s la seconde version de notre langage notre objectif a t de r ussir ce qu un branche ment direct WAM donne lieu en fin de compte
57. cette raison que l on parle d indexation deux niveaux Des indexations un seul niveau sont videmment possibles mais occupent plus de place Ces niveaux proviennent du fait qu un premier argument de t te de clause qui est une variable n est pas discriminant pour l indexation e Niveau 1 Les clauses C4 Cn sont clat es en groupes Go Gm tels que chaque groupe G ne contienne qu une clause dont le premier argument est une variable a ou que des clauses dont le premier argument n est pas une variable b Le code suivant est alors g n r sim 0 lt code pour Go gt sinon try_me_else L lt code pour Go gt Li retry_me_else L lt code pour Gi gt CHAPITRE 3 IMPLANTATION DE WAMCC 46 LEE trust _me_else_fail lt code pour Gm gt L instruction try me else Leise a la charge de la cr ation d un point de choix dans lequel elle d signe comme alternative le code d adresse Lose L instruction retry_me_else L y a pour r le de restaurer les registres de base et de mettre jour le point de choix en pr cisant que la nouvelle alternative est Lose Enfin l instruction trust _me_else_fail restaure les registres de base et supprime le point de choix Pour ces trois instructions le contr le se poursuit par l instruction suivante du code e Niveau 2 Pour un groupe G du type a le lt code pour G gt ne contient que le code de son unique clause Pour un groupe de type b il cont
58. conjonction resp une disjonction DIS remplace une op ration sur l ensemble du domaine par une op ration sur les bornes et INC remplace une inclusion par une conjonction O CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 144 Proposition 6 7 correction de la r criture E c est quivalent sa forme simplifi e E3 c Preuve ce qui est assur du fait que toute r gle remplace une partie gauche par une partie droite quivalente O Exemple 6 3 Soit c X in dom Y A E c min X max X ZN c X in min Y max Y min Y max Y O min Y 1 max Y 1 infinity 0 min Y 1 V gt com min X max X zy min X max X min X max X max Y 1 infinity gt inc min X gt 0 A max X lt min Y 1 v min X max X C max Y 1 infinity IN IN IN IA gt inc min X gt 0 A max X lt min Y 1 v min X gt max Y 1 A max X lt infinity Remarques e cette strat gie peut tre vue comme un partial lookahead pour la d tection e partir de l exemple 6 1 nous d rivons E cx min X max X C min Y max Y E cy min Y max Y C min X max X apr s simplification par r criture cf exemple 6 3 E3 cx min X gt 0 A max X lt min Y 1 V min X gt max Y 1 A max X lt infinity E3 cy min Y gt 0 A max Y lt min X 1 v min gt max X 1 A max Y lt infinity qui se simplifie en F3 cx max X Es cy max Y
59. contains some of the elements of List last List Last is true when Last is the last element in List length List Length If List is instantiated to a list of determinate length then Length will be unified with this length If List is of indeterminate length and Length is instantiated to an integer then List will be unified with a list of length Length The list elements are unique variables If Length is unbound then Length will be unified with all possible lengths of List nth N List Element nth 3 is true when Element is the Nth element of List The first element is number 1 max_list ListOfNumbers Max is true when Max is the largest of the elements in ListOfNumbers min_list ListOfNumbers Min is true when Min is the smallest of the numbers in the list ListOfNumbers sum_list ListOfNumbers Sum is true when Sum is the result of adding the ListOfNumbers together 1 3 7 Operators op Precedence Type Name Declares the atom Name to be an operator of the stated Type and Precedence Name may also be a list of atoms in which case all of them are declared to be operators If Precedence is 0 then the operator properties of Name if any are cancelled ANNEXE I MANUEL D UTILISATION DE WAMCC 239 1 3 8 Modification of the Program wamcc allows for dynamic code i e code which can be considered as data This allows the user to add and retract clauses dynamically and to consult programs which is very usef
60. courant ou non Ainsi le co t de l appel extra modules est gal celui de l appel intra modules Tout ceci conduit la structure suivante void label_p prototypes void label_p1 void label_q void label_r define Direct_Goto lab lab define Indirect_Goto p_lab p_lab void fct p p q r asm label_p push CP allocate CP label_p1 call q Direct_Goto label_q void fct_p1 asm label_p1 pop CP deallocate Direct_Goto label_r execute r void fct_q q asm label_q Indirect_Goto CP proceed CHAPITRE 3 IMPLANTATION DE WAMCC 58 Deux macros permettent d effectuer les branchements directs et indirects Le traitement effectu par celles ci d pend de l architecture Par exemple sur une machine RISC Direct _Goto lab invoque simplement la fonction qui aurait pour nom lab Indirect_Goto p_lab invoque simplement la fonction qui aurait pour adresse la valeur de p_lab En effet sur une machine RISC ex Sparc MIPS R3000 l instruction d appel de fonc tion transf re le contr le l adresse indiqu e comme un branchement et initialise le registre de continuation du processeur pour le retour Du fait de l architecture cette ins truction s ex cute aussi rapidement qu un simple branchement Comme elle n empile rien nous pouvons l utiliser pour effectuer un branchement Le fait de proc der ainsi vite
61. d un environnement ant rieur l environnement courant engendrant ainsi un nouveau probl me lors du backtracking si cet environnement est galement ant rieur celui du dernier point de choix il faudra d faire ces liaisons pour pouvoir relancer avec les m mes donn es le calcul sur une autre alternative Sur la figure 1 nous pouvons remarquer au sujet de la liaison de A avec O branche de gauche du point de choix que le fait d crire cette liaison cet endroit et non pas l tat racine o appara t la variable indique bien que lors du backtracking nous voulons oublier cette liaison la meilleure preuve tant que dans la branche droite A est li s X3 La solution pour remettre l tat initial non li de telles variables est d utiliser une autre pile dite pile de restauration ou trail Lorsqu une variable ant rieure au dernier point de choix doit tre li e nous empilons sa r f rence Ainsi condition de m moriser le sommet de cette pile dans les points de choix il suffit lors du backtracking de remettre l tat libre toutes les variables r f renc es dans la trail entre le sommet actuel et celui enregistr dans le dernier point de choix La figure 1 nous montre galement que lorsque nous sommes en pr sence de deux variables rien n indique comment orienter la substitution est ce X Y ou X Y Nous pouvons toutefois remarquer que dans ce cas une des variabl
62. du pr dicat d adresse p_lab Cette fonction commence par cr er un point de choix pour y stocker l adresse o se brancher en cas d chec Label_Fail Le pointeur CP indiquant quel code doit tre ex cut apr s la r ussite du pr dicat appel est initialis adresse Label_Success Enfin un setjmp est effectu pour faire une copie de tous les registres de la machine permettant par la suite leurs restaurations et la reprise du calcul l instruction suivant le setjmp Apr s cette sauvegarde la fonction Call_Next est appel e Le role de celle ci est de r server suffisamment d espace de travail dans la pile C pour les possibles variables locales cf d claration du tableau t Le controle est alors donn au pr dicat 4 appeler Ce dernier s ex cute comme indiqu pr c demment En cas de r ussite resp d chec le contr le est transmis au code d adresse Label_Success resp Label_Fail qui se contente de retourner dans la fonction Call_Prolog gr ce un longjmp dont le second param tre indique la r ussite avec la valeur 2 resp l chec avec la valeur 3 CHAPITRE 3 IMPLANTATION DE WAMCC 61 3 3 Caract ristiques de wamcc 3 3 1 Processus de compilation executable SS Figure 5 processus de compilation Pour compiler une application les l ments suivants sont n cessaires e le compilateur wamcc qui partir d un programme module Prolog g n re le fichier source C qui lui est associ Ce compil
63. e il est priv sauf si ce pr dicat a t d clar comme tant public auquel cas il est visible dans tous les autres modules e un pr dicat public peut tre localement red fini dans un module e parmi tous les modules composant une application l un d entre eux doit tre d clar comme tant le module principal Ces caract ristiques sont celles de la plupart des Prolog qui g rent les modules et sem blent correspondre avec ce que d finira la future norme ISO Il est remarquer que ces caract ristiques s accommodent tres bien de la compilation vers C puisque C a des r gles de visibilit similaire en ce qui concerne les fonctions publiques ou priv es et les donn es dynamiques visibles par tous 3 4 Evaluation de wamcc Dans tout ce qui suit les tailles de programmes sources sont indiqu es en nombre de lignes lignes vides et commentaires compris les tailles d objets et d ex cutables en Ko tables des symboles non incluses et les temps d ex cution en secondes temps syst me non inclus mesur s sur un Spare 2 28 5 Mips CHAPITRE 3 IMPLANTATION DE WAMCC 67 3 4 1 Les fonctionnalit s du syst me wamcc Du point de vue de l utilisateur wamcc offre les facilit s suivantes e un compilateur Prolog vers C e une gestion de la modularit permettant le d veloppement d applications impor tantes e un ensemble de pr dicats pr d finis En plus des pr dicats classiques entr es sorties
64. est la valeur maximum de X et Z Cette contrainte peut tre exprim e comme Exemple 7 11 max x y z X Y Z Z in min X infinity Z in min Y infinity Z in dom X dom Y Les deux premi res contraintes assurent que Z n est jamais plus petit que X ou que Y et la derniere contrainte assure que Z vaut l une ou l autre de ces valeur Une telle contrainte CHAPITRE 7 CONTRAINTES COMPLEXES 167 dans le store x in 5 10 Y in 7 11 Z in 1 12 reduira le domaine de Z 7 11 Ordonnancement disjonctif Dans les probl mes d ordonnancement avec ressources partag es il est habituel d imposer que deux t ches utilisant une m me ressource ne puissent pas se d rouler ensemble i e l une doit s ex cuter strictement avant lautre Soit une t che 1 dont la date de d but est T1 et de dur e D1 et une t che 2 de date T2 et de dur e D2 La contrainte de non chevauchement se traduira par T1 D1 lt TIN T2 D2 lt T1 Ce qui se traduit dans le syst me de contraintes FD par Ti in 0 max T2 D1 A T2 in min T1 D1 infinity V T2 in 0 max T1 D2 A Ti in min T2 D2 infinity Ceci peut alors tre d fini en clp FD comme Exemple 7 12 no_overlap T1 D1 T2 D2 Ti in 0 max T2 D1 min T2 D2 infinity T2 in 0 max T1 D2 min T1 D1 infinity Consid rons l ajout de la contrainte no_overlap T1 4 T2 8 dans le store Ti in 1 10 T2 in 1 10 entra nant alors la r duction du domaine de T1
65. est une extension la WAM permettant de prendre en compte la coupure 1 0 Nous ne d taillerons pas la gestion de la coupure du fait que wamcc traite celle ci de mani re classique cf si besoin 3 15 Les registres arguments not s A i servent d interface pour les donn es entre l appelant et l appel Ces registres sont charg s par l appelant et sont unifi s avec la t te de clause par l appel ce qui a pour effet de charger son environnement les variables de la clause re oivent en effet leurs valeurs gr ce l unification Si celle ci r ussit la clause est uti lisable pour chacun des pr dicats du corps les registres sont charg s avec les arguments appropri s et le contr le est transf r au pr dicat concern S il est possible de d tecter les variables telles qu entre leur premi re et leur derni re occurrence aucun appel un pr di cat ne sera fait alors celles ci peuvent tre g r es directement dans les registres plut t que dans l environnement De telles variables sont qualifi es de temporaires not es X i par opposition aux variables g r es au travers de l environnement qui sont dites permanentes not es Y j D finition 3 3 Une variable temporaire est une variable n apparaissant que dans un seul but la t te et le premier but ne comptant que pour un Une variable est permanente si elle n est pas temporaire Bien videmment il n y a aucune diff rence entre les regist
66. finition 2 4 Soit P un programme et G un but de PLC C Un calcul de P partir de G est une s quence possiblement infinie de configurations lt T0 00 gt gt lt I130 gt gt lt DTn3 On gt o lt To Oo gt est lt G gt et o lt Gir O41 gt se d rive de lt G 0 gt comme suit Supposons G de la forme po Xo pr X1 pr Xg on a lest ce un but enviable CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 14 e soit po Xo P c est dire que po est un pr dicat logique Dans ce cas s il existe une clause avec un pr dicat de t te po dans P soit po Yo a Y5 In Yn un renommage avec des variables qui n apparaissent pas dans lt T 0 gt de cette clause Alors Tj est gal a Y 2 0 Un DA De Xe et 0 11 est gal 0 U A Xi Yo 1 o m est Varit de po i 1 e soit po Xo D c est dire que po est une contrainte Alors si po Xo est consistant avec 0 c est dire formellement 0 U po Xo Y faux on rajoute cette contrainte dans 0 pour obtenir une nouvelle configuration avec Diga gal pr X1 Pe Xk et 0i41 gal 0 U po Xo Un tel calcul peut s il termine finir dans une configuration de la forme lt 6 gt auquel cas on a un succ s et 0 est l ensemble de contraintes r ponse ou dans une configuration lt T 0 gt avec T non vide qui repr sente alors un chec du calcul soit parce que Pex c
67. gles de r criture permettant de normaliser les conditions de satisfaction pour pouvoir d tecter leur quivalence Soit c une contrainte lin aire et Ez c sa condition de satisfaction La normalisation de Ez c se fait en r crivant cette formule en une forme normale disjonctive o chaque terme dans Ez c est remplac par sa forme normale additive Etant donn e la liste de r gles suivantes nous it rons du haut vers le bas sur celle ci appliquant une r gle si elle n a pas encore t utilis e Une CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 146 r gle s applique si sa partie gauche filtre une sous formule de la condition normaliser et la remplace par la partie droite de la r gle Lorsqu une r gle s applique le processus est it r partir du d but de la liste e DNF la forme normale disjonctive d une condition est calcul e par la r gle suivante EME VE EAE V E AE E VES AE gt EF AE V B AE e ANF les r gles suivantes calculent la forme normale additive d un terme t ti t txt teta E ti ty t t1 t t t E 4 e STA les soustractions deviennent des additions tit ota gt tittat els gt ti tot titt t E lt 2 gt e DTM les divisions deviennent des multiplications t lt t gt t gt ti gt toxt tit lt to gt ti lt toxt ti lt to lt t txt lt ta ti gt to gt t txt gt ta D finition 6 10
68. heuristiques vari es 5 1 4 Programmation en nombres entiers 0 1 On a r cemment propos une tout autre m thode qui consiste transformer un probl me de satisfaction de contraintes et en particulier un probl me sur les bool ens en un probl me de r solution d ensemble d in quations lin aires en nombres entiers tel que la satisfiabilit du probl me initial se ram ne un probl me d optimisation dudit ensemble d in quations 43 On pourra utiliser pour ce dernier probl me des m thodes traditionnelles de recherche op rationnelle telles que les m thodes branch and cut de la programmation lin aire en 0 1 Partant de la forme clausale on traduira chaque clause de mani re imm diate Par exemple la clause 11 Vz V3 V 214 se traduira en l in quation lin aire 7 1 22 23 1 2 4 gt 1 i e 21 Lo 3 4 gt 1 On arrivera une solution ou l inconsistance en d rivant de nouvelles in quations ce qui sera fait en liminant variable apr s variable par combinaisons lin aires d in quations d une mani re rappelant effectivement la r solution Une m thode apparent e appara t dans 5 6 o diverses heuristiques sont utilis es dans le choix de la prochaine variable liminer et sont encod es dans une fonction d optimisation qui guidera la recherche vers une solution optimale La m thode consiste donc g n rer une suite de vecteurs X4 Xp telle que chacun des X ait ses l ments dans
69. i e chaque enregistrement de Chain_Bvalue est reconsid r comme suit e cas n 1 la paire Xo Bvalueo est mise en file e cas n 2 supposons que X Xy le cas X X tant similaire la variable X doit tre test e pour d cider si la contrainte peut tre r solue e X est un entier si X Bvalue2 alors la paire Xo Bualueg est mise en file sinon la contrainte est d j r solue D jaR solue e X est une variable bool enne la contrainte ne peut encore tre r solue Sus pend Ainsi chaque contrainte i e paire X Bvalue pr sente en file de propagation sera activ e avec pour issue un des trois possibilit s suivantes e R ducDomaine la variable bool enne X est instanci e Bvalue e V rifEntier X est d j gal Bualue CHAPITRE 5 CONTRAINTES BOOL ENNES 131 e EchecEntier X est un entier diff rent de Bualue i e X 1 Bvalue Quand une contrainte X Bvalue a pour issue R ducDomaine la phase de propagation reconsidere toutes les contraintes d pendant de la liste appropri e de X Chaque contrainte de la liste est soit mise en file pour tre activ e d bouchant sur une des issues d crites ci dessus soit ignor e dans le cas n 2 d e Suspend l autre variable impliqu e n est pas encore instanci e Ce n est que lorsque celle ci le sera et la bonne valeur que la contrainte sera r solue e D jaR solue l autre variable impli
70. infini o chaque noeud est occurrence d un tat de recherche La racine est occurrence de lt 0 Q1 Qm gt Un noeud occurrence de lt r 0 b gt avec b vide est appel feuille succ s Pour tout autre noeud v occurrence de lt r 0 b gt et pour tout v fils de v occurrence de lt r o b gt alors e l application v r est une bijection de l ensemble des noeuds fils de v dans l en semble des num ros de clause r tel que B est unifiable avec la t te de la clause de num ro r Cr e v est une feuille chec s il n y a aucun r e V4 A A une variante de Cr renommage de clause sans variables com munes avec les buts des tats des noeuds anc tres de n CHAPITRE 3 IMPLANTATION DE WAMCC 26 lt 0 p s 0 0 R p A B R gt lt 2 X1 4 0 Y1 0 5 Z21 3 gt R p 0 0 21 p A B s Z1 gt lt 1 X2 0 0 2Z1 p A B s 0 gt lt 1 0 A X3 s 0 s 0 B _ gt lt 2 s X3 A Y34 B 23 0 p X3 B 0 gt succes lt 1 0 3 gt X3 X4 0 0B _ gt A B s 0 R s 0 Succes A s 0 B t 0 R s 0 1 p 0 X X 2 p S X Y s Z p X Y 2 but p s 0 0 R p A B R Figure 1 exemple d arbre de recherche standard e a est l unificateur minimal de B et A et b est le r sultat du remplacement dans o b de B par 0 A A e l ordre des fils de v est l ordre dans r La figure 1 montre un exemple d arbre de recher
71. inverse de ce que fait l algorithme de recopie de structure pour les termes compos s A nsi le chargement d une variable libre dans un registre cr e une r f rence vers cette variable alors que le chargement d une constante consiste r ellement en une recopie de cette constante dans le registre Remarquons que du fait de la repr sentation des variables par des auto r f rences la m me instruction de copie peut tre utilis e aussi bien pour une variable Prolog que pour un autre terme En ce qui concerne le chargement d une variable DF nous avons alors deux possibilit s e utiliser nouveau la m me instruction de copie Dans ce cas il faut consid rer les mots du type lt FDV a gt comme ceux du type lt REF a gt lors des d r f renciations pour atteindre le mot final ventuellement une auto r f rence Ce qui complique donc l algorithme de d r f renciation du fait qu il a d sormais deux types de mots permettant les r f rences i e liaisons e ne pas modifier l algorithme de d r f renciation mais prendre soin de ne pas recopier les variables DF Ainsi lorsqu un mot source M doit tre charg dans un mot desti nation My si M est une variable DF alors My est li M sinon M est physiquement copi dans Ma C est cette deuxi me solution qui a t adopt e dans c1p FD car la d r f renciation est une op ration ex cut e tr s souvent et la premi re solution p naliserait les portions de
72. l ensemble 0 1 et soit une solution optimale satisfaisant les contraintes initiales Une telle m thode peut s av rer tr s efficace surtout pour de gros probl mes et appara t plus adapt e la recherche d une seule solution plut t que de toutes CHAPITRE 5 CONTRAINTES BOOL ENNES 112 5 1 5 M thodes bas es sur la propagation Elles reposent sur des techniques de propagation locale d velopp es pour les domaines finis qui son n es des problemes de satisfaction de contraintes et ont t introduits en PLC par CHIP L id e de base consiste ici g rer un r seau de contraintes entre un ensemble de variables pouvant prendre leurs valeurs dans un ensemble fini de constantes en assurant une consistance locale et en propageant celle ci travers les contraintes reliant les variables En PLC on n implante habituellement que l arc consistance Ainsi la phase de propagation est suivie par une phase dite d num ration o les variables non encore d termin es sont incr mentalement instanci es quelque valeur de leur domaine r duit la phase pr c dente Diverses heuristiques peuvent tre incorpor es ce stade en vue du choix de la prochaine variable instancier Une instanciation peut ainsi mener la r activation de contraintes non encore totalement satisfaites donc la r duction de domaines d autres variables etc On continue jusqu trouver une solution Le langage CHIP par exemple incor
73. locale et seuls les domaines des variables permettent de transmettre quelque information entre les contraintes Notons que dans l exemple pr c dent il faudrait propa ger des relations binaires repr sentant les couples de valeurs possibles pour deux variables li es par une contrainte pour trouver l insatisfiabilit globale de l ensemble de contraintes Cependant un tel sch ma peut s av rer tr s co teux et il n est pas s r que cela soit payant en g n ral Il faut donc en plus de la consistance d arc qui peut r duire les domaines des va riables mais n est pas suffisante une phase d num ration qui instanciera incr mentalement les variables non encore d termin es aux valeurs possibles de leurs domaines Diff rentes heuristiques peuvent tre int gr es lors de cette phase pour tenter de r duire la combi natoire Notons cependant que l instanciation d une variable doit tre suivie d une phase de propagation de cette valeur dans le r seau de contraintes pour possiblement r duire les domaines des autres variables toujours pour diminuer la combinatoire Une solution CHAPITRE 1 INTRODUCTION 4 est trouv e lorsque l on aura instanci toutes les variables et si ce n est pas le cas alors Vinsatisfiabilit aura t prouv e On voit bien que la phase d num ration n cessaire pour s assurer de la correction du calcul et construire une solution est complexe et co teuse C est pourquoi les langages de PL
74. note un ensemble constant Dans ce qui suit CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 138 nous utiliserons galement cette approximation pour les contraintes anti monotones dans un souci d homog n it de la pr cision D finition 6 4 Soit une contrainte c X in r Ei c est la formule syntarique d finie comme Ei c ground r A dom X Cr Remarques e cette strat gie peut tre vue comme un forward checking pour la d tection e en ce qui concerne E c A Cn si nous pouvons d tecter que tous les c sont quivalents il vaut mieux prendre la disjonction des conditions E c puisque chacune est soumise ses propres restrictions de cl ture La conjonction entrainerait bien souvent une d tection uniquement lorsque toutes les variables sont instanci es y compris X dans X in r Toutefois comme nous l avons d j dit il n est pas trivial de d cider de l quivalence entre contraintes dans le cas g n ral e partir de l exemple 6 1 nous d rivons Ei cx ground Y A dom X C dom Y ground Y A Y dom X E cy ground X A dom Y C dom X ground X A X dom Y puisque cy et cy sont quivalents E X Y Er cx V E cy ground Y A Y dom X V ground X A X amp dom Y La satisfaction de X Y est d clench e aussit t que l une des deux variables est instanci e et elle est d tect e aussit t que le domaine de l autre variable ne con
75. ou des deux indicateurs de m me l intersection de deux domaines est extra contraint si les deux le sont i e et des indicateurs etc Ainsi cette information elle aussi est propag e Lorsqu une contrainte sur la variable X choue si le domaine de X est extra contraint le solveur affiche un message pour pr venir que du fait de la taille trop petite du vecteur de bits certaines solutions peuvent tre perdues incompl tude des r ponses L utilisateur peut alors d cider d allouer plus d espace pour les vecteurs Voici un exemple o une variable domaine X a un domaine extra contraint qui redevient normal par la suite on consid re que vector max 127 Contrainte sur X Domaine de X Extra contraint Valeurs perdues X in 0 512 0 512 non 0 X in 0 3 10 512 03 7 10 127 oui 128 512 X in 0 100 0 3 10 100 non Dans cet exemple quand la contrainte X in 0 3 10 512 est ajout e certaines valeurs sont perdues indicateur positionn vrai Toutefois l ajout ult rieur de la contrainte X in 0 100 les limine de toute fa on donc l indicateur retourne a faux L exemple suivant met en vidence une incompl tude du solveur CHAPITRE 4 IMPLANTATION DE CLP FD 80 Contrainte sur X Domaine de X Extra contraint Valeurs perdues X in 0 512 0 512 off 0 X in 0 3 10 512 0 3 10 127 on 128 512 X in 256 300 0 on Attention Dans cet exemple la contrainte X in 256 300 choue du fait de la
76. pendant de X de celles activer lorsque X sera instanci 1 i e contraintes d pendant de X Chain_1 Listes de contraintes Chain_0 dependant de la variable variable booleenne Figure 16 repr sentation interne d une variable bool enne Int ressons nous d sormais la repr sentation des contraintes elles m mes Du fait qu il a au plus 2 litt raux dans le corps d une contrainte ly lt l l il est possible d associer c aux variables dont elle d pend En effet e dan le cas n 1 c ne d pend que d une seule variable i e X et doit tre r solue aussit t que X Bvalue Il est donc commode de coder c enti rement dans un enregistrement de la liste appropri e des contraintes d pendant de X4 e dans le cas n 2 c d pend la fois de Xy et de X Nous pouvons choisir de code c dans la liste appropri e de X ainsi que dans la liste appropri e de X gt Aussit t que X est instanci Bvalue il nous faut v rifier que X l autre variable impliqu e est instanci Bvaluez pour pouvoir r soudre c Pour permettre d effectuer cette v rification il nous faut garder un r f rence de X vers X et r ciproquement de X2 vers Xy Ainsi contrairement ce qui s est pass avec les domaines finis nous n aurons pas une structure particuli re pour enregistrer les contraintes car elles seront enti rement cod es CHAPITRE 5 CONTRAINTES BOOL ENNES 127 dans les listes d
77. plus d allocation explicite de m moire grace un chainage des variables Lorsqu une variable DF est modifi e elle est juste chain e aux autres variables dont certaines contraintes doivent tre r activ es Deux cas peuvent alors se produire e la variable est d ja chain e il suffit de mettre a jour la liste des contraintes a r veiller e la variable n est pas encore chain e il suffit de la cha ner Notons que ce proc d vite des mises en file multiples d une m me variable donc de m mes contraintes cf optimisation 3 Le moyen le plus efficace de tester si une variable est chain e consiste a dater toute mise en file Un registre DATE est alors ajout et est incr ment chaque appel de plus haut niveau d une contrainte i e par fd_call_constraint et non pas chaque appel issu de la propagation Ainsi une variable X est chain e si Date_At_Push X DATE La repr sentation interne d une variable est donc tendue pour prendre en compte les informations de cha nage cf figure 12 Les registres BP et TP sont toujours utilis s mais pointent d sormais la premi re et la derni re variable DF de la file Impact la table 13 pr sente les gains de cette nouvelle organisation cf table 14 pour plus d informations La diminution moyenne de 5 sur le nombre de Tells inutiles est CHAPITRE 4 IMPLANTATION DE CLP FD 98 due aux r ex cutions vit es et sera expliqu e lors de la pr sentation de l optim
78. pouvons consid rer que le corps n est compos que de 1 ou 2 litt raux i e n 1 ou n 2 En effet le cas n 0 revient unifier Xo la valeur Bvalue et le cas n gt 2 peut tre r crit en rempla ant ly lt l l2 l3 l par lo lt l lo b lt b 1 1 1 _1 lt _1 l o chaque J est une nouvelle variable CHAPITRE 5 CONTRAINTES BOOL ENNES 124 bool enne Dans clp B un pr processeur se charge de ces r critures de code Cette d composition nous permet d implanter tres efficacement l op ration Tell pour notre unique primitive ly lt l l puisque seuls les cas n 1 et n 2 doivent tre pris en compte 5 5 2 D finition des contraintes bool ennes Tout comme nous l avons fait pr c demment pour construire c1p B FD nous allons d finir la traduction de chacune des contraintes bool ennes en contraintes primitives de clp B c est dire en contraintes ly lt l1 1 Du fait de l ad quation de cette primitive pour sp cifier des r gles de propagation nous obtenons une transcription directe cf table 29 de la th orie pr sent e en table 21 and X Y Z X z lt Y Y Z X Z or X Y Z X z lt Y Y Z x Zi not X Y Y X Tableau 29 d finition du r solveur bool en de clp B 5 5 3 Extension de la WAM Les principales modifications de la WAM pour prendre en compte les variables bool ennes et la contrainte
79. primitive constraint X in r where X is a finite domain ED variable and r denotes a range which can be not only a constant range e g 1 10 but also an inderical range using e min Y which represents the minimal value of Y in the current store e max Y which represents the maximal value of Y e val Y which represents the value of Y as soon as Y is ground A fragment of the syntax of this simple constraint system is given in table 39 The intuitive meaning of such a constraint is X must belong to r in any store CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 177 The initial domain of an FD variable is 0 and is gradually reduced by X in r cons traints which replace the current domain of X Dx by Dy Dx NM r at each modification of r An inconsistency is detected when D y is empty Obviously such a detection is correct if the range denoted by r can only decrease So there are some monotone restrictions about the constraints 69 To deal with the special case of anti monotone constraints we use the general forward checking propagation mechanism 40 which consists in awaking a cons traint only when its arguments are ground i e with singleton domains In clp FD this is achieved using a new indexical term val X which delays the activation of a constraint in which it occurs until X is ground As shown in the previous table it is possible to define a constraint w r t the min or the max of some other var
80. primitive lo lt l1 l1 sont tr s similaires quoique plus simples ce que nous avons fait pour les domaines finis cf section 4 1 pour plus de d tails Un nouveau type de donn es est ajout les variables bool ennes qui r sideront dans le heap Ces variables seront diff renci es des autres variables gr ce une nouvelle tiquette BLV L ajout de ce nouveau type de variable affecte l g rement la WAM comme suit les preuves de corrections et de compl tudes sont d autant plus triviales et laiss es au soin du lecteur CHAPITRE 5 CONTRAINTES BOOL ENNES 125 Manipulation de donn es Tout comme les variables DF les variable bool ennes ne peuvent tre dupliqu es Pour assurer cela nous utilisons le m me principe que pour les variables domaines Unification Une variable bool enne X peut tre unifi e avec e une variable Prolog Y Y est simplement li e a X e un entier n si n 0 ou n 1 la paire X n est mise en file de propagation et la proc dure de consistance est invoqu e cf section 5 5 4 e une autre variable bool enne Y ceci revient ajouter les contraintes suivantes X lt Y X lt Y Y lt LX et Y lt X Sauvegarde et restauration des domaines Tout comme pour les variables domaines il nous faut pouvoir sauvegarder des valeurs dans la trail ex le passage d une variable bool enne un entier lors de l instanciation de celle ci Ceci est d j support
81. qu un appel intra modules CHAPITRE 3 IMPLANTATION DE WAMCC 53 3 2 6 La m thode KL1 Puisque la solution avec une seule fonction n est pas r alisable il faut d couper le fichier C i e le code WAM en plusieurs fonctions L id e de traduire un pr dicat par une fonction semble alors naturelle La situation est la suivante nous ne d sirons effectuer que des branchements et le d coupage en fonctions est obligatoire D s lors il faut ex cuter des appels de fonctions pour traduire les branchements Toutefois cela ne suffit pas puisque avant la fin d une fonction appel e un autre branchement i e un autre appel de fonction aura lieu ayant pour effet de ne jamais retourner des fonctions invoqu es du point de vue de C il n y a que des appels de fonction imbriqu s Le probl me est alors que les donn es de contr le empil es par C ne sont jamais r cup r es Il est donc n cessaire que chaque fonction termine proprement par une instruction de retour charge une fonction superviseur d effectuer le branchement pr vu i e continuation Ceci conduit au code suivant pour notre exemple fct_supervisor while PC PC O void fct_p p q r push CP allocate CP fct_p1 call q PC fct_q void fct_p1 pop CP deallocate PC fct_r execute r void fct q q PC CP proceed CHAPITRE 3 IMPLANTATION DE WAMCC 54 Notons que le code ci de
82. quand l information doit tre propag e Le Ask est un outil pr cieux pour d finir des contraintes complexes puisqu il permet de sortir du cadre restreint du contr le dirig par les programmes pour obtenir un contr le dirig par les donn es Or ceci est indispensable pour d finir des syst mes de contraintes du type de FD o les donn es ont autant d importance cf propagation Il est vident qu aucun des m canismes de retardement ajout s Prolog ex freeze dif n est assez puissant pour capturer la richesse d un syst me de contraintes et un m canisme plus g n ral est n cessaire Ainsi la d finition d un syst me de contraintes peut tre vue comme une application des CC la premi re D finition 7 3 Soit c une contrainte et A un but l op ration Ask entre c et A not e c A se comporte comme A dans un store S si S E c et r ussit si S F c Ainsi l op ration Ask c A doit tre lue op rationnellement comme si c alors A et a le comportement suivant e S Ec est ex cut dans S e St c le Ask r ussit simplement e SY cet SY c le Ask suspend jusqu ce que le store contienne plus d information pour d cider de la satisfaction ou de la contradiction de c Remarques e cette op ration est aussi appel e implication bloquante 69 du fait qu elle est proche de l implication intuitionniste et qu elle est bloquante tant que le store ne contient pas assez d informati
83. qui est alors cr et initialis juste avant l appel de la premi re d entre elles Ce qui correspond principalement r server suffisamment d espace dans le heap initialiser AF et pour chaque argument stocker son adresse si c est une variable DF ou un param tre domaine ou sa valeur dans le cas d un param tre entier cf repr sentation interne des environnements en section 4 1 2 Dans ce qui suit l criture V elle d note une variable temporaire i e X j ou permanente i e Y j comme en section 3 1 7 fd_set_AF nb_arg V r serve l espace dans le heap pour un environnement de nb_arg arguments AF et la variable V pointent sur cet environnement fd_variable_in_A_frame V lie V une variable DF cr e sur le heap de domaine 0 in finity et range son adresse dans le mot point par AF AF est alors incr ment fd_value_in_A_frame V suivant que la valeur w de la d r f rence de V est e une variable libre similaire fd_variable_in_A_frame w e un entier il est empil sur le tas sous forme de variable DF et son adresse est rang e dans le mot point par AF AF est alors incr ment e une variable DF son adresse est rang e dans le mot point par AF AF est alors incr ment fd_range_parameter_in_A_frame V V doit tre li a une liste d entiers et le domaine correspondant est cr sur le heap L adresse de ce domaine est copi e dans le mot point par AF AF est al
84. r T t mu pointwise div fee ee fd_range_copy R r R r1 ex cute R r R r1 fd_integer T t n ex cute T t n add sub fd_term_ mul _term T t T t1 ex cute T t T t T t1 floor_div ceil_div fd_term_copy T t T t1 ex cute T t lt T t1 2dans clp FD nous avons r utilis l allocateur optimiseur de registres de la WAM CHAPITRE 4 IMPLANTATION DE CLP FD Appel de la fonction Tell 88 Rappelons que la contrainte est point e par CF qui permet galement d atteindre X Donc seul le r sultat de l valuation de r doit tre pr cis par les instructions appelant Tell Dans le but d optimiser les domaines r duits a un intervalle nous distinguerons les cas X in t t2 du cas g n ral X in r La description complete de la fonction Tell sera donn e en section 4 1 4 fd_tell_range R r ajoute la contrainte X in R r quand r n est pas un intervalle fd_tell_interval T tmin T tmax ajoute la contrainte X in T tmin T tmax i e r est un intervalle La table 8 pr sente un fragment du code g n r pour notre exemple typique x y c cf exemple 2 1 fd_set_AF 3 X 3 fd_value_in_A frame X 0 fd_value_in_A frame X 1 fd_term_parameter_in_A_frame X 2 fd_install_constraint inst_1 X 3 fd_call_constraint fd_install_constraint inst_2 X 3 fd_call_constraint proceed fd_create_C_frame cstr_1 0 fd_install_ind_min_max fv 1 fd_proceed fd_in
85. sec et les facteurs d acc l ra tions ou de ralentissements si pr c d su symbole de c1p B par rapport aux autres principaux r solveurs test s pr c demment Une tude de ce tableau nous montre que clp B est environ deux fois plus rapide que clp B FD Ce facteur ne varie que tr s l g rement de 1 5 2 5 suivant les probl mes et traduit le fait que les deux syst mes effectuent les m mes lagages de l arbre de recherche L cart avec les autres r solveurs devient donc encore plus grand cf facteur de plus de 300 avec CHIP sur schur 100 ou de plus de 200 avec les BDD sur queens 8 Dans un moindre degr c1p B est pr s de 10 fois plus rapide que la m thode num rative et la m thode de consistance bool enne 5 6 Conclusion Nous avons tudi dans ce chapitre l impact de la propagation locale pour r soudre des probl mes bool ens Gr ce l approche RISC de c1p FD nous avons pu d finir facilement un r solveur de contraintes bool ennes c1p B FD Celui ci est tr s efficace en moyenne huit fois plus rapide que le meilleur r solveur bool en de CHIP et plusieurs fois plus rapide que les r solveurs bool ens d di s que ceux ci soient bas s sur les BDD l num ration la Davis Putnam la consistance locale bool enne ou des techniques de recherche op ra tionnelle Dans un second temps nous avons con u clp B un r solveur enti rement d di aux bool ens en tudiant les simplificatio
86. statique Un point int ressant remarquer est que les diff rences de performances entre les deux m thodes sont dans des facteurs constants l int rieur de chaque classe de probl me clp B FD est un peu plus lent sur schur d un facteur 1 4 trois fois plus rapide sur pigeon et quatre fois plus rapide sur queens voir la table 26 Nous conjecturons que les deux r solveurs r alisent peu pr s le m me travail d lagage de l espace de recherche bien qu ils soient bas s sur des structures de donn es pour les contraintes tr s diff rentes CHAPITRE 5 CONTRAINTES BOOL ENNES 121 BCons clp B FD BCons O E schur 13 0 070 0 100 1 42 aria omo owo ira pigeon pigeon pigeon pigeon queens queens queens queens queens Tableau 26 c1p B FD versus la consistance locale bool enne temps en sec clp B FD et une m thode de recherche op rationnelle Nous comparons ici avec la m thode FAST93 6 qui est bas e sur des techniques de pro grammation 0 1 de la recherche op rationnelle Les temps sont donn s pour une station Sparc Station 1 18 MIPS donc normalis s avec un facteur 1 1 6 dans la table 27 I faut noter que dans ces tests seule la premi re solution est calcul e car FAST93 ne peut calcu ler toutes les solutions Pour le probl me des pigeons FAST93 a de bonnes performances quand le probl me est insatisfiable m me pour des gros probl mes c est dire quand il y plus d
87. tactical level is sub divided into two processes e slot allocation airline operators affected by the regulation plan have to ask for departure slots two hours before scheduled take off so that each aircraft enters critical sectors at the right time In the French flow management unit slots are allocated according to a first demander first served principle e real time supervision during the pre tactical phase relying on traffic perio dicity flow managers forecast the traffic to come using recorded data Because of last time changes weather conditions technical failures 1t is necessary to monitor the effects of the regulation plan and to adapt some restrictions in real time to cope with excess demand and under used capacities 8 2 2 The Slot Allocation Problem First of all we will focus on solving the slot allocation problem under capacity constraints a small example is presented in Sect 4 We will then extend the model in order to integrate another type of constraints called flow rate constraints to organize the delays undergone by the flights in the first application Capacity Constraint Definition A capacity constraint is a relation between an airspace volume A a sector or a group of sectors a temporal period T and an hourly rate N 6t N is the maximum number of aircraft that can enter the sector each t minutes The constraint is satisfied if during T at most N flights per contiguous slices of t mi
88. the stack keeps unwinding looking for an earlier invocation of catch 3 1 3 6 List Processing The following predicates are inspired from the lists library of SICStus Prolog The follo wing predicates are available append Prefix Suffix Combined is true when Combined is the combined list of the elements in Prefix followed by the elements in Suffix It can be used to form Combined or it can be used to find Prefix and or Suffix from a given Combined member Element List is true when Element is a member of List It may be used to test for membership in a list but it can also be used to enumerate all the elements in List memberchk Element List is true when Element is a member of List but memberchk 2 only succeeds once and can therefore not be used to enumerate the elements in List reverse List Reversed is true when Reversed has the same elements as List but in a reversed order delete List Element Residue is true when Residue is the result of removing all identical occurrences of Element in List select Element List List2 is true when the result of removing an occurrence of Element in List is List2 permutation List Perm is true when Perm is a permutation of List prefix Prefix List is true when Prefix is a prefix of List ANNEXE I MANUEL D UTILISATION DE WAMCC 238 suffix Suffix List is true when Suffix is a suffix of List sublist Sub List is true when Sub
89. thode un branchement WAM est traduit par un branchement goto C Le fait qu un goto ne puisse adresser que du code l int rieur d une m me fonction conduit un programme C compos d une seule fonction dot e d une instruction switch pour simuler les goto indirects Ainsi notre exemple donnera lieu fct_switch label_switch switch PC case p p q r label_p push CP allocate CP p1 call q goto label_q f case pl pop CP deallocate goto label_r execute r case q q label q PC CP proceed goto label switch Cette m thode est assez efficace mais a pour inconv nient majeur qu un programme donne lieu une seule fonction D s lors hormis pour les programmes jouets de quelques clauses cette m thode engendre une fonction norme que le compilateur C ne peut alors traiter en un temps raisonnable cf 62 Nous attribuons cela au temps exponentiel que n cessite l allocateur de registres Par ailleurs la gestion de la modularit est difficile mettre en oeuvre du fait qu elle n cessite la consultation d une table dynamique pour appeler un pr dicat d un autre module en vue de donner le contr le la fonction switch de ce module De m me la gestion correcte du backtracking lors de ces changements de contexte n est pas une t che facile Ainsi dans le cas o la modularit est support e un appel extra modules sera beaucoup plus co teux
90. time of the flight see 2 2 and 4 2 2 relations between sector entry time variables and departure time variables for each capacity constraint a variable is created for a flight if the entering time in the first sector S of its route SR that belongs to A where A is the constraint group of sectors possibly a singleton is within T the constraint period see 4 1 and 4 2 Therefore we set a new constraint on each of these variables V as follows VE VEN where V is the departure time and A is the time the flight needs to reach the sector S translation constant 3 atmost_interval constraints finally each capacity constraint is modelled using an atmost_interval constraint defined in 3 5 Its arguments are the capacity the list of the variables identified in step 2 and the bounds of the constraint period interval see 3 5 and 4 1 This model is interesting because of its simplicity and transparency since a flight can cross many sectors it can be affected by several atmost_interval constraints Regulators speak about combining restrictions but it is difficult for them to evaluate the effects of such restrictions Such an overlapping problem is modelled in a transparent way Another interest of our model is its extensibility for instance it would be obvious to affect a distinct delay to flights if we considered that some special flights could not be delayed 8 4 3 clp FD Implementation of our Small Example
91. traditionnelles Pour cela nous devons prouver que la relation de satisfaction d rive les m mes r sultats que la s mantique d clarative des bool ens donn e par les tables de v rit des op rations and or et not Proposition 5 1 Les contraintes and X Y Z or X Y Z et not X Y sont satisfaites pour des valeurs de X Y et Z si et seulement si ce triplet de valeurs est donn dans la table de v rit de l op ration correspondante Preuve Il faut montrer que pour and X Y Z et or X Y Z d s que X et Y sont li s une valeur alors la valeur de Z est correcte c est dire unique si plusieurs r gles peuvent se CHAPITRE 5 CONTRAINTES BOOL ENNES 115 d clencher alors elles donnent toutes le m me r sultat et gal la valeur trouv e dans la table de v rit Il faut aussi montrer que toutes les lignes de cette table sont effectivement calcul es Ceci est v rifi par une analyse de cas triviale Pour not X Y on v rifie ais ment que pour toute valeur de X Y a la valeur oppos e O 5 3 Codage des bool ens en clp FD clp B FD Nous allons maintenant voir comment d finir la traduction de chacune des contraintes bool ennes en contraintes primitives de clp FD c est dire en contraintes X in r Nous prouverons galement la correction et la compl tude de ce r solveur en montrant qu il encode bien la s mantique op rationnelle d finie par la th orie B La syntaxe des cont
92. traduit Prolog vers C via la WAM Il ne s agit pas simplement de d velopper un syst me de programmation en logique de plus mais d tudier comment d finir de la mani re la plus simple et minimale possible un syst me r pondant aux demandes suivantes e extensibilit le syst me doit tre une plate forme exp rimentale modifiable et exten sible Ceci implique que son architecture soit simple sans les optimisations complexes courantes dans les syst mes Prolog commerciaux qui pourraient aller l encontre de l int gration de diverses extensions voire la rendre compl tement impossible e portabilit pour esp rer une large diffusion et viter l obsolescence li e a l attache ment une machine particuli re e efficacit pour r pondre au besoin des utilisateurs que ce soit pour la partie Prolog ou pour le traitement des contraintes CHAPITRE 1 INTRODUCTION 9 e modularit pour pouvoir d composer une application en diff rents modules et ainsi pouvoir traiter des applications de taille importante Le syst me ainsi d velopp wamcc s avere la fois simple d architecture donc extensible facilement l oppos d un syst me comme Quintus ou Sicstus Prolog par exemple et efficace ses performances sont quivalentes celles de Quintus Prolog 2 5 qui est bas sur un mulateur de code WAM optimis crit en assembleur Notons que Quintus Prolog est un produit commercial ayant n c
93. trois sources d appels inutiles Tell Les optimisations visant vi ter ces appels profitent toutes les contraintes et sont de ce fait globales l oppos des optimisation locales i e ad hoc des r solveurs bo te noire Remarquons que l ex cution d une contrainte est tr s rapide ex sur un Sparc 2 40 Mhz il s en ex cute jusqu 80000 par seconde De plus comme nous le verrons ci dessous les Tells inutiles sont beaucoup moins co teux que les appels in vitables De ce fait l ajout d une optimisation ne doit pas entra ner de surco t trop fort pour avoir un impact sur le temps d ex cution Par rap port la premi re version de clp FD qui optimisait les trois cas d appels inutiles nous n avons retenu que l optimisation 2 satisfaction de contrainte qui est celle dont l impact est le plus important ex queens 70 ff environ 4 fois plus rapide gr ce cette optimisa tion L abandon de l optimisation 1 contraintes quivalentes nous a permis d optimiser notre file de propagation L adoption de celle ci permet un gain en temps de 10 gr ce la simplification de certaines op rations et prend en charge implicitement un certain cas d optimisation 3 occurrences multiples de contraintes L optimisation des autres cas n apporte qu un gain marginal du fait du changement de l ordre d valuation Nous avons donc une fois de plus privil gi la simplicit de architecture lorsque seul un gain marginal ta
94. 1 11 ab6 1 57 m1 16 20 m2 8 36 m3 8 44 m4 8 52 m5 8 12 m6 20 601 111 2 30 t1 12 44 t2 12 56 t3 12 68 t4 12 92 t5 12 80 ua 10 78 v1 15 56 v2 10 92 k1 0 42 k2 0 80 stop 0 104 JE bridge K Ende 209 ANNEXE H PROGRAMME BRIDGE setup K setup K Ende Disj minof choice Disj K Ende Ende Disj jobs L make_vars L K member stop _ Ende K precedence M make_precedence M K max_nf M1 make_max_nf M1 K max_ef M2 make_max_ef M2 K min_af M3 make_min_af M3 K min_sf M4 make_min_sf M4 K min_nf M5 make _min_nf M5 K resources R make_disj R K Disj1 reverse Disj1 Disj choice Disj K disjunct Disj label XK make_vars J make_vars HIT H D A IR duration H D A in 0 200 make_vars T R make_precedence _ make_precedence A B R L member A Ad Aa L member B Bd Ba L greatereqc Ba Aa Ad Ba gt AatAd make_precedence R L make_max_nf _ 210 ANNEXE H PROGRAMME BRIDGE make_max_nf A B C R L member A Ad Aa L member B Bd Ba L Ci is C Ad smallereqc Ba Aa C1 make_max_nf R L make_max_ef _ make_max_ef A B C R L member A Ad Aa L member B Bd Ba L Ci is Ad C Bd smallereqc Ba Aa C1 make_max_ef R L make_min_af _ make_min_af A B C R L member A Ad Aa L
95. 1 52871 X2 56728 X4 146074 7132 X3 33576 X5 49530 X6 62089 X7 ANNEXE C PROGRAMME EQ20 197 0 29475 xX2 34421 xX3 62646x xX5 29278x X6 251591 60113 X1 76870 X4 15212x X7 22167 29101 X2 5513 X3 21219 X4 0 87059 X1 22128 X5 7276 X6 57308 X7 821228 76706 X1 48614 X6 41906 X7 0 98205 X2 23445 X3 67921 X44 24111 X5 labeling LD Annexe D Programme alpha PE Benchmark Finite Domain INRIA Rocquencourt ChLoE Project Name alpha pl Title alphacipher Original Source Daniel Diaz INRIA France Adapted by Date January 1993 This problem comes from the news group rec puzzle The numbers 1 26 have been randomly assigned to the letters of the alphabet The numbers beside each word are the total of the values assigned to the letters in the word e g for LYRE L Y R E might equal 5 9 20 and 13 respectively or any other combination that add up to 47 Find the value of each letter under the equations BALLET 45 GLEE 66 POLKA 59 SONG 61 CELLO 43 JAZZ 58 QUARTET 50 SOPRANO 82 x CONCERT 74 LYRE 47 SAXOPHONE 134 THEME 72 FLUTE 30 OBOE 53 SCALE 51 VIOLIN 100 FUGUE 50 OPERA 65 SOLO 37 WALTZ 34 Solution x A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 5 13 9 16 20 4 24 21 25 17 23 2 8 12 10 19 7 11 15 3 1 26 6 22 14 18 198 ANNEXE D PROGRAMME ALPHA
96. 199 alpha LD fd_vector_max 26 LD A B C _D E F G H I J K L M N 0 P Q R S T U V W X Y Z alldifferent LD domain LD 1 26 B A L L E T 45 C E L L 0 43 C O N C E R T 74 F L U T E 30 F U G U E 50 G L E E 66 J A Z Z 58 L Y R E 47 O B 0 E 53 O P E R A 65 P 0 L K A 59 Q U A R T E T 50 S A X 0 P H 0 N E 134 S C A L E 51 S 0 L 0 37 S 0 N G 61 S 0 P R A N 0 82 T H E M E 72 V I 0 L I N 100 W A L T Z 34 labeling LD labelingff LD Annexe E Programme queens PE Benchmark Finite Domain INRIA Rocquencourt ChLoE Project Name queens pl Title N queens problem Original Source P Van Hentenryck s book Adapted by Daniel Diaz INRIA France Date January 1993 Put N queens on an NxN chessboard so that there is no couple of queens threatening each other Solution x N 4 2 4 1 3 N 8 1 5 8 6 3 7 2 4 N 16 1 3 5 2 13 9 14 12 15 6 16 7 4 11 8 10 JE queens N L fd_vector_max N length L N domain L 1 N safe L labeling L h labelingff L 200 ANNEXE E PROGRAMME QUEENS safe safe X L noattack L X 1 safe L noattack _ _ noattack Y L X 1 dif X Y D 11 is 1 1 noattack L X 11 diff X Y I X in val Y amp val Y I amp val Y I Y in val X val X I
97. 2 m3 k2 m4 k2 m5 k2 m6 k2 11 t1 11 t2 11 t3 11 t4 11 t5 t1 v1 t5 v2 t2 stop t3 stop t4 stop vi stop v2 stop ua stop k2 stop max_nf start 11 30 a1 s1 3 a2 s2 3 a5 s5 3 a6 s6 3 p1 s3 3 p2 s4 3 min_sf ua m1 2 ua m2 2 ua m3 2 ua m4 2 ANNEXE H PROGRAMME BRIDGE 215 ua m5 2 ua m6 2 max_ef s1 b1 4 s2 b2 4 s3 b3 4 s4 b4 4 s5 b5 4 s6 b6 4 min_nf start 11 30 min_af ue s1 6 ue s2 6 ue s3 6 ue s4 6 ve s5 6 ue s6 6 resources crane 11 t1 t2 t3 t4 t5 bricklaying m1 m2 m3 m4 m5 m6 schal si s2 s3 s4 s5 s6 excavator la1 a2 a3 a4 a5 a6 ram p1 p2 pump b1 b2 b3 b4 b5 b6 caterpillar v1 v21 Annexe I Manuel d utilisation de wamcc wamcc 2 21 User s Manual Daniel Diaz INRIA Rocquencourt Domaine de Voluceau 78153 Le Chesnay FRANCE Daniel Diaz inria fr July 1994 This manual is based on DECsystem 10 Prolog User s Manual by D L Bowen L Byrd F C N Pereira L M Pereira D H D Warren and on SICStus Prolog User s Manual by Mats Carlsson 216 ANNEXE I MANUEL D UTILISATION DE WAMCC 217 I 1 Using wamcc Modularity wamcc is a Prolog compiler which translates Prolog to C via the WAM Warren Abstract Machine A Prolog file will give rise to a C source file which will be compiled by gcc Several Prolog files can be compiled separ
98. 28 541 56 180 reducer over flow 0 930 sdda 0 050 0 030 sendmore 0 670 2 580 tak 1 430 651 000 zebra 0 530 0 580 actes Taccdi ration 100 2005 2716 5632 Tableau 6 wamcc versus autres Prolog universitaires temps en sec Nous nous proposons dans un premier temps de comparer wamcc d autres concurrents de sa cat gorie les Prolog universitaires Ces implantations ont g n ralement t r alis es dans des universit s des fins de recherche par une seule personne et sont distribu es gratuitement sur le r seau internet via ftp Le choix des langages Prolog utilis s pour la comparaison a t guid par la popularit de ceux ci Nous trouvons donc BinProlog 3 0 ce langage est bas sur la binarisation des clauses qui consiste prin cipalement en un calcul o les continuations sont rendues explicites La WAM est adapt cette particularit et le code obtenu est mul L mulateur est crit en C CHAPITRE 3 IMPLANTATION DE WAMCC 70 XSB Prolog 1 4 0 ce langage est le successeur du populaire SB Prolog Il utilise aussi un mulateur crit en C mais integre en plus des techniques d valuation partielle pour sp cialiser les appels en partie instanci s La compilation peut donc tre assez longue Celle ci est galement capable de d tecter certains cas de d terminisme ainsi que de compiler efficacement des structures de contr le telles que le if then else Prolog SWI Prolog 1 8 11 ce
99. 4 L3 043 element X4 L4 044 element X4 L5 045 element X5 L1 051 element X5 L2 052 element X5 L3 053 element X5 L4 054 element X5 L5 055 element X6 L1 061 element X6 L2 062 element X6 L3 063 element X6 L4 064 element X6 L5 065 element X7 L1 071 element X7 L2 072 element X7 L3 073 element X7 L4 074 element X7 L5 075 element X8 L1 081 element X8 L2 082 element X8 L3 083 element X8 L4 084 element X8 L5 085 element X9 L1 091 element X9 L2 092 element X9 L3 093 element X9 L4 094 element X9 L5 095 element X10 L1 0101 element X10 L2 0102 element X10 L3 0103 element X10 L4 0104 element X10 L5 0105 1 gt 011 021 ANNEXE G PROGRAMME CARS 207 gt 021 031 gt 031 041 gt 041 051 gt 051 061 gt 061 071 gt 071 081 gt 081 091 gt 091 0101 gt 012 022 032 gt 022 032 042 gt 032 042 052 gt 042 052 062 gt 052 062 072 gt 062 072 082 gt 072 082 092 gt 082 092 0102 gt 013 023 033 gt 023 033 043 gt 033 043 053 gt 043 053 063 gt 053 063 073 gt 063 073 083 gt 073 083 093 gt 083 093 0103 gt 014 024 034 044 054 gt 024 034 044 054 064 gt 034 044 054 064 074 gt 044 054 064 074 084 gt 054 064 074 084 094 gt 064 074 084 094 0104 gt 015 025 035 045
100. C et ne se pr te pas la d finition d une machine abstraite pour la compilation et le traitement des contraintes Un probl me suppl mentaire ici est le fait qu il doit en r alit y avoir autant de machines abstraites qu il y a de r solveurs c est dire de domaines de contraintes Dans cette th se nous nous sommes donc concentr s sur la d finition et implantation d un syst me de PLC sur les domaines finis L id e ma tresse qui a dirig ce travail tait la volont de d finir une architecture simple claire et minimale Le probl me majeur tait donc de d terminer quels taient les l ments minimaux qu il fallait utiliser pour pouvoir ensuite reconstruire un syst me complet avec comme contraintes suppl mentaires l extensibilit et l efficacit Il s agissait ensuite de concevoir une architecture concr te et une machine abstraite pour le traitement des contraintes sur les domaines finis 1 1 Les domaines finis Parmi les diff rents domaines de calcul tudi s en PLC celui des domaines finis semble tre le plus prometteur car il est tr s utile dans de nombreuses applications industrielles comme par exemple les probl mes combinatoires l ordonnancement les optimisations de stocks la simulation de circuits le diagnostic l aide la d cision ou m me les probl mes bool ens Les domaines finis ont t introduits en PLC par Pascal van Hentenryck dans le langage CHIP vers la fin des ann es 80 Un d
101. C sur les domaines finis l ex cutent uniquement la fin de l ex cution du programme juste avant de proposer une solution r ponse l utilisateur Pendant toute la dur e du calcul seule la phase de consistance d arc aura t effectu e pour tester la satisfiabilit de l ensemble courant de contraintes Ceci implique que le syst me a peut tre explor inutilement des branches d chec qui n auront t d couvertes comme telles qu ultimement mais cela ne remet pas en cause la correction ni la compl tude des calculs 1 2 Approche RISC versus approche CISC Nous avons suivi jusqu ici l approche traditionnelle de la PLC en pr sentant pour les do maines finis un r solveur de type bo te noire bas sur les techniques de consistance d arc propagation locale des domaines des variables En fait ceci est tr s grossier et il faut en pratique traiter chaque contrainte particuli rement et sp cialiser la propagation locale pour chacune d elle Le r solveur de CHIP par exemple suit cette approche et il consiste du point de vue de l implantation en une collection de proc dures charg es du traitement particulier de chaque contrainte crites en langage C par souci d efficacit Ceci ne se fait cependant qu aux d pens de l extensibilit et de la clart et le programmeur ne sait jamais exactement quel traitement est effectu par le r solveur et en est r duit esp rer que l implanteur ait bien fait son travai
102. CC 31 la variable sera simplement li e l instance d j existante alors qu en construction la variable est li e une nouvelle copie du mod le La WAM d finit ainsi deux modes lors de l unification de termes structur s e READ correspondant une d composition Dans ce cas le terme existe dans le tas et un registre de base nomm S contient son adresse L unification des sous termes peut avoir lieu par rapport S e WRITE correspondant une construction Dans ce cas le terme est construit sur le sommet du tas point par H Pour viter l utilisation d un registre sp cifique pour coder le mode le registre S est mis NULL en mode WRITE Argument n 1 Argument 0 structure Foncteur Arite Argument Cdr constante w a Table des constantes Figure 3 repr sentation des termes dans la WAM CHAPITRE 3 IMPLANTATION DE WAMCC 32 3 1 5 Registres La WAM utilise les registres de base suivants PC Program Counter pointeur de programme CP Continuation Program pointeur de continuation E Environment pointeur sur environnement courant B Backtrack pointeur sur point de choix courant BC Backtrack Cut pointeur sur point de choix pour coupure H Heap pointeur sur sommet du heap S Structure pointer pointeur sur structure d composer TR Trail pointeur sur sommet de la trail Ali Arguments banc de registres arguments aussi nomm X i Le registre BC
103. M tendue T peuvent tre allou s dans des registres machines ramenant l valuation des contraintes sur des intervalles des op rations entre registres Pour illustrer cela consid rons nouveau la contrainte utilisateur x y c cf exemple 2 1 La table 8 pr c demment rencontr e montrait le code WAM tendu associ cette contrainte La compilation vers C de ce code en ce qui concerne la premi re contrainte X in min Y C max Y C est pr sent e en table 9 Cette traduction donne lieu une fonction ne manipulant que des entiers au travers de variables locales que le compilateur C alloue facilement dans des registres Ce qui peut tre v rifi sur la table 10 qui pr sente le code assembleur Sparc produit par le compilateur gcc CHAPITRE 4 IMPLANTATION DE CLP FD 92 static Bool cstr_1 WamWord CF X in min Y C max Y C WamWord AF AF_Pointer CF WamWord fdv_adr WamWord trO tri tr2 Bool ok fdv_adr WamWord AF 1 fd_ind_min_max T 0 T 1 fv 1 tr0 Range fdv_adr gt min tri Range fdv_adr gt max tr2 int AF 2 fd_term_parameter T 2 fp 2 trO0 tr2 fd_term_add_term T 0 T 2 tri tr2 fd_term_add_term T 1 T 2 fdv_adr Tell_Fdv_Adr CF fd_tell_interval T 0 T 1 ok Tell_Interval fdv_adr tr0 tr1 return ok fd_proceed Tableau 9 fragment de code C g n r pour x y c _cstr_1 en entr e i0 CF save sp 104 sp prologue ld i0 03 4 03 AF AF_Pointer
104. Model ss ip kno as AE MAUR du a eee 180 8 4 3 clp FD Implementation of our Small Example 181 8 4 4 Optimization Trials Heuristics 182 ES a A A a Redd 183 8 4 6 Extension of the Model to Integrate Flow Rate Constraints 185 8 4 7 A Simulation Aid Tool for Regulators Cost estimation of Regulation Pita Lae tat wale a A Mie tas ti Ny la ee a 187 8 5 Conclusion and Further Works 4e A A ae WP Se Sa A 187 Conclusion 188 Programme crypta 191 Programme eq10 193 Programme eq20 195 Programme alpha 198 Programme queens 200 Programme five 202 Programme cars 204 Programme bridge 209 Manuel d utilisation de wamcc 216 L1 Using wamcc Modularity fe a A a a ct aus 217 1 2 From Prolog modules to Unix Executables 219 1247 Compiling Prolog Modules ui oe AA A O 219 1 2 2 Generating Object Files daa a ee RMS O 221 A A ill O dei Gee ee a 221 1 2 4 Stack Overflow Messages e la ewes Midi ek Ms ee 222 1 2 5 Makefile Generator bmf_wamcc Utility 222 I 3 Built in Predicates A A ARA A pee tu 223 Loco pal Outputs ieena EAN ee ee eh a te nn Po 223 T327 Pome aei eds ip ee ia a eR eee Soe ress et hk Sead 228 Loud Term Management soso ccn a be vente bee a a a sald 230 134 Test Predicates e se wie Ge Sie ER ee le A E Y 234 Tee Control a she ns LEUR BO A BO a A A we Oe A 235 AAN Pal e 2 5 Sg aig pode Bk NT Be RO Pa Be ead 237 EST Operators 238 1 3 8
105. Prolog et WAM 2700 lignes de C e les pr dicats pr d finis qui sont en majorit crits en Prolog 2300 lignes le C tant utilis pour le code de bas niveau La taille de cette librairie est de 160 Ko dont 130 Ko pour les pr dicats pr d finis Ainsi la taille d un ex cutable correspondra la somme des tailles des diff rents modules plus 160 Ko de librairie plus environ 30 Ko de librairie C 3 4 2 Le jeu de benchmarks Lignes Temps de Fe de oe de Re rune Toni rene raie sin boyer browse cal chat _parser crypt ham meta_qsort nand poly_10 queens 16 queens_n 8 queens_n 10 reducer sdda sendmore tak zebra Tableau 5 performances de wamcc temps en sec La table 5 pr sente les performances de wamcc sur un jeu de benchmarks classiques Pour chaque programme nous trouvons e le nombre de lignes de Prolog du source e le temps de compilation total du programme Prolog C gcc dition des liens CHAPITRE 3 IMPLANTATION DE WAMCC 69 e la taille de l objet obtenu et de l ex cutable final e le temps d ex cution 3 4 3 wamcc versus des Prolog universitaires wamcc BinProlog XSB Prolog SWI Prolog programe boyer 11 450 21 200 browse 11 850 18 180 cal 1 420 5 120 chat_parser 1 790 2 050 crypt 0 040 0 100 ham 8 840 12 650 meta_qsort 0 140 0 130 nand over flow 0 420 poly_10 0 720 1 200 queens 16 6 480 31 220 queens_n 8 1 560 3 450 queens_n 10
106. RAINTES 143 Pa o Ta TO sup ti inf ta inf t sup te A min Y max Y M min Y max Y A r1 A r2 M r1 M r2 M r A r A r ct M r ct Tableau 34 nouvelle d finition de A r et M r bas sur celle ci appliquant une r gle si elle n a pas encore t utilis e Une r gle s applique si sa partie gauche filtre une sous formule de la condition normaliser et la remplace par la partie droite de la r gle Lorsqu une r gle s applique le processus est it r partir du d but de la liste e COM les op rations de compl mentation sont explicit es Cti 4 ty gt 0 ti 1 t 1 infinity e IU les intersections donnent lieu des conjonctions et les unions des disjonctions PSS AE Pe PESTS TERA eS Oe ty VST e DIS les op rations sur l ensemble du domaine sont distribu es sur les bornes Hit ct gt tyct ty ct e INC les inclusions deviennent des tests de bornes ty te C t3 ty gt ti gt ts A ta lt ta D finition 6 9 Soit une contrainte c et E c la condition d finie ci dessus L on d finit alors Ez c comme la simplification de E c par les r gles de r critures Proposition 6 6 terminaison de la r criture La simplification de toute condition termine Preuve La terminaison est assur e du fait que COM remplace une op ration de compl mentation par une union IU remplace une intersection resp une union par une
107. Soit une contrainte c et Ez c sa condition de satisfaction On d finit alors IT c comme la normalisation de E3 c par les r gles de r criture Soient IH c et M cz deux conditions normalis es associ es aux contraintes c et cz On dit que IT c et IT amp sont gales modulo la commutativit et l associativit de A et de V si chaque paire d in galit s associ es dans II c et Tl cz sont gales Deux in galit s t lt t et t3 lt t4 sont gales ssi t et t3 sont gaux et ty et t4 sont gaux o l galit entre termes est d finie comme l identit modulo la commutativit et l associativit de et x Proposition 6 8 terminaison La normalisation de toute condition E3 c termine Preuve la terminaison est assur e du fait que DNF remplace une conjonction par deux conjonc tions de taille inf rieure ANF remplace un produit par deux produits de taille inf rieure CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 147 STA remplace une soustraction par une addition et D TM remplace une division par une multiplication O Proposition 6 9 correction Si II c et I c2 sont d cid s quivalents alors E3 c est vrai ssi Ez cz est vrai Preuve il suffit pour cela de prouver que chaque r gle conserve l quivalence c est dire que pour toute r gle l r on a l amp r Ce qui est trivialement vrai pour DNF ANF et STA Seules les r gles de DTM n cessitent une attention part
108. THESE pr sent e L UNIVERSITE D ORLEANS pour obtenir le grade de DOCTEUR EN INFORMATIQUE par Daniel Diaz ETUDE DE LA COMPILATION DES LANGAGES LOGIQUES DE PROGRAMMATION PAR CONTRAINTES SUR LES DOMAINES FINIS LE SYSTEME c1p FD Soutenue le 13 Janvier 1995 devant la Commission d examen G Fil gt AE its Pr sident J P Delahaye Rapporteur P van Hentenryck Rapporteur D H D Warren Rapporteur F Benhamou Examinateur P Codognet Examinateur P Deransart Examinateur G Ferrand gt Examinateur Table des matieres 1 Introduction 2 1 1 1 2 1 3 1 4 1 5 Les domaines finis AE ARAS AA OS Approche RISC versus approche CISC Op ration Ask et contraintes conditionnelles Contraintes ool ennes 2 4 0 o 4 ew fas E AA A Len du ASE Le systeme CCD E SD TA EMPIRE EM AN A PR AN AS La programmation logique par contraintes 2 1 2 2 2 3 Les syst mes de contraintes Le cadre PLC C syntaxe et s mantique 2 2 1 Syntaxe des programmes logiques avec contraintes 2 2 2 S mantique des programmes logiques avec contraintes becas CEED ganre ada at ads ne dale dle Ste de 2c Les domaines Miss enst hots e dd A EEE 2 3 2 La contrainte X in r syntaxe et intuition 2 3 3 S mantiqu
109. TION DE WAMCC 253 backtrack lt sadr gt Diplays the current choice point or the one located at sadr An address adr has the following syntax bank_name lt n gt A stack address has the following syntax stack name lt n gt bank_name can be one of the following name and n is an optional offset specifier integer bank_name WAM general registers WAM temporaries current permanent variables stack_name a stack stack_name local stack global stack trail stack Annexe J Manuel d utilisation de clp FD clp FD 2 21 User s Manual Daniel Diaz INRIA Rocquencourt Domaine de Voluceau 78153 Le Chesnay FRANCE Daniel DiazCinria fr July 1994 This manual only concerns the finite domain constraint facilities Refer to wamcc User s manual for information about the underlying Prolog engine 254 ANNEXE J MANUEL D UTILISATION DE CLP FD 255 J 1 Introduction clp FD is based on the wamcc Prolog compiler and extends it with Finite Domain FD constraints It is recommended to read the wamcc User s Manual 21 which explains how to use the underlying Prolog language built in predicates compilation process In this manual some executable names have changed for c1p FD The folowing table shows the correspondance between old i e wamcc names and new ones i e clp FD Executable clp FD names Prolog compiler wamcc clp_fd Gcc compiler W_gcc fd_gcc Build Makefile bmf_wamcc b
110. The term Term is written onto the current output according to the current operator declaration write_canonical Term Similar to write Term but the term is written according to the standard syntax The output can be parsed by read 1 writeq Term Similar to write Term but the names of atoms ans functors are quoted where ne cessary write_term Term 0ptions Same as write 1 with a list of options Bool is either false or true quoted Bool If selected functors are quoted where necessary to make the result acceptable as input to read 1 ignore_ops Bool If selected Term is written in standard parenthesized notation instead of using operators numbervars Boo1 If selected occurrences of VAR I where I is an integer gt 0 are written as A I mod 26 1 26 For 1 0 you get the variable names A B Z Al Bl etc max_depth N Depth limit on printing N is an integer 1 the default means no limit format Format Arguments Print Arguments onto the current output according to format Format Format is a list of formatting characters format 2 and format 3 is a Prolog interface to the C stdio function printf It is due to Quintus Sicstus Prolog Arguments is a list of items to be printed If there is only one item it may be supplied as an atom If there are no items then an empty list should be supplied ANNEXE I MANUEL D UTILISATION DE WAMCC 227 The default action on a format
111. Y C Y in dom X C Notons toutefois que nous ne pouvons pas d finir X Y Z en full lookahead Nous pr senterons en section 7 3 1 une extension de la syntaxe de X in r permettant la d finition de tels sch mas de propagation par full lookahead Les contraintes X gt Y et X gt A Y peuvent se d finir comme suit CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 19 Exemple 2 4 x gt y X Y X in min Y infinity Y in 0 max X Exemple 2 5 x gt ay X A Y X in A min Y infinity Y in 0 max X lt A La contrainte X Y se d finit par Exemple 2 6 EF X Y X in dom Y Y in dom X Nous verrons plus bas qu une contrainte comme X in dom Y est anti monotone In tuitivement le domaine d not par dom Y augmente au fur et mesure du calcul i e puisque le domaine de Y diminue son compl mentaire augmente Ceci pose un probl me du point de vue de l implantation puisque une valeur inconsistante pour X i e n apparte nant pas au compl mentaire du domaine de Y peut devenir consistante dans la suite du calcul du fait d une r duction de Y Une telle contrainte ne pourra donc tre trait e que lorsque Y sera instanci On parle alors de forward checking Il serait possible d utiliser un freeze ou autre delay pour retarder l valuation d une telle contrainte Nous avons choisi de d finir un pseudo terme indexical val X qui retarde l activation de toute contraint
112. a f de backtracking utilis par Prolog Le backtracking intelligent peut r soudre quelques cas d inefficacit 20 mais devient inadapt si le r seau de contraintes est fortement con nect du fait que tout point de choix est alors consid r comme pertinent ce qui nous ram ne au sch ma na f L approche la plus prometteuse consiste viter la cr ation de points de choix et lorsque n cessaire de les cr er de mani re dynamique plut t que statique A nsi pour les disjonc tions aussi l approche dirig par les donn es est pr f rable l approche dirig par les programmes Une telle approche est parfaitement illustr e dans le principe d Andorra 76 CHAPITRE 7 CONTRAINTES COMPLEXES 163 qui se situe au coeur de langages tels que Andorra I 32 ou AKL 41 et favorise les calculs d terministes et retardant les buts non d terministes aussi longtemps que possible i e tant qu un calcul d terministe peut tre effectu Ce concept trouve ses racines dans les tout premiers d veloppements de Prolog comme par exemple dans les proc dures de recherche du type sidetracking 55 favorisant l exploration des buts poss dant le moins d alternatives Remarquons qu il ne s agit la que d une variante du c lebre principe first fail Ces id es ont t approfondies plus encore dans le cadre PLC o en plus de vouloir viter de faire des choix trop t t donc potentiellement erron s l on a cherch
113. a few global optimizations as opposed to the many local and particular optimizations hidden inside the black box When a constraint X in r has been reexecuted if D4 Dx it was useless to reexecute it i e it has neither failed nor reduced the domain of X Hence we have designed three simple but powerful optimizations for the X in r constraint 24 25 which encompass many previous particular optimizations for FD constraints e some constraints are equivalent so only the execution of one of them is needed In the previous example when Cy is called in the store X in 0 4 Y in 0 00 Y is set to 0 4 Since the domain of Y has been updated all constraints depending on Y are CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 179 reexecuted and C1 X in 0 4 is woken unnecessarily C1 and C are equivalent e it is useless to reexecute a constraint as soon as it is entailed In clp FD only one approximation is used to detect the entailment of a constraint X in r which is X is ground So it is useless to reexecute a constraint X in r as soon as X is ground e when a constraint is woken more than once from several distinct variables only one reexecution is necessary This optimization is obvious since the order of constraints during the execution is irrelevant for correctness These optimizations make it possible to avoid on average 50 of the total number of constraint executions on a traditional set of FD benchmar
114. a suite Ainsi pour n 4 la s rie 1 2 1 0 est magique La formulation originale 67 utilisait un freeze sur chaque X pour d clencher les ajouts de contraintes Notre formulation bas e sur celle de 54 se contentera d encoder la relation suivante o x y vaut 1 si x y et 0 si x y Ce qui se fait ais ment en d finissant une contrainte interm diaire X A amp B o X est une variable DF A est un entier et B une variable bool enne i e de domaine initial 0 1 valant 1 ssi X A Exemple 7 1 x a gt b X A B X 1 0 A IK II gt lt ww XZ A 3 Oore pe gt poly al X B B Pour montrer la puissance de cette formulation comparons la celle de CHIP utilisant un freeze sur un Sparc 2 28 5 Mips clp FD commence par tre 4 fois plus rapide que CHAPITRE 7 CONTRAINTES COMPLEXES 155 CHIP pour n 10 et finit par tre plus de 400 fois plus rapide pour n 50 cf table 35 La formulation avec freeze ne permet pas un aussi bon lagage de l espace de recherche que celle avec Ask 334 870 Tableau 35 probl me des s ries magiques 7 2 2 Contrainte atmost La contrainte atmost N X Xm V est vraie ssi au plus N variables X sont gales l entier V Cette contrainte peut tre d finie gr ce la relation D vV lt N j 0 o x y vaut 1 si x yet 0 si x y Cette contrainte se d finit simplement par le biais de la contrainte X
115. a4 a5 a6 p1 p2 ue s1 s2 s3 s4 s5 s6 b1 b2 b3 b4 b5 b6 ab1 ab2 ab3 ab4 ab5 ab6 m1 m2 m3 m4 m5 m6 11 t1 t2 t3 t4 t5 ua v1 v2 k1 k2 stop duration start 0 duration ai 4 duration a2 2 duration a3 2 duration a4 2 duration a5 2 duration a6 5 duration p1 20 duration p2 13 duration ue 10 duration s1 8 duration s2 4 duration s3 4 duration s4 4 duration s5 4 duration s6 10 duration b1 1 duration b2 1 duration b3 1 duration b4 1 duration b5 1 duration b6 1 duration abi 1 213 ANNEXE H PROGRAMME BRIDGE 214 duration ab2 1 duration ab3 1 duration ab4 1 duration ab5 1 duration ab6 1 duration m1 16 duration m2 8 duration m3 8 duration m4 8 duration m5 8 duration m6 20 duration 11 2 duration t1 12 duration t2 12 duration t3 12 duration t4 12 duration t5 12 duration ua 10 duration v1 15 duration v2 10 duration k1 0 duration k2 0 duration stop 0 precedence start a1 start a2 start a3 start a4 start a5 start a6 start ue ai si a2 s2 a5 s5 a6 s6 a3 p1 a4 p2 p1 s3 p2 s4 p1 k1 p2 k1 s1 b1 s2 b2 s3 b3 s4 b4 s5 b5 s6 b6 b1 ab1 b2 ab2 b3 ab3 b4 ab4 b5 ab5 b6 ab6 ab1 m1 ab2 m2 ab3 m3 ab4 m4 ab5 m5 ab6 m6 m1 t1 m2 t1 m2 t2 m3 t2 m3 t3 m4 t3 m4 t4 m5 t4 m5 t5 m6 t5 mi k2 m2 k
116. ain Came o osr 2 ou a 27 000 0 070 2 eqio oasi 12079 21 12679 9135 26 0 110 0 080 27 Lego 266 10003 23 mn 13888 28 0170 0 125 26 alpha 904936 641204 29 642127 377826 41 ee IAEA ASES queens 16 64619 33481 41654 10516 75 queens 64 ff 4556 2143 53 2722 queens 70 ff 2009404 292381 1828969 111946 94 queens 81 ff 10633 3787 64 7620 five se sro sfer cars 2483 2324 6 2081 1922 8 0 040 0 030 Gain moyen 37 2 Tableau 18 d tail du gain final CHAPITRE 4 IMPLANTATION DE CLP FD 105 Version Version de Base finale Tells inutiles M utiles Temps Tells Temps Tells Figure 14 impact des optimisations 72 dans la version initiale Parmi ceux ci nous pensons qu un nombre important peut tre encore limin par une optimisation 2 plus pr cise cf chapitre 6 L conomie de temps d ex cution est d environ 36 Une partie de celle ci est due aux simplifications inh rentes l architecture de file optimis e environ 10 Ceci peut tre confirm en se r f rant la table 15 qui montre qu une diminution de 47 du nombre d appels inutiles offre un gain de 24 Donc le gain propre la diminution de 52 est de 26 ce qui v rifie les 36 10 Ceci nous donne deux informations importantes e la simplification de certaines op rations a permis d conomiser envi
117. ainte est toujours v rifi e ou d mentie dans l ensemble courant de contraintes techniques que nous allons tudier dans le chapitre 6 Chapitre 6 D tection de la satisfaction de contraintes 6 1 Introduction Nous allons nous int resser ici au probleme que pose la d tection de la satisfaction d une contrainte Comme nous l avons d j vu une telle d tection permet d optimiser l op ration Tell Mais elle permettra aussi de d finir l op ration Ask cf section 7 2 qui intuitive ment attend qu une certaine contrainte soit satisfaite pour lancer l ex cution d un calcul consistant souvent en des ajouts de nouvelles contraintes Ce probl me de d tection de satisfaction appartenant la redoutable famille NP nous ne pouvons esp rer tout comme pour arc consistency avoir la fois une d tection compl te et efficace C est pour cette raison que nous utiliserons une approximation de la condition exacte de satisfaction Nous pr senterons trois sch mas de d tection se diff renciant par le degr de pr cision de l approximation utilis e Nous utiliserons les exemples suivants pour les comparaisons de pr cision Exemple 6 1 xZy K Y X in dom Y cx Y in dom X cy le contenu de ce chapitre a t publi dans 17 134 CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 135 Exemple 6 2 x gt 2y X Y X in 2 min Y infinity cx Y in 0 max X lt 2 cy R
118. airspace vo lumes by the capacity constraint Capa is the capacity half hourly maximum num ber of flights entering in the constrained airspace volume H1 and H2 are the bounds of the application period of the constraint An example of such a capacity constraint is CC UT TU 26 600 660 that expresses that at most 26 aircraft can enter the group of sectors UT TU from 10am to 1lam in minutes from Oam The output data is a set of satisfactory departure times SET 1 of the flights F such that all capacity constraints are satisfied and the average delay undergone by a flight is minimized 8 3 clp FD in a Nutshell As introduced in Logic Programming by the CHIP language clp FD 24 is a constraint logic language based on finite domains where constraint solving is done by propagation and consistency techniques originating from Constraint Satisfaction Problems 49 53 71 CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 176 constraint interval range singleton range parameter integer indexical min indexical max delayed value addition subtraction multiplication Tableau 39 fragment of the constraint system syntax The novelty of clp FD is the use of a unique primitive constraint which allows users to define their own high level constraints The black box approach gives way to glass box approach 8 3 1 The Constraint X in r The main idea is to use a single
119. an MIT Press 1995 P Codognet and D Diaz A Minimal Extension of the WAM for clp FD In 10th In ternational Conference on Logic Programming Budapest Hungary MIT Press 1993 P Codognet and D Diaz Compiling Constraint in c1p FD To appear in Journal of Logic Programming P Codognet and D Diaz Boolean Constraint Solving Using clp FD In International Logic Programming Symposium Vancouver British Columbia Canada MIT Press 1993 P Codognet and D Diaz clp B Combining Simplicity and Efficiency in Boolean Constraint Solving In Programming Language Implementation and Logic Program ming Madrid Spain Springer Verlag 1994 P Codognet and D Diaz A Simple and Efficient Boolean Solver for Constraint Logic Programming To appear in Journal of Automated Reasoning P Codognet and D Diaz Finite Domain Constraints in Constraint Logic Program ming In 14th European Conference on Operational Research Jerusalem Israel 1995 D Colin de Verdi re Utilisation des techniques de recherche op rationnelle pour les tudes Air Trafic Management 1992 A Colmerauer An introduction to Prolog IIl Communications of the ACM 33 7 July 1990 V tor Santos Costa D H D Warren and Rong Yang The Andorra engine A parallel implementation of the basic Andorra model In 8th International Conference on Logic Programming Paris France MIT Press 1991 M Dincbas H Simonis and P Van Hentenryck Solving
120. ance 1994 V Saraswat The Category of Constraint Systems is Cartesian Closed In Logic In Computer Science IEEE Press 1992 D S Scott Domains for Denotational Semantics In ICALP 82 International Collo quium on Automata Languages and Programming 1982 H Simonis M Dincbas Propositional Calculus Problems in CHIP ECRC Technical Report TR LP 48 1990 T E Uribe and M E Stickel Ordered Binary Decision Diagrams and the Davis Putnam Procedure In CCL 94 Constraints in Computational Logics Munich Ger many Springer Verlag 1994 P Van Hentenryck Constraint Satisfaction in Logic Programming Logic Program ming Series MIT Press 1989 P Van Hentenryck and Y Deville The Cardinality Operator A new Logical Con nective for Constraint Logic Programming In 8th International Conference on Logic Programming Paris France MIT Press 1991 P Van Hentenryck V Saraswat and Y Deville Constraint processing in cc FD Draft 1991 P Van Hentenryck V Saraswat and Y Deville Design Implementation and Evalua tion of the Constraint language cc FD Draft 1993 P Van Hentenryck Y Deville and C M Teng A generic arc consistency algorithm and its specializations Artificial Intelligence 57 1992 pp 291 321 P Van Hentenryck H Simonis and M Dincbas Constraint Satisfaction Using Cons traint Logic Programming Artificial Intelligence no 58 pp 113 159 1992 BIBLIOGRAPHIE 270 73 P Van Ro
121. ang Ici aussi un pr dicat donne lieu une fonction C Toutefois pour viter les appels de fonction Erlang tire profit des possibilit s offertes par le compilateur GNU C gcc en mati re d tiquettes En effet gcc consid re celles ci comme des objets de premiere classe et permet donc de stocker l adresse d une tiquette dans une variable pointeur et d effectuer par la suite un branchement indirect la valeur point e par une telle variable L id e consiste donc traduire un branchement direct ou indirect WAM par un branchement C indirect l int rieur i e un label d une fonction Une table globale des adresses de branchement est alors n cessaire et doit tre initialis e par un premier appel de chaque fonction Ainsi notre exemple donne lieu CHAPITRE 3 IMPLANTATION DE WAMCC 55 void fct_p p q r jmp_tb1 p amp amp label_p initialisation jmp_tbl p1 k amp label_p1 return label_p push CP allocate CP amp amp label_p1 call q goto jmp_tbl q label_p1 pop CP deallocate goto jmp_tbl r execute r void fct_q q jmp tbl q amp amp label q initialisation return label q goto CP proceed Ainsi tous les branchements se font de mani re indirecte grace des goto et une table globale des adresses Dans le but de r duire le co t de cette indirection Erlang proc de comme KL1 et Janus en compilant dans une seule fonction les
122. arks Pire Meilleur c1p B FD Pire BDD Meil BDD schur 13 3 260 1 110 0 100 32 60 11 10 sucia EE omol CIE pigeon 7 6 pigeon 7 7 pigeon 8 7 pigeon 8 8 queens queens queens Tableau 24 c1p B FD versus un BDD temps en sec CHAPITRE 5 CONTRAINTES BOOL ENNES 120 clp B FD et une m thode num rative 58 propose des r sultats pour une m thode num rative la Davis Putnam utilis e pour Punification bool enne Les temps sont donn s sur une station Sun 3 80 1 5 Mips et ont t normalis s par un facteur 1 19 clp B FD est en moyenne 6 5 fois plus rapide voir la table 25 Enum clp B FD Enum Hee schur 13 0 810 0 100 8 10 fear te sso ion san pigeon 5 5 pigeon 6 5 pigeon 6 6 pigeon 7 6 queens queens queens Tableau 25 clp B FD versus une m thode num rative temps en sec clp B FD et la consistance locale bool enne Nous comparons ici 51 dans lequel sont pr sent s les r sultats d un r solveur bas sur une m thode de consistance locale bool enne Les temps sont donn s sur un Macintosh SE 30 quivalent un Sun 3 50 1 5 Mips Nous les avons donc normalis s par un facteur 1 19 Ce r solveur comporte deux heuristiques d num ration la plus importante tant la possibilit d ordonner dynamiquement les variables par rapport au nombre de contraintes dans lesquelles elles se retrouvent clp B FD utilise par contre tout simplement un ordre
123. ately and linked by the loader to provide a Unix executable A prolog file is a module It is possible and recommended to split a big application into several little modules Each module has its own independent predicate name space This is an important feature for the development of larger programs The module system of wamcc Prolog is procedure based This means that only the predicates are local to a module whereas terms are global The module system is flat not hierarchical so all modules are visible to one another No overhead is incurred on compiled calls to predicates in other modules Each predicate in the Prolog system whether built in or user defined belongs to a module By default a predicate is generally only visible in the module where it is defined i e private predicate except if this predicate has been declared as public see directive public below Public predicates are visible in every modules A public predicate can be locally redefined in any module There is a particular module the main module corresponding to the module containing the main program see directives main below At run time only public predicates and private predicates defined in the main module will be visible under the top level wamcc also supports dynamic predicates which are interpreted see section 1 3 8 The following directives are specially handled at compile time public Pred Arity Pred Arity This directive specifies that ea
124. ateur est lui m me crit en Prolog e un compilateur C acceptant l inclusion d instructions assembleurs et sa librairie de fonctions standard Le compilateur GNU gcc convient tout fait d autant plus qu il est disponible pour pratiquement toute architecture e un diteur de liens fourni avec tout syst me d exploitation e la librairie associ e wamcc CHAPITRE 3 IMPLANTATION DE WAMCC 62 La figure 5 sch matise les diff rentes tapes n cessaires l obtention d un ex cutable partir des modules Prolog mod mod Ce sch ma peut s enrichir ais ment pour int grer au moment de l dition de liens du code crit en C ou en d autres langages Pour faciliter le d veloppement d une application un programme est fourni avec wamcc permettant de g n rer un fichier de d pendance pour cette application L utilitaire make d Unix peut alors prendre en charge la reconstruction de l application en ne re compilant que les parties n cessaires 3 3 2 Gestion des piles pages liberees pages initialement allouees Figure 6 disposition des piles en m moire Il est indispensable de contr ler l accroissement des piles de mani re pr venir l utilisateur lorsque l une d entre elles d borde Ce contr le est g n ralement effectu par le logiciel soit chaque fois qu une allocation est n cessaire potentiellement plusieurs fois par clauses pour le heap soit l entr e de chaque clause
125. ax Y ti to E x x inf ti inf t2 sup t1 sup t ty to lt gt imf t suplta sup t inf t2 Tableau 32 d finition de inf t et sup t Intuitivement inf t resp sup t repr sente la plus petite resp grande valeur que t puisse prendre Proposition 6 3 correction de inf et sup CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 140 Preuve triviale par induction sur les termes et de par les propri t s de d croissance des op rations arithm tiques x O D finition 6 6 Soit A resp M la fonction de DomSyn dans lui m me pr sent e en table 33 Par abus de notation on d finit A c resp M c pour toute contrainte c X in r comme la contrainte X in A r resp X in M r Dar 0 m0 ti t sup t inf te inf t sup te dom Y A min Y max Y dom Y ra amp A r1 A r2 M r M r2 M r A r a EX P Alr ct Mr ct Tableau 33 d finition de A r et M r Proposition 6 4 A r est un domaine anti monotone et M r est un domaine monotone Preuve triviale par induction structurelle sur les domaines et du fait de la proposition 6 3 O Proposition 6 5 VS r A r s rs C M r s Preuve triviale par induction structurelle sur les domaines O Corollaire 6 1 correction VS c SE Alc gt S Esc Preuve il suffit de montrer que Sty X in A r gt Sty X inr C est dire VS SES dom
126. b have the same behavior Finally g 1ink is not expansive at all neither for the memory nor for the execution time point of views See below about array re definitions g read GVarName Term inline predicate Unifies Term with the associated value of GVarName See below about array readings g array_size GVarName Size inline predicate Unifies Size with the dimension an integer gt 0 of the array stored by GVarName Fails if GVarName is not an array The predicates g assign 2 g_assignb 2 and g_link 2 define an array when Term is a compound term with principal functor g array 1 2 Then an array is assigned to GVarName backtrackable assignment or not depending on the predicate used There are 3 forms for the term g_array 1 2 g array Size if Size is an integer gt O then defines an array of Size elements which are all ini tialized with the integer 0 w r t to the predicate used g assign 2 g assignb 2 or g link 2 g array Size Term As above but the elements are initialized with the term Term instead of 0 Note that Term can contain other array definitions allowing thus for multi dimensional arrays g array ListOfElements As above if ListOfElements is a list of length Size except that the elements of the array are initialized w r t the elements of the list ListOfElements which can contain other array definitions The compound term with principal functor g array_extend 1 2 can can be used similarly to
127. be bound to an integer and does not check its type The range of integers are 2728 2728 1 Floats are not supported in this version ANNEXE I MANUEL D UTILISATION DE WAMCC 229 X X X negative of X X Y sum of X and Y X Y difference of X and Y Xx Y product of X and Y X Y integer quotient of X and Y X mod Y integer remainder after dividing X by Y X Y bitwise and of X and Y X Y bitwise or of X and Y X Y bitwise exclusive or of X and Y X bitwise not of X X lt lt Y X shifted left by Y places X gt gt Y X shifted right by Y places X a list of one number X evaluates to X Arithmetic expressions are just Prolog terms If you want one evaluated you must pass it as an argument to one of the following built in where X and Y stand for arithmetic expressions and Z for some term Z is X inline predicate X is evaluated and the value is unified with Z X Y inline predicate X is equal to Y X Y inline predicate X is not equal to Y X lt Y inline predicate X is less than Y X lt Y inline predicate X is less than or equal to Y X gt Y inline predicate X is greater than Y ANNEXE I MANUEL D UTILISATION DE WAMCC 230 X gt Y inline predicate X is greater than or equal to Y 1 3 3 Term Management Term Comparison The predicates make references to a standard total ordering which is as follows e Variables in standard order roughly oldest first e Integers in numeric orde
128. ber Chars Interconverts Number with the corresponding list of characters Chars name X Codes ANNEXE I MANUEL D UTILISATION DE WAMCC 233 name X Codes If X is an atom equivalent to atom_codes X Codes If X is a number equivalent to number_codes X Codes If X is uninstantiated if Codes can be interpreted as a num ber X is unified with that number otherwise with the atom whose name corresponds to Codes Term Processing Termi Term2 inline predicate Unifies Termi and Term2 functor Term Name Arity functor Term Name Arity inline predicate The principal functor of term Term has name Name and arity Arity where Name is either an atom or provided Arity is 0 an integer Initially either Term must be instantiated or Name and Arity must be instantiated to respectively either an atom and an integer in 0 255 or an atomic term and 0 In the case where Term is initially uninstantiated the result of the call is to instantiate Term to the most general term having the principal functor indicated arg ArgNo Term Arg inline predicate Initially ArgNo must be instantiated to a positive integer and Term to a compound term The result of the call is to unify Arg with the argument ArgNo of term Term The arguments are numbered from 1 upwards Term List Term List inline predicate List is a list whose head is the atom corresponding to the principal functor of Term and whose tail is a list
129. bool en dans la WAM L extension propos e est donc r ellement minimale et notre exp rience nous a montr que quelques jours suffisaient pour incorporer ce solveur bool en un compilateur Prolog dont les sources sont bien connus wamcc en l occurrence La table 30 pr sente le code g n r pour la contrainte utilisateur and X Y Z 5 5 4 La proc dure de consistance Cette proc dure doit assurer la consistance locale du store Elle r p te les tapes suivantes jusqu ce que la file de propagation soit vide ou qu un chec soit d tect Soit X Bualue la paire couramment point e par BP CHAPITRE 5 CONTRAINTES BOOL ENNES 130 b_load_value X 0 X 0 X 0 adresse b_load_value X 1 X 1 X 1 adresse b_load_value X 2 X 2 X 2 adresse b install and tell cstr2 X 2 1 X 0 1 X 1 1 X Y b_install_and_tell_cstri X 2 0 X 0 0 X b_install_and_tell_cstri X 2 0 X 1 0 Y b_install and tell cstr1 X 0 1 X 2 1 Z b_install_and_tell_cstr2 X 0 0 X 1 1 X 2 0 Y Z b_install_and_tell_cstri X 1 1 X 2 1 Z b_install_and_tell_cstr2 X 1 0 x 0 1 X 2 0 X Z proceed retour Prolog Tableau 30 code g n r pour and X Y Z SI X est un entier celui ci doit tre gal a Bvalue e X Bvalue succ s V rifEntier e X 4 Bvalue chec EchecEntier sinon X une variable bool enne est instanci l entier Bvalue R ducDomaine et toutes les contraintes d pendant de X
130. c tions de ces variables Nous verrons pr cis ment dans cette th se comment compiler des contraintes de haut niveau en contraintes primitives comme bien str les quations ou in quations lin aires et non lin aires aussi d ailleurs mais aussi les contraintes symboliques Nous verrons galement qu il est possible de d finir un certains nombre d optimisations globales pour le traitement de la contrainte X in r pour viter les propagations inutiles Du fait de l architecture RISC toutes les contraintes de haut niveau b n ficieront de ces optimisations et nous montrerons qu un tel r solveur est tr s efficace meilleur en tout cas que les r solveurs bo tes noires actuels CHAPITRE 1 INTRODUCTION 6 En r sum un r solveur de contraintes suivant l approche RISC se d compose en deux parties un pr processeur traduisant les contraintes complexes visibles l utilisateur en contraintes primitives et un r solveur proprement dit traitant uniquement les contraintes primitives 1 3 Op ration Ask et contraintes conditionnelles Abordons maintenant le probl me de l extensibilit des r solveurs de contraintes La dif ficult principale lorsqu on d finit des contraintes complexes comme par exemple les con traintes symboliques propos es par le langage CHIP atmost etc est de sp cifier un con tr le sur la propagation de contraintes et en particulier de pr ciser que certaines contraintes ne doivent tre c
131. c les autres r solveurs existants utilisant des m thodes et algorithmes compl tement diff rents La r solution des contraintes bool ennes est un probl me d j ancien mais qui nourrit des recherches toujours tr s actives De nombreuses m thodes ont t d velopp es soit g n rales soit pour des types particuliers de formules Il y a quelques ann es l utilisation de techniques de propagation locale a t propos e par le langage CHIP qui en fait dispose de deux r solveurs bool ens l un bas sur l unification bool enne et l autre utilisant la propagation locale et r utilisant certaines proc dures du r solveur sur les domaines finis Il s avere en fait que le r solveur utilisant la propagation est bien plus efficace que l autre tel point que dans CHIP il est le r solveur par d faut pour les bool ens Il est en fait tr s facile de d finir les op ration bool ennes de base et o et non en termes de contraintes primitives Le r solveur bool en est r duit moins de 10 lignes de code C est dire 3 d finitions de contraintes en termes de X in r Notons en outre que cet encodage se fait un niveau plus bas qu une simple transformation des contraintes ool ennes en expressions arithm tiques par exemple et qu on peut ainsi esp rer une plus bool thm t le et qu t l grande efficacit En outre ce r solveur est ouvert l utilisateur qui peut ajouter de nou velles contraintes pour i
132. cate concerned must currently be dynamic retract 1 may be used in a non determinate fashion i e it will successively retract clauses matching the argument through backtracking ANNEXE I MANUEL D UTILISATION DE WAMCC 240 reinit_predicate Name Arity Erase all clauses of the predicate specified by Name Arity The predicate definition is retained abolish Name Arity Erase all clauses of the predicate specified by Name Arity The predicate definition is also erased listing Name Arity Lists the interpreted predicate s specified by Name Arity Any variables in the listed clauses are internally bound to ground terms before printing consult Files Consults source files Files is either the name of a file or a list of filenames Note that it is possible to call consult user and then enter a clauses directly on the terminal ending with D When a directive is read it is immediately executed Any predicate defined in the files erases any clauses for that predicate already present in the interpreter Recall that a static predicate cannot be redefined by an interpreted predicate File Files shorthand for consult File Files 1 3 9 All Solutions When there are many solutions to a problem and when all those solutions are required to be collected together this can be achieved by repeatedly backtracking and gradually building up a list of the solutions The following built in predicates are provided to automate this
133. ch Pred Arity is a public predicate dynamic Pred Arity Pred Arity This directive specifies that each Pred Arity is a dynamic predicate see sec tion 1 3 8 for dynamic code facilities main main Modules The main module will contain the C funtion main ANNEXE I MANUEL D UTILISATION DE WAMCC 218 main Modules Stacks This directive specifies the current module is the main module Modules is the list of needed modules omitted if there are no other modules Stacks is a list of stack parameters of the form stack Name EnvVarName Size Name is the stack name see section 1 4 EnvVarName is the name of the environment variable to consult at run time to read the size of the stack If EnvVarName is the empty atom ie gt no environment variable will be consulted at run time for this stack Size is the default stack size in Kbytes if the variable EnvVarName is not defined at run time If there is not any definition for a stack stack_name the default environment variable is stack_nameSZ in upper case see also section 1 2 4 Note that other directives are not executed at compile time but they are compiled into special code which will be executed at run time More precisely at run time all directives of each module defined in Modules are executed then the directives of the main module are executed When the main module is compiled a directive is added to invoke the top level see top_level 2
134. character is to print it The character and introduce a control sequence To print a or a repeat it The general format of a control sequence is NC The character C determines the type of the control sequence N is an optional numeric argument An alternative form of N is implies that the next argument in Arguments should be used as a numeric argument in the control sequence The following control sequences are available a The argument is an atom The atom is printed without quoting Nc The argument is a number that will be interpreted as a character code N defaults to one and is interpreted as the number of times to print the character Nd The argument is an integer N is interpreted as the number of digits after the decimal point If N is O or missing no decimal point will be printed ND The argument is an integer Identical to Nd except that will separate groups of three digits to the left of the decimal point Nr The argument is an integer N is interpreted as a radix N should be gt 2 and lt 36 If N is missing the radix defaults to 8 The letters a z will denote digits larger than 9 NR The argument is an integer Identical to Nr except that the letters A Z will denote digits larger than 9 Ns The argument is a list of character codes Exactly N characters will be printed N defaults to the length of the string i The argument which may be of any type is ignor
135. charge la valeur du fpi me param tre dans T t min fd_ind_ T t fv max min Max charge le de la fvi me variable dans T t fd_ind_min_max T tmin T tmax fv charge le min et le max de la fvi me variable dans T tmin et T tmax fd_ind_dom R r fv charge le domaine de la fvz me variable dans R r CHAPITRE 4 IMPLANTATION DE CLP FD 87 fd_dly_val T t fv lab_else si la fvi me variable est un entier sa valeur est copi e dans T t sinon le contr le est donn au code d tiquette lab_else Evaluation du domaine d not par r La compilation de r est classique et similaire a celle des expressions arithm tiques i e dirig e par la syntaxe L arbre syntaxique est parcouru des feuilles vers la racine chaque feuille et chaque noeud donnant lieu a une instruction sp cifique Pour les feuilles correspondant des param tres ou des termes in dexicaux des instructions de copie sont produites pour initialiser les registres appropri s a partir de ceux charg s par la partie pr c dente Le code final peut b n ficier d un optimiseur de registre fd_interval_range R r T tmin T tmax ex cute R r T tmin T tmax union U saf Jan R r1 ex cute R r R r i Jate N inter fd_comp1 R r ex cute R r 0 infinity Rir fd_compl_of_singleton R r T t ex cute R r 0 infinity T t add pointwise sub 7 pointwise fd_range_ _term R r T t ex cute R r RL
136. che standard Le pr dicat p X Y Z a pour lecture d clarative X Y Z un entier n tant cod par le terme s 0 Le but lanc est p s 0 0 R p A B R qui peut se lire comme soit R le r sultat de 1 0 quelles sont les valeurs A et B telles que A B R Remarquons que la structure r cursive de l arbre se manifeste par le sens que l on peut donner au sous arbre associ chaque noeud ind pendamment de ses anc tres En effet partir d un noeud occurrence de lt r 6 b gt l on obtient un arbre de recherche standard pour le but b De plus la strat gie standard i e de Prolog consiste en un parcours en profondeur d abord et de gauche droite de l arbre de recherche Ce parcours qui induit un ordre sur les so lutions devient ais ment automatisable gr ce une pile que nous appellerons pile de CHAPITRE 3 IMPLANTATION DE WAMCC 27 contr le ou pile locale Cette pile contiendra les triplets correspondants aux tats de re cherche Lorsqu un chec survient aucune t te de clause ne s unifie avec le litt ral courant la proc dure de backtraking devra d piler un certain nombre d l ments jusqu l obten tion d un triplet pour lequel il existe une alternative En vue de diminuer cette recherche donc d acc der en temps constant l l ment susceptible de fournir une nouvelle solution il est possible de d terminer lors de l avanc e si le noeud courant donnera lieu un re tou
137. ctu mais de mani re plus simple et plus efficace Nous montrerons galement que la plupart des utilisations de la disjonction constructive font partie de ce cas particulier 7 4 1 Un exemple simple Nous allons consid rer le fameux puzzle des cinq maisons de Lewis Carroll longtemps utilis comme benchmark dans les communaut s Prolog et PLC L nonc du probl me CHAPITRE 7 CONTRAINTES COMPLEXES 164 met en jeu cinq personnes vivant dans cinq maisons avec diff rentes professions nationa lit s animaux favoris et boissons favorites Le probl me consiste a trouver les affectations personne maison profession nationalit animal boisson v rifiant les quatorze faits qui d crivent le probl me La formulation de ce probl me en PLC cf five 67 utilise cinq variables pour chaque personne pour encoder sa maison sa profession sa nationalit son animal et sa boisson favoris Les faits donnent lieu des contraintes d galit ou d in galit sur ces variables Trois de ces faits expriment une disjonction entre contraintes Par exemple le fait la maison du norv gien est c t de la maison bleue signifie que la maison du norv gien peut tre gauche ou droite de la bleue Cela m ne une contrainte de la forme N5 C4 1v N5 Ca 1 Ce qui conduit la d finition du pr dicat plus_or_minus Exemple 7 9 plus or minus X Y C X Y C plus_or_minus X Y C X Y C Un tel pr dicat cr e
138. d_min_max T 0 T 1 fv 1 fd_term_parameter T 2 fp 2 fd_term_add_term T 0 T 2 fd_term_add_term T 1 T 2 fd tell _interval T O T 1 fd_proceed 3 l ments X Y C X est fv 0 Y est fv 1 C est fp 2 installe cstr_1 ex cute cstr_1 installe cstr_2 ex cute cstr_2 retour Prolog utilise min Y et max Y retour d installation min Y et max Y C min Y C max Y C X in min Y C max Y C retour d ex cution Tableau 8 fragment du code g n r pour x y c CHAPITRE 4 IMPLANTATION DE CLP FD 89 4 1 4 Op ration Tell Comme nous l avons vu pr c demment la fonction associ e chaque contrainte X in r commence par valuer le domaine d not par r avant d appeler la fonction Tell Celle ci doit mettre jour X en fonction de r et en cas de modification du domaine de X doit r veiller toutes les contraintes d pendant de X Les grandes lignes de cette op ration peuvent tre r sum es comme suit Si X est un entier celui ci doit appartenir r e XEr succ s V rifEntier e X gr chec EchecEntier sinon X est une variable dont le domaine courant est ry soit r rory e r chec EchecDomaine e r ry ie rx Cr succ s V rifDomaine e sinon le domaine de X est remplac par r R ducDomaine C est cette occasion que X peut devenir clos La r duction du domaine de X est alors r percut e toutes les contraintes d pendant de X par la phase de pro
139. de devoir ins rer l instruction de branchement dans l assembleur De plus les instructions de branchement RISC ne peuvent acc der qu du code relativement proche de l instruction courante le d placement par rapport celle ci tant cod sur quelques bits Or nous pouvons acc der du code potentiellement tr s loign du fait de la gestion des modules L instruction d appel de fonction n est pas soumise cette limitation Enfin signalons que le fait que ce soit le C qui g n re l instruction d appel de fonction lui permet d optimiser le delay slot pour tirer profit du pipe line Rappelons que sur certains processeurs RISC l instruction se trouvant apr s un branchement ou un appel de fonction delay slot est toujours ex cut e car elle a d j t charg e dans le pipe line Les compilateurs essayent d utiliser cette particularit en d pla ant une instruction pertinente apr s le branchement Quand cela n est pas possible c est l instruction vide nop qui est mise Remarques r capitulatives e d sormais les branchements directs s effectuent aussi rapidement que possible puis qu ils donnent lieu a de vraies instructions de branchement de l assembleur de la machine o dans le cas d un RISC une instruction d appel de fonction de m me co t e l appel extra modules n est pas plus co teux que l appel intra modules e compar e aux approches pr c dentes o tous les pr dicats d un
140. de l entr e 16 Un autre inconv nient provient du fait que beaucoup de calculs redondants sont faits par toutes les contraintes Par exemple dans A B D F G H T si D est modifi alors F G H T est valu 2 fois pour mettre jours A et B et A B D est valu 4 fois pour mettre jour F G H et T Enfin le dernier inconv nient provient du fait que toute modification d une variable entra ne une r valuation de toutes les autres variables Or bien souvent la modification du domaine d une variable n a aucune r percussion sur les autres variables du fait de incompl tude de arc consistency Ne pouvant d tecter cela ce sch ma de compilation proc de alors n 1 r valuations inutiles Consid rons par exemple un sch ma de propagation par lookahead partiel ne propageant que les bornes et la d composition ci dessus dans le store F in 0 15 G in 0 15 donnant F in 0 15 G in 0 15 H in 02 2006 CG CH Supposons maintenant que la contrainte F in 5 15 soit ajout e au store cg est alors r valu e et fournit 5 30 qui contient d j le domaine courant de G qui n est donc pas r duit cz est son tour r valu e et fournit 10 20 qui contient d j le domaine de H qui n est donc pas non plus modifi Et ainsi de suite pour toutes les autres variables Tous ces d fauts nous ont fait adopter approche suivante dans clp FD 7 1 3 Compilation en appel de sous contraintes de libra
141. dition pour l adapter aux contraintes utilisateur exprim es comme conjonctions de contraintes X in r En effet soit une contrainte utilisateur c d finie comme Ch Cris Or alors n n E c A Ela Eme V E rc i l i 1 e remarquons que dans bien des cas E c peut tre simplifi si les contraintes c com posant c sont quivalentes c est le cas de nos deux exemples Aussi est il possible de choisir comme condition pour c n importe laquelle des conditions pour c ou m me leur disjonction Notons toutefois qu une telle d tection d quivalence n est pas tri viale Nous montrerons en section 6 4 1 comment d tecter certaines quivalences des formules E c permettant la m me simplification de E c Quen est il toutefois de la satisfaction d une contrainte c qui n est pas anti monotone ce qui est g n ralement le cas L id e consiste d river de cette contrainte c une approxi mation sous la forme d une contrainte c anti monotone telle que sa satisfaction implique celle de c La d tection de sa satisfaction se fait alors gr ce la proposition 6 2 Les 3 approximations suivantes se distinguent par la mani re de d finir c 6 2 Approximation 1 test la cl ture Dans cette approximation c correspond tout simplement c mais le test de d tection n est effectu qu partir du moment o c est anti monotone Pour cela il suffit d attendre que c soit totalement instanci e i e qu elle d
142. dom dly_val Ces instructions sont utilis es quand la contrainte point e par CF utilise le min ou le max ou les 2 de la fvi me variable Un nouvel l ment est ajout dans la liste correspondante la fvi me variable fd_proceed rend le contr le l adresse point e par CC CHAPITRE 4 IMPLANTATION DE CLP FD 86 Instructions d ex cutions des contraintes Pour chaque contrainte X in r une proc dure est charg e de son re calcul Celle ci peut etre d compos e en 4 phases e chargement des parametres des termes et domaines indexicaux dans les registres de travail e valuation du domaine d not par r e appel de la fonction Tell pour mettre a jour X en fonction de r e retour l appelant par fd_proceed cf ci dessus chargement des param tres des termes et domaines indexicaux La premi re partie du code d ex cution d une contrainte consiste extraire de l environnement point par AF les arguments utilis s pour les charger dans des registres de travail Le fait que tout les chargements aient lieu au d but de la fonction permet d optimiser l utilisation des registres et d viter les chargements inutiles Par exemple si une contrainte utilise dom X et min X seul le domaine de X doit tre charg puisqu il contient d j le min de X fd range parameter R r fp charge le domaine point par le fpz me param tre dans le registre R r fd_term_parameter T t fp
143. e CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 18 Remarquons que la contrainte indexicale X in min Y 40 fournit une contrainte valu e dans le store courant ex X in 5 40 et reste telle quelle pour propager les r ductions futures de Y e X in dom Y 1 est satisfaire avec un nouveau store x in 3 20 amp 6 8 11 101 amp dom Y 1 Y in 5 7 10 100 soit x in 6 8 11 20 amp dom Y 1 Y in 5 7 10 100 Voyons alors comment d finir une contrainte de haut niveau appel e contrainte utilisateur partir de contraintes X in r La contrainte X in r doit tre vue comme un moyen de sp cifier le sch ma de propagation En fait X in r permet de sp cifier quoi propager Par exemple les contraintes X Y C et X Y Z peuvent se d finir comme suit Exemple 2 1 x y c X Y C X in min Y C max Y C Y in min X C max X C Exemple 2 2 xty z X Y Z X in min Z max Y max Z min Y in min Z max X max Z min X Z in min X min Y max X max Y lt Dans cette version seules les modifications des bornes des variables sont propag es on parle de partial lookahead Donc si un trou appara t au milieu d un domaine ce trou n est pas propag En ce qui concerne X Y C il serait possible de propager toute modification du domaine i e on parle alors de full lookahead gr ce la d finition suivante Exemple 2 3 x y c X Y C X in dom
144. e dans lequel il appara t jusqu ce que X soit clos Nous tudierons en section 6 un moyen plus l gant pour r aliser un tel retardement gr ce l op ration Ask 2 3 3 S mantique de X in r et op ration Tell L op ration Tell permet d ajouter une contrainte au store courant Sa s mantique d nota tionnelle est pr sent e en table 2 La fonction 7 X in r traduit la s mantique de l op ration Tell de X in r dans un store S Celle ci consiste modifier X et r valuer les contraintes d pendant de X pour assurer la consistance i e propagation La premi re phase est assur e par la fonction s mantique interm diaire 7 X in r et la seconde est assur e par l utilisation d un CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 20 DomSyn domaines syntaxiques Contr Store Store TermSyn termes syntaxiques Contr Store Store Dom domaines DomSyn Store Dom N entiers naturels TermSyn Store N Contr contraintes X in r Store stores fix As Ucesurey T e let d E r s insUfz in d Uf x inr t Sn E to Ss s lookup_range I cur_domain X s ri s U re s ri s n re s 0 infinity r s E r s amp ct s E r s amp ct s E r s x amp ct s E r s ct s 3 HMM MH 3 3 3 E E Er E E E 3 M n infinity s infinity lookup_ter
145. e d pendances Chaque l ment des listes de d pendances encode une contrainte ly lt 1 l et contient les informations suivantes c f figure 17 e l adresse de variable contrainte i e Xo e la valeur qui faudra lui affecter i e Bvalueg e dans le cas n 2 l adresse de l autre variable impliqu e e dans le cas n 2 la valeur que devra v rifier l autre variable impliqu e Informations sur Bvalue_2 l autre variable ae si Bloc2_Flag Tell_Bvalue Tell_Blv_Adr Next_Record 7 Valeur que doit verifier l autre variable iz adresse de l autre variable H cas n 2 1 valeur a assigner adresse de la variable contrainte i RW pointeur sur contrainte suivante Figure 17 repr sentation interne d une contrainte dans les listes de d pendances Notons que dans le cas n 2 un enregistrement est n cessaire dans la liste de d pendance appropri e de X r f ren ant l autre variable X3 ainsi que dans la liste appropri e de Xo r f ren ant X Cette duplication d information est tr s limit e puisqu elle se r duit un surco t de 2 mots La solution alternative n cessiterait d utiliser un mot de plus pour stocker un compteur du nombre de variables La figure 18 montre un instantan de la m moire o apparaissent les structures de donn es impliqu es dans la contrainte Z lt X Y qui pourrait tre utilis e pour d finir xor X Y Z Je
146. e d terminisme que pr c demment En effet cette technique non seulement complique la compilation mais elle impose que les environnements soient cr s vers le haut c est dire que E pointe la base de l environnement dans lequel l espace pour les variables permanentes est allou des plus utilis es au moins utilis es Un registre suppl mentaire NB_Y indiquant le nombre de variables permanentes encore en activit doit toujours tre initialis avant l appel d un but Dans un souci d homog n it les points de choix sont galement repr sent s vers le haut et doivent stocker l arit du pr dicat ayant donn lieu une alternative i e nombre de registres A i sauvegard s Ainsi lorsqu un nouvel environnement ou un point de choix doit tre cr l adresse physique a de l alloca tion s obtient par CHAPITRE 3 IMPLANTATION DE WAMCC 36 Si B gt E Alors a B ARITY B Sinon a E NB_Y Finsi Nous avons pr f r ne pas implanter cette g n ralisation et repr senter les environnements et les points de choix vers le bas E et B pointant le premier mot libre apr s le bloc comme tout pointeur de pile qui se respecte Ainsi le calcul de l adresse d allocation s obtient simplement par a max B E En pile de restauration Nous ne pouvons rien r cup rer en dehors du backtracking puisque cette pile contient juste ment les informations n cessaires pour le prochain retour arri re L occu
147. e de X in r et op ration Tell 2 3 4 La relation de satisfaction 3 Implantation de wamcc 24 3 1 3 2 3 3 La machine abstraite de Warren 24 3 1 1 La pile locale ou de conbrole hs a LUE ee ee ee es 25 3 1 2 La pile de restauration ou trail pra ar ds 28 3 1 3 La pile globale ou lealtad a db a Tee ae 29 3 1 4 La repr sentation des termes 30 los RG ISERE AA A 32 3 1 6 Economie et r cup ration m moire 33 3 1 7 Le jeu instructions e din mean Lens ans eur LS 38 Ex cution du code WAM traduction vers C 48 3 2 1 Cahier des charges 2 sas 2 ed A AE EN Ne 48 3 2 2 M thodes classiques pour ex cuter la WAM 49 3 2 3 La solution adopt e traduire Prolog vers C 50 3 2 4 Le probl me du contr le de Prologen C 51 3 2 5 La m thode Janus aci ree AA a rn a a 52 340 La m thode KEL paberi AA AA 2h 53 3 2 7 La m thode Erlang A A ola de ee 54 3 2 8 L method NAMES ATT a E a a i i 56 Caract ristiques de wamcc o o noaoo a a a ee AS MN E 61 3 3 1 Processus de compilation 61 3 3 2 Gestion des piles sc s aide ahah A te de Mon de e hd 62 3 3 3 Fichiers de configuration 63 3 3 4 Gestion de la modularit 65 3 4 Eval tion deSmCE us a a a eal a es 3 4 1 Les fonctionnalit s du syst
148. e de contraintes r sultant satisfait les relations math matiques encod es par le r solveur de contraintes La encore une analyse de cas simple suffit a prouver ce r sultat Par exemple si and X Y Z Y 1 Z X s applique alors Z lt X lt ZxY 1 Y est v rifi dans l ensemble de contraintes r sultant o 5 4 Evaluation des performances de clp B FD 5 4 1 Le jeu de benchmarks Pour valuer les performances de clp B FD nous avons utilis des programmes bool ens traditionnels e schur le lemme de Schur Ce probl me consiste trouver un coloriage en trois couleurs des entiers 1 n tel qu il n y ait pas de triplet monochrome x y z tel que x y z Le programme utilise 3 X n variables pour indiquer pour chaque entier sa couleur Ce probl me a une solution ssi n lt 13 e pigeon le probl me des pigeons Il consiste mettre n pigeons dans m cages avec au plus un pigeon par cage La formulation bool enne utilise n x m variables pour indiquer pour chaque pigeon le num ro de sa cage Il y a videmment une solution ssi n lt m CHAPITRE 5 CONTRAINTES BOOL ENNES 117 e queens le probl me des reines Il faut placer n reines sur un chiquier n x n de telle mani re qu aucune reine n en attaque une autre La formulation bool enne utilise n X n variables pour indiquer pour chaque case de l chiquier s il y a une reine dessus ou non e ramsey le probl me de Ramsey Trouver un coloria
149. e des bool ens en clp FD clp B FD 115 5 4 Evaluation des performances de c1p B FD 116 5 4 1 Le jeu de benchmarks lis a Dati yes 116 5 4 2 clp B FD et CHIP aoaaa e al del aa qua ore ra de 117 5 4 3 clp B FD et les autres r solveurs o o 118 5 5 clp B un r solveur d di pour les bool ens 121 5 5 1 La contrainte primitive l lt heslo ca a ae y data 122 5 5 2 D finition des contraintes bool ennes 124 5 5 3 Extension de la WAM 0 22 OS da AR AR OA 124 5 5 4 La proc dure de consistance 129 5 5 9 valuation de cIp B gt 422006 Se AS Eee ee eo 132 5o COMES IO a wg GR A AA e Geer ae hack 132 D tection de la satisfaction de contraintes 134 6 L Introduction s ias E A IAN Ne A te ae 134 6 2 Approximation 1 test la cl ture 242 2 4 240 0 Lg 137 6 3 Approximation 2 test sur les domaines 139 6 4 Approximation 3 test sur les intervalles 142 6 4 1 Equivalence des conditions suffisantes 145 Contraintes complexes 149 7 1 Contraintes arithm tiques lin aires 149 Wola Normalisation aigus the nine a dl A Oe 149 7 1 2 Compilation en code inline a ae ge a ne 150 7 1 3 Compilation en appel de sous contraintes de librairie 151 La Opera On es wi eae OG aes Soe Be My AN ee 152 7 2 1 Le probl me des s rie
150. e nouvelle contrainte est ajout e Cette absence d incr mentalit se retrouve au niveau du choix de l ordre sur les variables dont on a pr c demment dit l importance il n est pas vraiment possible d avoir dans les langages de contraintes des heuristiques complexes sur cet ordre Dernier inconv nient l impossibilit de ne calculer qu une seule solution au lieu de toutes 5 1 3 M thodes num ratives En gros ces m thodes qui incluent le c l bre algorithme Davis Putman consistent es sayer les diff rentes affectations possibles en instanciant incr mentalement les variables 0 ou 1 et en testant la satisfiabilit de mani re plus ou moins sophistiqu e L id e principale consiste donc construire implicitement ou explicitement un arbre de d cision CHAPITRE 5 CONTRAINTES BOOL ENNES 111 en instanciant les variables et en le parcourant par backtracking La consistance des con traintes bool ennes est test e des que leurs variables sont closes 56 et 51 d crivent des am liorations possibles de tels tests et 58 montre comment calculer des unificateurs prin cipaux de tous les mod les Afin d tre plus efficaces de nouvelles m thodes utilisent une forme clausale matricielle pour repr senter les contraintes bool ennes citons les vecteurs de bits de 51 et les matrices creuses de la premi re m thode de 59 In fine remarquons l encore la possibilit d agr menter ces m thodes d
151. e pigeons que de cages N gt M En effet cette m thode peut d duire rapidement que l in quation ne peut tre satisfaite La formulation purement bool enne que nous avons utilis e pour clp B FD n a pas d aussi bons r sultats pour les gros probl mes mais il est tr s facile en clp B FD d ajouter une contrainte non bool enne N lt M qui d tectera imm diatement l inconsistance car notre syst me est int gr dans un r solveur sur les do maines finis Notons que ceci serait impossible pour un r solveur purement bool en et ceci explique pourquoi nous n avons pas pu utiliser cette formulation dans nos comparaisons 5 5 clp B un r solveur d di pour les bool ens Dans la section pr c dente nous avons vu que les techniques de propagation locales of fraient une alternative satisfaisante pour r soudre efficacement des probl mes bool ens et CHAPITRE 5 CONTRAINTES BOOL ENNES 122 FAST93 clp B FD FAST93 Programme 2 21 clp B FD pigeon pigeon pigeon pigeon pigeon ramsey 10 1st 11 500 0 110 104 54 ramsey 12 1st 81 440 0 190 428 42 Tableau 27 clp B FD versus une m thode de R O temps en sec en particulier clp FD grace a sa primitive X in r Toutefois seul un ensemble r duit des possibilit s offertes par la primitive X in r furent n cessaires lors de la d finition de clp B FD Nous allons donc concevoir un r solveur sp cialis pour les bool ens que nous appellerons clp B bas su
152. e the following command will create the executable x_pp make f x mk x_pp 13 Built in Predicates 1 3 1 Input Output DEC 10 Prolog File Input Output The set of file manipulation predicates is inherited from DEC 10 Prolog The file user represents the terminal see File The file File becomes the current input seeing File File is unified with the name of the current input 5 pp stands for Prolog profile ANNEXE I MANUEL D UTILISATION DE WAMCC 224 seen Closes the current input and resets it to user tell File The file File becomes the current output telling File File is unified with the name of the current output told Closes the current output and resets it to user Characted Input Output nl A new line is started on the current output getO N N is the characted code of the next character read from the current input On end of file N is 1 get N N is the characted code of the next character that is not a layout characted read from the current input skip N Skips just past the next character code N from the current input N may be an arithmetic expression put N The character code N is output onto the current output N may be an arithmetic expression tab N N spaces are output onto the current output N may be an arithmetic expression ANNEXE I MANUEL D UTILISATION DE WAMCC 225 Input and Output of Terms read_line X Reads characters from the current input
153. e variable dont la d r f rence appartient l environnement courant Le chargement dans un registre argument de telles variables devra pr venir ce probl me en globalisant si besoin ces variables De telles variables sont qualifi es de dangereuses D finition 3 4 Une variable est dangereuse si elle est permanente et que sa premi re occurrence n est ni en t te ni dans une structure Un variable permanente dont la premi re occurrence est en t te ne peut tre dangereuse car l unification de la t te la liera avec une adresse inf rieure l environnement courant ou avec une constante De m me une variable dont la premi re occurrence est dans une structure de par la repr sentation des termes et du fait qu il ne peut y avoir de liaison du heap vers la pile locale ne pourra r f rencer une adresse de l environnement courant Warren a g n ralis l optimisation de l appel terminal par la technique du tassage con tinu trimming qui consiste en une r cup ration de l environnement au fur et mesure des appels des buts du corps de la clause En effet les variables permanentes n ont pas toutes la m me dur e de vie Une fois appel le but o elles figurent pour la derni re fois le mot qui leur est associ peut tre r cup r Toutefois cette technique pr sente peu d avan tages en comparaison des inconv nients qu elle induit d autant plus qu elle est assujettie la m me condition d
154. ecution Unifies Status with the returned status of Command system Command Passes Command to a new Unix sh process for execution system Command Status Passes Command to a new Unix sh process for execution Unifies Status with the returned status of Command 1 4 Debugger The debugger is based on the procedure box model as described in Chapter eight of Pro gramming in Prolog by W F Clocksin and C S Mellish Springer Verlag 1981 which is recommended as an introduction The proposed debug options are similar to those provi ded by SICStus or Quintus The debugger can be used for interpreted code i e dynamic predicates or for compiled code i e static predicates compiled with the dbg option The wam debugger is only available for static code compiled with the dbg2 option The basic built in predicates to control the debugger are as follows ANNEXE I MANUEL D UTILISATION DE WAMCC 250 debug Switches the debugger on showing spy points nodebug Switches the debugger off debugging Prints onto the terminal information about the current debugging state trace Switches the debugger on showing everything leash Mode Leashing Mode is set to Mode Mode is a list whose elements can be call exit fail or redo notrace Equivalent to nodebug 0 spy Name Arity Sets a spy point on the predicate whose principal functor is Name and arity is Arity nospy Name Arity Removes the spy point from the p
155. ed k The argument which may be of any type will be passed to write_canonical 1 q The argument may be of any type The argument will be passed to writeg 1 w The argument may be of any type The argument will be passed to write 1 Takes no argument Prints Nn Takes no argument Prints N newlines N defaults to 1 The argument is an atom and is considered as the current format indirection Example ANNEXE I MANUEL D UTILISATION DE WAMCC 228 format month year a january d 1994 will print month january year 1994 F Fis a C printf format for integers and atoms i e C integer and C strings Example format 02d 3 3s 4d 1 january 1994 will print 01 jan 1994 formata Format Arguments Like format 2 but Format is an atom and Arguments must be a list faster than format 2 pp clause Clause Pretty prints the clause Clause onto the current output used by listing 1 pp clause Head Body Like pp clause Head Body 1 3 2 Arithmetic Arithmetic is performed by built in predicates which take as argument arithmetic expres sions and evaluate them An arithmetic expression is a term built from the numbers variables and functors that represent arithmetic functions When an arithmetic expression is evaluated each variable must be bound to an arithmetic expression However if you use the option fast_math then the compiler assumes that each variable will
156. elles que toutes les contraintes X in r pour un donn soient quivalentes et que toutes les contraintes c portent sur le m me ensemble de variables X Xy Intuitivement cela correspond une disjonction de contraintes utilisateurs ayant toutes les variables en commun et o chaque contrainte utilisateur s exprime sous forme d une conjonction de contraintes X in r toutes quivalentes ex dans le cas pr c dent pour plus_or_minus D finissons alors F par rapport E comme suit Xi inari AR inr E C1 VW V Cn Y DO A NE ID Tr X INT Vous VX inr Kant ae ER F A are V Xp inr v V Xp inr AAA poes ior E et F sont deux formulations quivalentes du fait que dans E toutes les contraintes d une m me conjonction sont quivalentes Nous obtenons une formulation d terministe puisque l apect disjonctif est ramen au niveau du syst me de contraintes gr ce op ration d union Ainsi pour une variable X l on calcule le domaine associ chaque branche de la disjonction et c est Punion de ces domaines auquel X est contraint Ceci a donc pour effet de retirer de X les valeurs incompatibles quelle que soit l alternative Remarquons que le m canisme de propagation assure qu une telle union est r valu e aussit t qu un des composants est modifi procurant ainsi un comportement identique celui de la disjonction constructive Toutefois ce traitement est beaucoup plus simple donc plus efficace pu
157. emarquons que les contraintes de l exemple 6 1 sont anti monotones alors que celles de exemple 6 2 sont monotones cf section 2 3 Rappelons la d finition de la relation de satisfaction F sous jacente notre syst me de contraintes D finition 6 1 Un store S satisfait une contrainte c X in r ssic est vraie dans tout store S plus contraint que S i e S Hessi VS SES gt X9Crs L inconv nient de cette d finition est qu elle met en oeuvre des tests pour tout store plus contraint que le courant Elle ne peut donc tre utilis e de mani re efficace pour tester la satisfaction De plus du fait qu elle v rifie Struct ie S U c E c elle ne nous est d aucune utilit pour am liorer l optimisation 2 En effet pour cela il nous faut d tecter qu une contrainte c appartenant au store courant ne n cessite plus d tre r valu e car elle est satisfaite Or d apr s Struct du fait que c appartient au store c est satisfait Donc F n est pas apte capturer les tapes interm diaires que repr sentent les r ductions de domaines D finissons alors une relation de satisfaction plus forte D finition 6 2 Un store S satisfait fortement une contrainte c X in r not k ssi Sty ce ssi YS S ES gt Xs Cry D sormais nous ne consid rons plus Xs mais Xg Il reste toutefois le fait que cette d fi nition implique l valuation de r dans tout store plus contraint que S Toutefois si nous pou
158. ement A et potentiellement beaucoup d autres variables Ainsi cette m thode pallie tous les d savantages du sch ma de compilation en code inline Il y a videmment diff rentes mani res de d composer une contrainte arithm tique influen cant de mani re tr s significative sur les performances Intuitivement un d coupage trop fin engendre un tr s grand nombre de variables interm diaires donc un surco t important et un d coupage trop large r duit les possibilit s d optimiser les r veils inutiles que nous venons de montrer puisqu l extr me une d composition en 1 seule contrainte quivaut la compilation en code inline En outre moins la d composition est fine plus la librairie n cessaire est importante i e plus elle contient de sous contraintes Les mesures empi riques nous ont montr qu une bonne strat gie consiste en une d composition par groupes de 3 variables et ne n cessite pas une librairie trop importante 7 2 Op ration Ask L op ration Ask permet de lier l ex cution d un calcul la r ussite d une contrainte Cette op ration vue le jour dans le cadre des langages de programmation logique concurrents CHAPITRE 7 CONTRAINTES COMPLEXES 153 avec contraintes CC 60 61 on elle sert de m canisme de synchronisation entre agents Comme nous l avons d ja dit la contrainte X in r permet de sp cifier quelle information doit tre propag e L adjonction du Ask permet de sp cifier
159. entiers R i Ranges banc de registres domaines Le registre CC sert de registre de continuation lors de l appel des contraintes L ajout de ce registre permet de compiler une contrainte X in r comme un pr dicat inline ne donnant pas lieu un appel classique ce qui vite de devoir sauvegarder CP Le r le du registre STAMP est de num roter les points de choix pour viter les mises en trail multiples cf section 4 1 1 Les registres BP et TP pointent les extr mit s de la file de propagation Les registres AF et CF d signent respectivement l environnement courant et la contrainte courante cf section 4 1 2 Enfin un banc de registres T i pouvant stocker des termes des entiers et un autre pour les domaines R i sont utilis s pour value le domaine d not par r d une contrainte X inr 4 1 3 Jeu d instructions Le jeu d instructions de la WAM est tendu pour prendre en compte les contraintes gr ce trois groupes d instructions mis pour toute clause contenant au moins une contrainte e instructions d interfacage avec Prolog e instructions d installation des contraintes e instructions d ex cution des contraintes CHAPITRE 4 IMPLANTATION DE CLP FD 84 Instructions d interfacage avec Prolog Ces instructions ont charge de cr er l environnement dans lequel devront tre valu es les contraintes En effet toutes les contraintes d une m me clause se partagent un m me environnement
160. enu avec les autres r solveurs existants utilisant des m thodes et algorithmes compl tement diff rents La r solution des contraintes bool ennes est un probl me d j ancien mais qui nourrit des recherches toujours tr s actives De nombreuses m thodes ont t d velopp es soit g n rales soit pour des types particuliers de formules Il y a quelques ann es l utilisation de techniques de propagation locale a t propos e par le langage CHIP qui en fait dispose de deux r solveurs bool ens l un bas sur l unification bool enne et l autre utilisant la propagation locale et r utilisant certaines proc dures du r solveur sur les domaines finis Il s avere en fait que pour beaucoup d applications le r solveur utilisant la propagation est bien plus efficace que l autre tel point que dans CHIP il est le r solveur par d faut pour les bool ens Il est en fait tr s facile de d finir les op ration bool ennes de base et o et non en termes de contraintes primitives Le r solveur bool en est r duit moins de 10 lignes de code clp FD C est dire 3 d finitions de contraintes en termes de X in r Notons en outre que cet encodage se fait un niveau plus bas qu une simple transformation le contenu de ce chapitre a t publi dans 26 27 28 107 CHAPITRE 5 CONTRAINTES BOOL ENNES 108 des contraintes bool ennes en expressions arithm tiques par exemple et qu on peut ainsi esp
161. ers of the system whereas 1t is defined in clp FD as a user constraint 8 4 Slot Allocation Satisfying Capacity Constraints 8 4 1 A Small Example In the graphical representation Fig 21 4 flights are represented as connected segments Each segment corresponds to the crossing of a sector by a flight and is characterized by its length proportional to the crossing duration The capacity constraints are represented on time axis only 2 aircraft are allowed to enter S1 between times 2 and 3 and only 3 aircraft are allowed to enter S2 between times 3 and 5 Variables V represent the expected departure times of flights variables Vj are S1 and S2 the expected entry times S1 and S2 are the only constrained sectors so only those variables are necessary 8 4 2 clp FD Model The slot allocation problem under capacity constraints can be modelled using 3 types of constraints 1 Domain constraints on departure time variables we saw that a CLP variable cor responding to the departure time is associated with each flight in order to satisfy CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 181 capacity constraints the departure of a flight can be delayed up to 3 hours 180 min during our experiments Each departure time variable will have to satisfy the following constraint Vi im EET EET 1 maz_delay where V is the departure time variable of flight F and EET 1 is the constant cor responding to the requested
162. es propri t s que nous allons tout de suite noncer D finition 2 1 Un syst me de contraintes est un couple D tel que e D est un ensemble de formules atomiques clos par conjonction et quantification existentielle contenant les constantes vrai et faux usuelles 10 CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 11 e est une relation de satisfaction entre un ensemble fini de formules not S et une formule qui satisfait les r gles d inf rence suivantes classiques en calcul des s quents Si Fea S ca Fe S ckc Struct RS Cut Si S2 F 5 C1 C2 F Ske Ske ar f AE 1 2 EN Sa AQ k f SFe Ac S c1 F SF elt X A L E S 1X c1 FCz SF2X c Dans A X ne doit pas tre une variable libre dans S c2 e est g n rique C est dire que pour toute variable X de S et pour tout terme t Sit X clt X lorsque SH e Les syst mes de contraintes d finis comme ceci ont un certain nombre de propri t s int ressantes en particulier l ensemble de tous ces syst mes forme une cat gorie cart sienne ferm e c est dire close par produit cart sien et par exponentiation En g n ral lorsque l on voudra d finir un syst me de contraintes on ne d finira pas une relation de satisfaction ex nihilo mais on utilisera plut t une relation d j existante il faudra alors montrer qu elle satisfait les bonnes propri t s D finition 2 2 Un pr syst me de contraintes est un co
163. es appartient forc ment la clause courante renomm e c est donc celle ci qui enregistrera la liaison pour viter un ventuel empilement en trail Ainsi La liaison entre deux variables s effectue toujours de la plus r cente vers la plus ancienne i e de celle d adresse la plus grande vers celle d adresse la plus petite Nous verrons par la suite d autres avantages une telle r gle CHAPITRE 3 IMPLANTATION DE WAMCC 29 Trail Unbound Variable TOV Trail One Value valeur n Trail Multiple Values Trail for Function Call Figure 2 structures de la trail Dans la WAM originale la trail est une pile une seule entr e permettant de stocker les r f rences i e adresses des variables a r initialiser Dans un souci d extensibilit la trail que nous utilisons est a entr es multiples pour permettre d associer de l information aux adresses r initialiser En plus de la r initialisation classique d une variable Prolog l tat libre la trail de wamcc permet de r initialiser un ou plusieurs mots avec des valeurs sauvegard es Enfin un entr e fonction permet au moment des r initialisations d invoquer une fonction C Ces diff rentes structures sont distingu es au moyen de mots tiquet s c est dire qu un mot m moire est une paire de la forme lt tiquette valeur gt L tiquette indiquant le type de donn e cod par le champ valeur La figure 2 d taille les diff
164. es logiques multi valu es 72 Les contraintes pseudo bool ennes en particulier sont tres importantes car elles permet tent en g n ral une formulation plus simple et un lagage de l espace de recherche plus important Elles ouvrent aussi sur un domaine d application important en recherche op rationnelle Notons que les contraintes pseudo bool ennes sont imm diatement disponibles dans un syst me comme clp B FD 5 2 Contraintes bool ennes D finition 5 1 Soit Y un ensemble num rable de variables Une contrainte bool enne sur V est une des formules suivantes and X Y Z or X Y Z not X Y X Y pour X Y Z V U 0 1 La signification intuitive de ces formules est XAY Z XVY Z X Y et X Y On notera By l ensemble des contraintes bool ennes sur V et on utilisera par la suite B lorsque l ensemble de variables n a pas d importance particuli re D finissons maintenant les r gles de propagation de valeurs pour les contraintes boo l ennes D finition 5 2 Soit B la th orie du premier ordre sur les formules pr sent e en table 21 Notons qu il est facile d enrichir si besoin est ce syst me de contraintes par d autres contraintes bool ennes telles que zor ou exclusif nand non et nor non ou amp qui valence ou gt implication en donnant les r gles correspondantes Mais ces contraintes peuvent aussi tre d finies gr ce aux contraintes de base On peut alors d fin
165. es permanentes La r gle qui consiste lier la variable la plus r cente vers la plus ancienne d j vue pour limiter les variables mises en trail convient tout fait Etudions le probl me concernant la liaison d une variable du heap avec un l ment de la pile locale Si cet l ment est lui m me une variable alors la m me r gle que pr c demment peut r soudre le probl me la condition de placer physiquement le heap en dessous i e des adresses inf rieures de la pile locale Si l l ment lier n est pas une variable il y a simplement recopie de cet l ment du fait de la recopie de structure Enfin le cas o un sous terme est li une variable permanente est r solu en liant la variable permanente une nouvelle variable cr e sur le tas on parle alors de globalisation de la variable permanente Toutefois il subsiste un probl me lors de la r cup ration de l environnement En effet consid rons une variable permanente d adresse a telle que nous ne puissions nous assurer traduction de dangling reference CHAPITRE 3 IMPLANTATION DE WAMCC 35 de mani re statique i e la compilation qu elle ne sera pas libre lors de l appel du dernier but Si c est le cas le chargement dans un registre A i se traduira par A i lt REF a gt Or le mot d adresse a sera lib r et lors de l appel ALi contiendra une r f rence fant me Notons que c est galement le cas pour un
166. essit plusieurs ann es de d veloppement L id e de base de l architecture de clp FD pour le traitement des contraintes est d avoir une structure des donn es simple et homog ne pour les domaines de variables les con traintes et les environnements Il s agit donc d tendre l architecture de wamcc et en parti culier la WAM de mani re minimale Ceci est rendu possible par l approche RISC gr ce au traitement d un seul type de contrainte la contrainte indexicale X in r Ceci permettra un traitement uniforme des contraintes et un certain nombre d optimisations L une des particularit du langage clp FD est de ne pas seulement proposer un jeu d ins tructions pour compiler des contraintes primitives vers un langage de bas niveau une machine abstraite pour les contraintes sur les domaines finis qui serait mul mais de compiler ensuite ce langage interm diaire vers le langage C consid r ainsi comme un as sembleur g n rique On suit en cela naturellement l approche de wamcc qui compile Prolog vers C Ceci permet d optimiser bon nombre d op rations num riques par exemple et d utiliser les optimisations de tr s bas niveau des compilateurs C clp FD est ainsi un langage tr s efficace la partie Prolog car la PLC contient Prolog est aussi efficace que Quintus Prolog et pour ce qui est du traitement des contraintes sur les domaines finis ce langage est nettement plus rapide que CHIP de 2 10 fois
167. est possible de d terminer statiquement si sa premiere occurrence a conduit a une liaison avec le heap i e premi re occurrence de V en structure ou dans le cas d une temporaire premiere occurrence en corps du fait de la globalisation que cela a entra n unify_value V sinon nous devons viter de lier le heap vers la pile locale unify_local_value V e constante C unify_constant C e entier N unify_integer N e liste vide unify nil L instruction unify_variable V lie V S en mode READ et une variable libre em pil e sur le heap en mode WRITE L instruction unify_value V unifie V S en mode READ et empile V sur le heap en mode WRITE Dans ce cas il faut tre certain que cela n entrainera pas de liaison du heap vers la pile locale C est la raison d tre de l instruction unify local _value V qui en mode READ op re comme unify_value V et en mode WRITE commence par d r f rencer V si le mot obtenu est une variable libre permanente alors il est n cessaire de la globaliser sinon il y a empilement de ce mot et non pas de V sur le heap cf remarque au sujet de put_unsafe_value V A ci dessous 4Nous d signerons par S le mot contenu l adresse point e par S CHAPITRE 3 IMPLANTATION DE WAMCC 42 L instruction unify_void K permet d optimiser les variables singleton dans les structures En mode READ cette instruction ajoute K S en mode WRITE elle empile K variables libre
168. et F sont deux expressions arithm tiques lin aires et 4 lt lt gt gt 7 1 1 Normalisation La compilation d une contrainte arithm tique consiste tout d abord normaliser la con trainte D finition 7 2 La forme normale d une contrainte arithm tique E F est une expression de la forme S T o S a x 1 4ap p c et T aps k41 An Ip d Chaque x est une variable distincte chaque a est un entier gt 0 c et d sont deux entiers positifs et soit c soit d vaut 0 une partie du contenu de ce chapitre a t publi e dans 25 149 CHAPITRE 7 CONTRAINTES COMPLEXES 150 Par exemple la normalisation de 2x F 2xH 20 F 3 H G 10 donne F G H 10 Cette normalisation permet de regrouper les variables et d obtenir des approximations pour celles ci i e les intervalles min max plus pr cises que celles obtenues en traitant s par ment plusieurs occurrences d une m me variable En effet arc consistency donnant lieu des approximations en particulier avec un raisonnement sur les bornes si toutes les occurrences d une m me variable X sont trait es s par ment elles donnent lieu autant d approximations Au niveau de la variable X l approximation r sultante englobera toutes les approximations associ es aux diverses occurrences Par contre si toutes les occurrences de X sont factoris es la seule approximation r sultante est beaucoup moins grossi re Apr s c
169. et non pas V dans A Donc put_unsafe_value V A ne se comporte jamais comme put_value V A puisqu elle copie le mot d r f renc dans A alors que put_value V A y copie V Une variable dangereuse ayant n occurrences dans le dernier but n cessitera n instructions put_unsafe_value V A La premiere effectuera l ventuelle globalisation et les autres co pieront le mot d r f renc L instruction put constant C A initialise A avec la constante C et put_integer N A procede de maniere similaire L instruction put_nil A est une abr viation de put_constant A CHAPITRE 3 IMPLANTATION DE WAMCC 44 L instruction put_list A initialise A avec lt LST H gt et le mode WRITE de mani re ce que les instructions unify_ qui suivent recopient le Car et le Cdr sur le heap L instruction put_structure F N A effectue un traitement semblable Instructions de contr le Le r le de ces instructions est de g rer les appels et retours de proc dure ainsi que les environnements De par la d finition de variables permanentes les faits et les clauses dont le corps est r duit un seul but ne n cessitent pas d environnement De plus l appel du dernier but est distingu des autres dans la mesure o il doit se charger du retour En fait une instruction de retour existe pour les faits et nous pourrions consid rer l appel du dernier but comme un appel quelconque suivi de l instruction de retour mais ce serait moins pe
170. ette tape chaque terme normalis S et T est alors tri par ordre d croissant sur les coefficients de mani re ajouter les contraintes effectuant le plus grand lagage d abord Dans clp FD la normalisation et le tri sont faits la compilation i e statique ment plut t qu l ex cution i e dynamiquement Ceci dans un vident souci de rapidit Nous ne pouvons toutefois pas extraire autant d information puisque nous n avons aucune connaissance des liaisons dynamiques Sans aller chercher tr s loin une simple analyse de modes nous permettrait d mettre du code plus sp cialis en vitant de consid rer comme une variable DF ce qui se r v lera tre un simple entier partir d une forme normale il existe deux mani res de compiler les contraintes arithm tiques e compilation en code inline e compilation en appel de sous contraintes de librairie 7 1 2 Compilation en code inline Dans ce sch ma de compilation une contrainte X in r est g n r e pour chaque variable x Chacune d finit donc une variable en fonction de n 1 autres Par exemple F G H 10 sera traduit comme F H 10 G F in min H 10 max G max H 10 min G cr G H 10 F G in min H 10 max F max H 10 min F c H F G 10 H in min F min G 10 max F max G 10 cp CHAPITRE 7 CONTRAINTES COMPLEXES 151 L inconv nient majeur de cette m thode est que la taille du code produit est quadratique en fonction de la taille
171. ff Prints onto the terminal information about the current debugging state similar to debugging 0 lt pred arity gt Sets a spy point on the current goal or on the goal whose principal functor is pred and arity arity similar to spy 1 Tonly the first character s of the commands are required and lt x gt denotes an optional element ANNEXE I MANUEL D UTILISATION DE WAMCC 252 lt pred arity gt Removes the spy point from the current goal or from the goal whose principal functor is pred and arity arity similar to nospy 1 lt lt n gt Sets the printdepth limit to n or resets it to 10 if n is not specified exact In this mode all failures are traced noexact In this mode failures occuring when unifying the head are not traced like in SICS tus Quitus help Displays a summarize of the options displayed above There are also some low level i e WAM level commands only available for static code compiled with the dbg2 option write adr lt n gt Uses write 1 to print n Prolog terms starting at adr data adr lt n gt Displays dump n words starting at adr modify adr lt n gt Displays dump and makes it possible to modify n words starting at adr where sadr Displays the real address corresponding to sadr deref adr Displays the dereferenced word located at adr envir lt sadr gt Diplays the current environment or the one located at sadr ANNEXE I MANUEL D UTILISA
172. g 33 avec 10 variables de domaine intial 1 6 50 de domaine 0 1 49 in quations et 56 contraintes symboliques element atmost 67 Les programmes crypta eq10 eq20 et alpha permettent de tester les aptitudes de c1p FD r soudre les quations lin aires pures et avec dis quations Les autres programmes tes tent Vefficacit de clp FD sur divers autres aspects tels que forward checking queens disjonctions five et contraintes symboliques du type de element ou atmost cars Dans tous les programmes seule la premi re solution est calcul e et l num ration se fait de mani re standard except lorsque ff est pr cis indiquant alors une num ration bas e sur l heuristique first fail qui num re d abord sur la variable de plus petit domaine 67 CHAPITRE 4 IMPLANTATION DE CLP FD 94 4 3 2 Evaluation de l implantation de base Pour permettre d valuer la version de base de c1p FD nous l avons compar e la version commerciale 3 2 du langage CHIP de COSYTEC Exactement les m mes programmes ont t utilis s avec les deux langages sur un Sparc 2 28 5 Mips Les temps indiqu s sont en secondes et ne tiennent pas compte du temps systeme La table 11 pr sente les temps d ex cution des deux syst mes ainsi que le facteur d acc l ration ou de ralentissement si pr c d du symbole de clp FD par rapport a CHIP En moyenne clp FD est 1 5 fois plus rapide que CHIP en ce qui concerne les quations lin
173. g Jerusalem Israel MIT Press 1990 B Haussman Turbo Erlang Approaching the Speed of C In Implementations of Logic Programming Systems Evan Tick ed Kluwer 1994 J N Hooker and C Fedjki Branch and Cut Solution of Inference Problems in Propo sitional Logic Research Report Carnegie Mellon University Pittsurh Pennsylvania 1987 J Jaffar and J L Lassez Constraint Logic Programming In Principles Of Program ming Languages Munich Germany January 1987 J Jaffar and S Michaylov A Methodology for Managing Hard Constraints in CLP Systems In proceedings of Sigplan PLDI Toronto Canada ACM Press 1991 J Jaffar S Michaylov P J Stuckey and R Yap An Abstract Machine for CLP R In proceedings of Sigplan PLDI San Francisco ACM Press 1992 BIBLIOGRAPHIE 268 47 48 49 52 53 54 55 96 57 98 59 J Jourdan Modelisation of terminal zone aircraft sequencing in constraint logic programming 1992 J Jourdan and T Sola The Versatility of Handling Disjunctions as Constraints In Programming Language Implementation and Logic Programming Talin Estonia 1993 A K Mackworth Consistency in Networks of Relations Artificial Intelligence 8 1977 pp 99 118 U Martin and T Nipkow Boolean Unification The story so far Journal of Symbolic Computation no 7 1989 pp 191 205 J L Massat Using Local Consistency Techniques to Solve Boolean Constraints
174. g n re un code 5 fois plus important que celui de Quintus a cause de l analyse globale Nos mesures nous ont montr que ce code est en moyenne 3 a 4 fois plus gros que celui produit par wamcc CHAPITRE 3 IMPLANTATION DE WAMCC 73 Enfin en dehors de toute consid ration de temps d ex cution ou d espace disque le point important de wamcc r side dans sa minimalit due son architecture pyramidale bas e sur le fait que des compilateurs performants savent se charger de certaines t ches telles qu allocation de registres et autres optimisations De plus cette approche permet de s adap ter aux volutions de ces outils Par exemple avec gcc il est d sormais possible d utiliser les registres de la machine De m me lors d un portage futur de wamcc sur MSDOS nous utiliserons turbo C puisque celui ci est plus performant que gcc aussi bien en temps de compilation qu en qualit de code produit d apr s une tude comparative du magazine byte L avantage que procure le fait de r utiliser plut t que de r crire est colossal D un c t c est une conomie de temps qui peut alors tre consacr e des recherches plus originales D un autre c t c est l assurance de ne pas engendrer des implantations monstrueuses dont la maintenance exige des comp tences trop pointues Chapitre 4 Implantation de clp FD Dans cette section nous nous int resserons l implantation de clp FD ce qui consistera d abo
175. g array 1 2 except that is does not initialize existing elements of the possibly previous ANNEXE I MANUEL D UTILISATION DE WAMCC 244 array When an array is read a term of the form g array Elemo Elemg ze 1 is returned Example a simple counter user inc Var Value g_read Var Value X is Value 1 g_assign Var X TD yes inc a X X 0 yes inc a X Example g_assign does not undo its assignment at backtracking whereas g_assignb un does it g_assign x 1 g_read x 0ld g_assign x 2 g_read x 01d g_assign x 3 da Old 1 Old 2 the value 2 has not been undone yes g_assign x 1 g_read x 0ld g_assignb x 2 g_read x 0ld g_assignb x 3 y Old 1 Old 1 the value 2 has been undone yes ANNEXE I MANUEL D UTILISATION DE WAMCC 245 Example g assign and g assignb create a copy of the term whereas g_link does not g link can often avoid to pass big data structures e g dictionnaries as arguments of many predicates g_assign foo f X X 12 g_read foo Y X 12 Y f _60 yes g_link foo f X X 12 g_read foo Y X 12 Y 12 yes Example array definitions g_assign w g_array 3 g_read w X X g_array 0 0 0 g_assign w 0 16 g_assign w 1 32 g_assign w 2 64 g_read w X X g_array 16 32 64 yes g_assign k g_array 16 32 64 g_read k X simpler X g_array 16
176. ge gt Ys i e Y est r duit par l ajout de c Soit c X in r il est vident que X a aussi t r duit sinon aucune autre variable n aurait t r duite On en conclut que rg C Xs ce qui implique que S 7 c O Soit Contr notre ensemble de formules atomiques la constante vraie correspondant X in 0 infinity et faux aX in 1 0 et F la relation de satisfaction d finie ci dessus Montrons que Contr H est un pr syst me de contraintes Proposition 2 2 v rifie Struct Cut et est g n rique Preuve Struct soit S So U X in r il nous faut montrer que SHF X in r Il suffit de v rifier que VS S E S gt Xe C rer Ceci est trivialement v rifi car S T X in r So donc tout S E S contient X in r du fait de la version b cf s mantique de Tell assurant que X C r Cut il nous faut prouver que si S4 F e et Sy U c1 F cz alors S1 US3 F co On a Si U Sa U a E Sa U a Sachant que S U c1 F cz et du fait que S F c S1 amp S U c1 proposition 2 1 on en conclut que S4 U Sy F co est g n rique il nous faut montrer que si S E c alors S n X F c n AX Notons que S n X amp SU X n et que c n X n est rien d autre que la contrainte c pr valu e dans X n Montrons donc que si S E e alors VS SE SU X n X sut X n G Tou Xen Du fait que S C SU X n ceci revient a montrer que si SH c alors VS S E SU X n gt Xg Cry
177. ge a trois couleurs du graphe complet n sommets tel qu il n y ait pas de triangle monochrome Le programme utilise trois variables pour chaque ar te pour indiquer sa couleur Ce probl me a une solution ssi n lt 16 Pour ces programmes on calcule toutes les solutions sauf si cela est explicitement men tionn Les r sultats pr sent s pour clp B FD n incluent aucune heuristique et ont t mesur s sur une station de travail Sparc 2 28 5 Mips La section suivante compare clp B FD avec la version commerciale de CHIP CHIP 3 2 Nous avons choisi CHIP comme principale comparaison parce que d une part c est un produit commercial et d autre part c est galement un langage de PLC et pas seulement un r solveur bool en et qu il accepte donc les m me programmes que clp B FD De plus le r solveur bool en de CHIP est galement bas sur des techniques de propagation h rit es des domaines finis Nous avons aussi compar clp B FD avec des r solveurs bool ens d di s les r sultats en sont pr sent s dans les sections suivantes 5 4 2 clp B FD et CHIP Les temps pour CHIP ont aussi t mesur s sur une station Sparc 2 Exactement les m mes programmes ont t ex cut s sur les deux syst mes clp B FD est environ huit fois plus rapide que CHIP en tant parfois meilleur de deux ou trois ordres de magnitude cf la table 23 Ce facteur huit peut tre compar au facteur quatre entre clp FD et CHIP pour de
178. gramme ce surco t est limit environ 20 donc peu important et un seul programme suffit pour toutes les instances d un m me probl me Un autre point souligner est que CHAPITRE 5 CONTRAINTES BOOL ENNES 119 n avons pas pu ex cuter exactement les m mes programmes et que nous avons donc utilis les temps donn s dans les articles de r f rence qui incorporent en g n ral de nombreuses heuristiques clp B FD et les BDD Adia est un r solveur bool en efficace bas sur les BDD Les mesures de temps d ex cution proviennent de 59 sur une station de travail Sparc IPX 28 5 Mips Quatre heuristiques diff rentes sont utilis es et nous avons choisi de comparer clp B FD avec le meilleur et le pire des temps donn s Notons que les m thodes bas es sur les BDD calculent toutes les solutions et sont donc inutilisables pour les gros problemes tels que queens pour n gt 9 et schur for n 30 Ici encore c1p B FD a de tr s bonnes performances voir la table 24 dans lequel le signe devant un nombre signifie un facteur de ralentissement de clp B FD par rapport a Adia On voit que clp B FD est en g n ral plus rapide d au moins un ordre de grandeur sauf pour le probl me des pigeons Il est noter que les performances des m thodes bas es sur les BDD par rapport aux m thodes num ratives ou par propagation varient norm ment d un probl me l autre cf 66 pour une tude sur un autre jeu de benchm
179. h a labeling before S1 But we could not use this labeling in practical examples because it is too slow to find a solution To solve practical problems we have used an heuristic that leads clp FD labeling to find a good solution first It consists first in ordering take off variables in L the lower bound of the domain of an element 2 of L is always less than CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 183 or equal to the lower bound of the domain of its successor in L The second part of the heuristic consists in setting constraints according to an increasing order among the beginning of their application period Thanks to this heuristic clp FD finds a solution that minimizes the average delay 2 time granularity the variable domains have bounds from 0 to 1440 number of mi nutes of a day if we allow flights to be delayed up to 3 hours domains can contain 180 values Those size considerations can be redhibitory in practical examples see the size of such examples in next section So to reduce memory size model we have chosen to divide all variables and domain bounds by a time granularity that can be 5 or 10 minutes or else 3 discrete approach because of the number of variables and constraints involved it is difficult to treat a day taken as a whole So we have cut it in slices of 4 hours when a flight is delayed by the constraints of a slice its maximum delay is reduced accordingly 8 4 5 Results
180. iables i e reasoning about the bounds of the intervals partial lookahead 67 clp FD also allows operations about the whole domain in order to also propagate the holes full lookahead 67 Obviously these possibilities are useless when we deal with boolean variables since the domains are restricted to 0 1 8 3 2 High Level Constraints and Propagation Mechanism From X in r constraints it is possible to define high level constraints called user cons traints as Prolog predicates Each constraint specifies how the constrained variable must be updated when the domains of other variables change In the following examples X Y are FD variables and C is a parameter runtime constant value x y c X Y C X in C max Y C min Y Ci Y in C max X C min X C2 x y c X Y C X in min Y C max Y C C3 Y in min X C max X C C4 The constraint x y c is a classical FD constraint reasoning about intervals The domain of X is defined w r t the bounds of the domain of Y In order to show how the propagation mechanism works let us trace the resolution of the system X Y 4 X Y 2 translated via x y c X Y 4 and x y c X Y 2 CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 178 after executing x y c X Y 4 the domain of X and Y are reduced to 0 4 C4 is in the current store X in 00 4 Cy Y in 00 4 And after executing x y c X Y 2 the domain of X is reduced t
181. ication The departure slot allocation is done manually until now so we couldn t compare our approach with linear methods that could have been yet used Such a comparison linear versus CLP methods to solve ATFM problems will be done in our next research The structure of this paper is as follows Sect 2 gives a brief description of ATFM the third one presents the clp FD language features and a new constraint developed for our needs Sect 4 shows how clp FD can be used to solve the departure slot allocation problem under capacity and or flow rate constraints CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 173 8 2 Problem Context 8 2 1 Air Traffic Flow Management Overview ATFM aims at adapting a variable demand to the variable capacity of the system of control Its first objective is to assure by smoothing the flow of aircraft that unacceptable levels of traffic congestion do not develop Its second goal is to perform this task without imposing unnecessary flow restrictions France is overflown by all European air carriers and even more Its airspace is a patchwork of about 90 sectors Each of them is under the responsibility of a pair of controllers A flight crosses several sectors along its route The radar controller works on a radar position and gives instructions to pilots via a radio link He she maintains separation between planes and keep them away from specific dangers such as military areas storms The plan
182. iculi re cause du probl me pos par les divisions enti res Nous allons tudier le cas g n ral x div y z gt x 2 x7y o x yet z sont des entiers et y gt 0 div et lt lt gt gt La table suivante montre la validit des 8 formules possibles 1 y lt z SS x lt zxy voir preuve 1 1 y gt z 5 x gt 2xy voir preuve 2 wal Seer Seay E ARAS ENTES AE PS TS Ss Les preuves suivantes se basent sur le fait que r y lt x y lt x y 1 preuve 1 1 y lt z 3 x lt zxy gt z y lt z z y 1 lt 20rx y lt x y 1 donc z y lt zie x lt zy Sig san zy lt zor x y lt x y done z y lt z preuve 2 z y gt z 31 gt 2xy gt z y gt z or z y gt x y donc z y gt z i e z gt zxy Hi gt sky gt aye zor au 1 gt ely donc ly 1 gt z gt z y gt z La preuve 1 resp 2 s obtient partir de la preuve 1 resp 2 en interchangeant x y et 1 y lt et gt lt et gt et O CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 148 Comme nous l avons vu il n est pas toujours possible de remplacer une division enti re par une multiplication Toutefois cela est toujours le cas pour les contraintes bien crites intuitivement dans un intervalle monotone c est la division arrondie par exc s qui doit tre utilis e dans une borne inf rieure et celle par d faut dans la borne sup rieure
183. ient les instructions de niveau 2 suivantes switch_on_term Lyar Lete s Lint List Lste s il n y a pas de constantes alors L fail sinon le code suivant est g n r Leie switch on constant N ctey Lete ctey Leten pour chaque constante cte j 1 N le code suivant est g n r si une seule clause a cte comme ler argument alors Lete L ji tant le num ro de la i me clause ayant cte comme premier argument sinon Lete try retry L trust L idem pour les entiers Ling et les structures Lie s il n y a pas de listes alors L s fail sinon le code suivant est g n r o 7 est le num ro de la i me clause ayant une liste comme premier argument CHAPITRE 3 IMPLANTATION DE WAMCC 47 List try L retry L trust L Si G contient une seule clause Lay L sinon Luar try me else L ars Li lt code clause 1 gt Luaro retry me_else Lyar Lo lt code clause 2 gt Luar trust me else fail Lp lt code clause p gt L instruction switch_on term Lyar Lete Lints Lists Lste donne le contr le l adresse appro pri e suivant le type du mot auquel ALO est li L instruction switch on constant N ctey Lote ctey Leren g re le contr le suivant le type de constante gr ce une table qui une constante cte associe une adresse L L correspond l adresse de la clause dont le premier argument est cte ou ce
184. in section 1 3 5 If several directives are defined in a same module they will be executed in the same order as they appear in the Prolog file Example x pl y pl z pl main y z public odd 1 public p 1 public even 1 odd s X even X DUM O even 0 public q 1 u b even s X odd X qa X p X write r p a write ql 2 write q2 s X q x p X write X s X write X 2The only exception concerns operator declarations op 3 which are both executed at compile time and run time ANNEXE I MANUEL D UTILISATION DE WAMCC 219 At run time write q1 write q2 write r p X write X s X write X top_level true true e The order in which directives are executed is directives of y pl directives of z pl and then directives of x pl e In the module x p1 the public predicate p 1 has been redefined so the directive p X write X will print a However the directive s X write X will print b since in y pl only the public declaration of p 1 in z pl is visible e Under the top level the query p X will succed with X a The query q X will succeed with X b the query u X will fail since only private predicates defined in x pl can be called from the top level The query even X will generate all even natural numbers through backtraking I 2 From Prolog modules to Unix Executables 1 2 1 Compiling Prolog Modules The wamcc compiler is entirely wr
185. ine de X ou du domaine de Y Ceci peut tre bien souvent trop co teux Notons toutefois que dans certains cas cette condition ne peut tre vraie que si X et ou r sont clos C est notamment le cas si r dom Y ou si r t1 t2 et que t et tz sont les m mes termes aux sous termes indexicaux min Y et max Y pr s i e inf t1 inf te Ces cas sont faciles d tecter et peuvent donner lieu une compilation sp cifique se ramenant l approximation 1 CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 142 6 4 Approximation 3 test sur les intervalles Le but de cette approximation est de fournir un compromis entre les deux premi res ap proximations Elle est bien plus pr cise que l approximation 1 mais un peu moins efficace tout en tant moins pr cise que l approximation 2 mais plus efficace L id e principale est d viter les op rations sur les domaines en g n ralisant quand cela est possible la simplification faite pr c demment lorsque nous avons crit Ey cx dom X C 2 max Y infinity min X gt 2xmax Y En effet les conditions g n r es avec l approximation 2 sont de la forme dom X C A r faisant donc toujours intervenir des op rations sur les domaines Toutefois si A r est un intervalle t t nous pouvons r duire cette condition la condition quivalente min X gt t A max X lt t Ce faisant nous n avons rien perdu en pr cision tout en gagnant sur le co t des op rati
186. insi de d couper une application Prolog en plusieurs modules Ceci permet dans un premier temps de ne pas s occuper des pr dicats pr d finis built ins qui seront crits en Prolog par la suite dans des modules s par s 3 2 2 M thodes classiques pour ex cuter la WAM Le code WAM g n r par le compilateur n cessite un traitement pour tre r ellement ex cutable Il existe trois m thodes classiques pour ex cuter du code WAM e utiliser une machine Prolog e utiliser un mulateur de code WAM e produire du code natif pour la machine h te En ce qui concerne une machine Prolog le code fourni par la compilation est directement ex cutable puisque ce code correspond au langage assembleur d une telle machine Tou tefois comme dans toute machine il n est pas possible de modifier ce langage de plus bas niveau donc nous ne pourrions tendre la WAM pour prendre en compte les contraintes CHAPITRE 3 IMPLANTATION DE WAMCC 50 L mulation est g n ralement la premiere solution qui vient l esprit Dans cette approche le code produit byte code est simplement vu comme des donn es qui seront trait es par l mulateur Les avantages d un mulateur r sident dans sa simplicit d criture 3000 lignes de C pour une version non optimis e dans sa portabilit s il est crit en C et dans sa facilit cr er et modifier dynamiquement du code WAM Ces avantages ont convaincu la plupart des concepteu
187. interdependency between sectors and the complexity of the air route network The interest of a simulation aid tool is to let the prominent r le and the final choice to the regulators when they have at their disposal the cost estimation of a regulation plan provided by clp FD Cost estimation can integrate criteria such as the average or maxi mum delay the number of delayed flights the number and duration of planned restrictions the average number of restrictions affecting a flight the difference between demand and capacity it allows to save a security margin for imponderables Such a tool can help them to avoid imposing unnecessary restrictions on flows Our work has been integrated into the simulation aid tool SPORT from which we have provided hardcopies in this paper This integration has been easy to do because clp FD allows to obtain a C runtime program 8 5 Conclusion and Further Works This paper has shown how CLP is well adapted to solve ATFM problems such as departure slot allocation satisfying different types of constraints Describing a possible extension of this practical application flow rate regulation we have highlighted expressiveness and flexibility of the CLP approach It seems that numerous ATFM applications can benefit from CLP advantages Among them we will now investigate other applications like re routing automatic search of flow rate regulations evaluation of a capacity change cost evaluation of flow const
188. ion choisie pour traiter une contrainte complexe De plus le r solveur est maintenant ouvert l utilisateur car de nouvelles contraintes peuvent tre ajout es facilement il suffit de sp cifier leur traduction en contraintes primitives En outre une machine abstraite pour la r solution des contraintes sur les domaines finis peut alors tre plus facilement d velopp e partir de l ensemble r duit des contraintes primitives Quelles sont donc ces contraintes primitives qui permettent de reb tir peu de frais toutes les contraintes usuelles sur les domaines finis Une id e nouvelle a t propos e il y a quelques ann es par Pascal van Hentenryck Il suffit en fait d une unique contrainte primi tive d appartenance la contrainte X in r o X est une variable domaine fini et r d note un ensemble d entiers La s mantique intuitive d une telle contrainte est de forcer X ap partenir au domaine d not par r i e X r r peut tre d fini comme un intervalle t t2 ou partir d autres domaines par des op rations d union intersection La puissance de cette primitive provient du fait que r peut aussi bien d noter un ensemble constant ex 1 10 qu un ensemble d pendant de la valeur d autres variables gr ce l utilisation de domaines termes indexicaux min Y max Y dom Y Une telle contrainte fournit une valeur d pendant du domaine courant des autres variables et volue donc au fil des r du
189. ion inutile tape 7 de m me que la seconde valuation de A l tape 8 Avec l optimisation 3 l occurrence ii est supprim e et R est calcul une premi re fois partir d une valeur de Z interm diaire due l occurrence 1 via une valeur interm diaire de A Z ne prend sa valeur d finitive que lors de l occurrence iii entra nant ainsi un re calcul de R Avec optimisation 3 Etape Ex cution de utile file de propagation 1 T in oui Cx T Cz X Y T 2 Cx T oui Cz X Y T Cy X Cz X Y T non rajout 3 C2 X Y T oui Cy X CA Z a Cy X oui Ca Z Cz X Y T 5 Ca Z oui Oz X Y T R 6 CAY oui RaZ 7 R oui C4 Z propag_R 8 C4 Z oui propag R R 9 propag R oul R 10 R oui propag_R 11 propag R oui CHAPITRE 4 IMPLANTATION DE CLP FD 103 Notre exemple artificiel est un cas pathologique pour l optimisation 3 En moyenne celle ci r duit tout de m me le nombre d appels inutiles a Tell tout en augmentant l gerement le nombre de Tells utiles cf exemple Cette optimisation est int ressante lorsqu elle prend en charge les r ex cutions inutiles de type a et b comme c tait les cas dans notre pre mi re version mais devient peu convaincante lorsqu elle ne s occupe que des r valuations du type b comme c est le cas avec une file optimis e 4 3 4 Evaluation de l implantation finale Nous avons identifi
190. ion pour des contraintes de plus grande arit Il est n anmoins possible d tendre la syntaxe des domaines de X in r pour prendre en compte les op rations arithm tiques assurant une consistance entre domaines D finition 7 4 Soient d et dy deux domaines alors dd d Ud k E kEdsa Ainsi si le domaine de di 2 5 et dy 1 7 11 le domaine d not par di dy 3 6 9 12 13 16 Ces op rations nous permettent par exemple de d finir la contrainte div X Y Q R v rifiant X QxY R o Q est le quotient de X Y et R le reste comme suit Exemple 7 4 div X Y Q R Y in 1 infinity R lt Y X in dom Y dom Q dom R Q O Y in dom X dom R dom Q CHAPITRE 7 CONTRAINTES COMPLEXES 158 Q in dom X dom R dom V R in dom X dom Y dom 0Q Une telle contrainte dans le store X in 2 10 Y 2 R 1 r duira le domaine de X aux valeurs 3 5 7 9 et celui de Q 1 4 comme d sir Notons que cette extension s implante ais ment par extension triviale du jeu d instruc tions et peut tre prise en compte par les m canismes de d tection de satisfaction de contraintes pr c demment d crits 7 3 2 Fonctions utilisateurs La contrainte X in r nous permet de d finir un domaine gr ce des fonctions sur les domaines ex intersection union etc et des fonctions sur les termes addition sous traction etc Notons que la d finition de ces fonctions primitives ne repose que
191. ir une relation de satisfaction Fg entre les contraintes bool ennes donc par suite un syst me de contraintes selon le formalisme pr sent au chapitre 2 CHAPITRE 5 CONTRAINTES BOOL ENNES 114 and X Y Z X 0 Z 0 and X Y Z Y 0 Z 0 and X Y Z X 1 gt Z Y and X Y Z Y 1 Z X and X Y Z Z 1 gt X 1 and X Y Z Z 1 Y 1 or X Y Z X 1 Z 1 or X Y Z Y 1 Z 1 or X Y Z X 0 Z Y or X Y Z Y 0 Z X or X Y Z Z 0 X 0 or X Y Z Z 0 Y 0 not X Y X 0 Y 1 not X Y X 1 Y 0 not X Y Y 0 X 1 not X Y Y 1 X 0 Tableau 21 th orie de propagation bool enne B D finition 5 3 Consid rons un store S et une contrainte bool enne b S Fp b si et seulement si S implique b avec les artomes auxiliaires de B Soit B 3 la cl ture de B par conjonction et quantification existentielle le syst me de con traintes bool ennes est B 3 8 Ceci est la construction usuelle cf 63 pour formaliser un syst me de contraintes partir d une th orie du premier ordre Il est noter que les r gles de B donc Fg encodent pr cis ment les m canismes de propagation qui seront utilis s pour simplifier et r soudre les contraintes bool ennes On a ainsi donn une s mantique op rationnelle au r solveur de contraintes Il est cependant important de s assurer que notre syst me de contraintes d fini op rationnellement est bien quivalent aux expressions bool ennes
192. irie L id e consiste d composer la contrainte lin aire en plusieurs sous contraintes lin aires en introduisant des variables interm diaires Chaque sous contrainte lin aire donne alors lieu un appel sp cifique une contrainte d finie en librairie Par exemple F G H 10 peut tre traduit en F G I_ x y z F G I I H 10 x y c 1 H 10 CHAPITRE 7 CONTRAINTES COMPLEXES 152 Le code produit par cette m thode est donc tr s petit puisqu il n est constitu que d appels de pr dicats Mais le plus grand avantage provient de l introduction de variables interm diaires qui factorisent des calculs et vitent donc des calculs redondants De plus le fait que toute variable ne d pend plus de toutes les autres variables vite galement beau coup de r veils inutiles de contraintes Consid rons nouveau l exemple pr c dent et la d composition ci dessus dans le store F in 0 15 G in 0 15 donnant F in 0 15 G in 0 15 I in 10 30 H in 0 20 F G I I H 10 Supposons maintenant que la contrainte F in 5 15 soit ajout e au store G est alors r valu partir de min I max F max I min F 0 25 qui contient d j le do maine courant de G qui n est donc pas r duit J est son tour r valu partir de min F min G max F max G 5 30 qui contient d j le domaine de J qui n est donc pas non plus modifi Le calcul s arr te alors ici et vite de r valuer inutil
193. isation 3 Le b n fice moyen de 16 sur le temps d ex cution est en grande partie environ 10 d aux simplifications de certaines op rations inh rentes la nouvelle file Temps Pire queens 70 ff 0 0 12 Moyen 4 5 16 Meilleur alpha ff 13 16 25 Tableau 13 gain de la file optimis e File optimis e D composition des Tells Temps Tell R duc V rif V rif Echec Echec Programme ex c nombre domaine domaine entier entier domaine oya 0 sw zu su 22 un a ED o a a eqo omo 22059 50 Mai 5820 13 alpha 8 030 871838 254938 324838 a er alpha ff 0 120 13176 2762 6392 4005 queens 16 64619 21132 queens 64 ff f 4556 1813 e i queens 70 ff 2009404 171859 81159 1747810 5387 3189 queens 81 ff f 10633 3004 6 3 five foomo ss 2 s 2 u o cars ooo 2 1 125 72 0 0 Tableau 14 d composition des Tells avec une file optimis e Satisfaction de contraintes Une autre source d appels inutiles a Tell est due aux contraintes satisfaites qu il est alors inutile de remettre en cause Consid rons par exemple la contrainte X 4 Y x y X Y dans le store Le 110 8 Fatt 00 donnant X in 1 10 Y in 1 10 CHAPITRE 4 IMPLANTATION DE CLP FD 99 X in val Y Cy Y in val X Cy Quand X est initialis 5 Cy est r veill et 5 est supprim du domaine de Y fournissant le store suivant X 5 Y in 1 4 6 10 Cx Cy
194. iser la fonction mmap qui permet de mapper un fichier en m moire partir d une certaine adresse Les lectures et critures de ce fichier se faisant simplement en lisant et en crivant dans la m moire Il existe g n ralement un device sp cial dev zero qui rend toujours z ro lors qu une nouvelle donn e est lue et dans lequel les critures ne sont pas r percut es Ceci convient tout fait pour nos piles Gr ce la fonction munmap chaque page suivant une pile est rendue au gestionnaire de m moire En cas d absence des fonctions de la famille de mmap il est possible d utiliser celles permettant la gestion du partage de m moire entre processus shmget puisqu elles aussi permettent d acqu rir et lib rer de la m moire Enfin pour les machines ne poss dant aucune de ces facilit s les piles sont allou es gr ce aux fonctions d allocation de la librairie standard de C malloc et le contr le de d bordement se fait par programme l appel de chaque pr dicat 3 3 3 Fichiers de configuration Pour permettre l extensibilit et la portabilit du syst me deux fichiers de configurations sont utilis s l un pour d crire la WAM et l autre pour d crire les particularit s des diff rentes machines support es Etudions tout d abord le fichier de d finition de la WAM cf table 4 On y trouve la description des registres pour chaque registre sa priorit son type et son nom sont sp cifi s
195. isqu il CHAPITRE 7 CONTRAINTES COMPLEXES 166 ne n cessite pas de faire le Tell de toutes les alternatives independamment pour ensuite en extraire l information commune Bien que la plupart des utilisations courantes de la disjonction constructive fassent partie de ce cas il est int ressant d tudier ce qu il est possible de faire si nous ne pouvons extraire qu une approximation i e une formule F telle que E gt F Dans ce cas le seul ajout de F au store ne suffit pas assurer la correction et le recours aux points de choix est indispensable Toutefois la contrainte F permet d j un certain lagage et la cr ation des points de choix peut tre retard e par exemple jusqu au moment de l num ration Consid rons par exemple la disjonction E X 4 A Y 3 v X 8 A Y 6 nous pouvons en d duire F X 4 V X 8 A Y 3 V Y 6 tel que E gt F L ajout de F au store r duira le domaine de X 4 8 et celui de Y 3 6 L lagage ainsi obtenu est tout de m me important et permet de retarder la cr ation d un point du choix assurant la correction 7 4 3 Autres exemples Etudions pr sent quelques contraintes classiques pour lesquelles la disjonction construc tive a d j t propos e et montrons qu elles peuvent toutes b n ficier de la transformation quivalente d terministe pr c dement vue Maximum de deux valeurs Dans 69 nous trouvons la d finition de la contrainte max X Y Z assurant que Z
196. istics Displays on the terminal statistics relating to memory usage and run time statistics Key Value This allows a program to gather various execution statistics For each of the possible keys Key Value is unified with a list of values as follows stack_name Size_used Size_free in bytes stack_name local global trail runtime Since_start Since_last in ms systime Since_start Since_last in ms similar to statistics runtime T _ cputime T version Displays the introductory banner top_level BannerBool CatchBool invokes a sub top level BannerBool is true or false and indicates if the introduc tory banner must be displayed at the invocation CatchBool indicates if the excep tions raised by throw 1 which are not captured must be captured by top level which simply write the Ball sent by throw 1 between curly brackets If CatchBool is false 6do not hesitate to contact the author for more low level information ANNEXE I MANUEL D UTILISATION DE WAMCC 248 then the sub top level ends the exception is still raised and should be captured by an other handler The global variable top_level counts the number of nested top levels actually alive can be used to test if a top level is active gensym X gensym Prefix X Generates an atom of the form Prefixk where k is the current value of the global variable Prefix so it must be an integer This value is then incremented for the nex
197. it au rendez vous Analysons de plus pres les r sultats de notre nouvelle approche La table 16 analyse les issues des op rations Tells pour la version finale i e avec file optimis e et optimisation 2 L impact combin de la file optimis e et de l optimisation 2 est r sum en table 17 cf table 18 pour plus de d tails La figure 14 permet d valuer graphiquement l apport des optimisations En moyenne il est possible de r duire de moiti 52 le nombre de Tells ramenant ainsi la proportion de Tells inutiles par rapport aux utiles 54 cette proportion tait de CHAPITRE 4 IMPLANTATION DE CLP FD 104 File optimis e optim 2 D composition des Tells Temps T ell R duc V rif V rif Echec Echec Deus ooo ww 28 35 105 1 a eqto 0080 12 206 rma tems 7 eq2o fois 18 5 mea 224 8 alpha 7 770 641204 254938 324838 52988 2023 6417 alpha ff 0 110 10429 2762 6392 1258 7 10 queens 16 33481 21132 834 999 queens 64 ff 2143 1813 2 1 queens 70 ff 292381 171859 81159 30787 5387 3189 queens 81 ff 3787 3004 6 3 five oo sr 2 s w nf o cars oo 224 w 165 67 o o Tableau 16 d composition des Tells dans la version finale Temps Pire cars 6 8 25 Moyen 37 52 36 Meilleur queens 70 ff 85 94 77 Tableau 17 gain de la version finale Fm coa o o A Programme Initial Final Gaim Initial Final Gain a G
198. itten in wamcc Prolog and compiled with wamcc It allows the user to compile one or several Prolog Modules The general syntax of wamcc is as follows wamcc option filename Options ANNEXE I MANUEL D UTILISATION DE WAMCC 220 c produce a c file wam produce a wam file fast math do not test types in math expressions no_test_stack do not test types in math expressions no inline do not include code to test stack overflow dbg compile for prolog debugging dbg2 compile for prolog and wam debugging v verbose mode h display help Remarks e if wamcc is invoked without any arguments then a classical Prolog top level is called e by default the compilation proceeds in C mode When a Prolog Module prog pl is compiled in C mode wamcc generates the following files prog h a header file variable declarations prog c the C source file prog usr a user file In this file the user can add his own C code to interface with Prolog via pragma_c 1 inline predicate This file is generated if it does not exist otherwise it is left unchanged With the wam options wamcc generates a prog wam file in a Prolog syntax e the fast_ math option makes it possible to generate faster code since no type che cking is done for variables appearing in mathemetic expressions they are assumed to contain integers e the dbg and dbg2 options produce additional information for debugging see also section 1 4 e the n
199. ks see 24 25 for full details and up to 57 on the set of boolean benchmarks presented below 8 3 4 Performances Full implementation results about the performances of clp FD can be found in 24 25 and show that this glass box approach is sound and can be competitive in terms of efficiency with the more traditional black box approach of languages such as CHIP On a traditional set of benchmark programs mostly taken from 67 the clp FD engine is on average about four times faster than the CHIP system with peak speedup reaching eight 8 3 5 atmos_interval Constraint To model capacity constraints we needed to define a new constraint the atmost_interval constraint The symbolic constraint atmost_interval N X1 Xm U is a user defined cons traint that holds if and only if at most N variables X are included within the interval L U This constraint can be defined via the relation Cardinal X L lt X lt U lt N A boolean B is associated with each variable X and set to 1 if L lt X lt U and to 0 otherwise The sum of all B must be less than or equal to N It is worth noticing that CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 180 v Mie SS Vs Voy i E fe eet Vane SAS AGE Ve IS Sa Se S7 EE eat A AE gt 2 3 4 5 6 7 8 10 t 281 3s2 Figure 21 Graphical representation of a small problem such a constraint should be wired in CHIP by the design
200. l 4096 H Global stack stack local 1024 B gt E B E Local stack end stacks Tableau 4 fichier de description de la WAM Ainsi l ajout de nouveaux registres ex pour les contraintes de nouveaux types de donn es ou de nouvelles piles ne n cessite qu une mise jour de ce fichier La description des CHAPITRE 3 IMPLANTATION DE WAMCC 65 diff rents type de donn es permet l adaptation automatique des tailles des parties tiquettes et valeurs ainsi que de la d finition des macros d tiquetage et de des tiquetage des mots m moires L autre fichier de configurations indique pour chaque machine les informations suivantes options C options de compilation particuli res pour cette machine labels asm macros permettant de g n rer les labels assembleurs gotos d finition des macros telles que Direct_Goto et Indirect_Goto rencontr es plus haut registres registres utilisables pour la WAM l on pr cise aussi s ils doivent tre sauve gard s lors des appels de fonction de la librairie C car d truits par ceux ci gestion des piles m thode d allocation des piles malloc mmap ou shmget et le type de contr le de d bordement effectuer par logiciel ou par mat riel Lors de l installation sur une machine donn e un programme C se charge de configurer le syst me partir des deux fichiers Il g n re alors de nouveaux fichiers d en t te C permet tant d i
201. l et qu il n aura pas besoin de d finir de nouvelles contraintes pour une application donn e Nous allons proposer une autre approche appel e m taphoriquement l approche RISC par analogie avec la technologie des microprocesseurs La bo te de verre i e transparente remplace la bo te noire Cette m thode permet d obtenir d excellentes performances et allie donc simplicit et efficacit Comme pour les microprocesseurs il vaut mieux avoir un jeu d instructions simple et limit mais optimis plut t qu un traitement lourd et sp cifique de chaque cas particulier L id e de base est de d finir des contraintes primitives simples et en nombre limit et de CHAPITRE 1 INTRODUCTION 5 reb tir gr ce a elles les contraintes complexes usuelles comme par exemple les contraintes arithm tiques ex X 3xY Z X lt Y ou Z42x Y 3 etc ou diverses contraintes symboliques ex atmost N X Xm V On a donc un processus en deux tapes les contraintes complexes sont traduites lors de la compilation en des ensembles de contraintes primitives et lors de l ex cution le r solveur a uniquement g rer ces contraintes primi tives Le r solveur est donc ainsi beaucoup plus simple uniforme et homog ne En outre le niveau des contraintes primitives donne un degr de libert de plus et peut tre consid r comme une sorte de langage de base pour exprimer les m canismes de propagation et la m thode de r solut
202. la satisfiabilit des contraintes et possiblement de les r duire une forme normale Bien que cette dichotomie soit tres importante du point de vue th orique et qu elle ait permis par exemple d importer de nombreux th or mes de la s mantique de la PL vers la PLC elle n est pas tr s satisfaisante du point de vue pratique En effet la r solution de contraintes et l interface entre le moteur logique et le r solveur restent ainsi entour s d un myst re n buleux ce qui n aide pas une vision claire de l architecture d un syst me de PLC Il est d ailleurs noter qu il y a un curieux manque de litt rature sur l aspect pratique de la PLC On peut consid rer qu une des avanc es majeures de la Programmation Logique dans les ann es 80 a t la d finition de la machine abstraite de Warren WAM qui est devenue un standard de facto une alternative PISO pour la compilation de Prolog La WAM a aid de nombreux chercheurs acqu rir une meilleure compr hension de l ex cution de Prolog et d velopper des syst mes de PL efficaces De plus la WAM s est av r e suffisamment flexible pour servir de base diverses extensions de la PL telles que les contraintes la concurrence le parall lisme l ordre sup rieur etc Pour revenir la PLC on ne peut que d plorer le fait que l approche bo te noire ne donne que peut d informations CHAPITRE 1 INTRODUCTION 2 sur l architecture d un syst me de PL
203. le DF structures de donn es pour les contraintes nouvelle repr sentation interne d une variable DF repr sentation interne d finitive d une variable DF impact des optimisations ses RA ewe he ie re ne he BDD repr sentant la formule x Ay Vz repr sentation interne d une variable bool enne repr sentation interne d une contrainte dans les listes de d pendances 12 18 19 20 21 22 23 structures de donn es n cessaires pour la contrainte Z lt X Y 128 proportion de chaque issue de la proc dure de consistance 131 Display 0f SPORT syst m Ten 6 5 4 ed bh ae RME BE ee panne 172 Graphical representation of a small problem 180 UM traffic before CLP process 124 usure tiens Go oe Goa han 184 UM traffic after CLP process iaa aa o hee ee 184 Chapitre 1 Introduction La Programmation Logique avec Contraintes PLC est un domaine de recherches tr s actif depuis quelques ann es et des langages comme CHIP PLC R ou ProloglII ont prouv que cette approche ouvrait la Programmation Logique PL classique un vaste champ d applications L id e de base de la PLC est de remplacer le m canisme d unification de la PL par la r solution de contraintes sur des domaines particuliers en consid rant le r solveur de contraintes comme une bo te noire qui se charge de tester
204. les listes de d pendances liste des contraintes d pendant de X En vue de diminuer le nombre de contraintes activ es inutilement plusieurs listes sont distingu es En effet il est inutile de r veiller une contrainte ne d pendant que de min X lorsque seul le max de X a t modifi Les diff rentes listes sont e Chain Min liste des contraintes d pendant de min X et pas de max X e Chain _Max liste des contraintes d pendant de max X et pas de min X e Chain Min Max liste des contraintes d pendant de min X et de max X e Chain _Dom liste des contraintes d pendant de dom X e Chain_Val liste des contraintes d pendant de val X i e activer quand X sera clos Notons qu il est facile d assurer qu une contrainte n appartient pas plusieurs listes pour une variable donn e Cette partie utilise sa propre estampille car elle est mise jour ind pendamment du domaine Les listes Chain Min Chain Max et Chain _Min_ Max r f rencent des contraintes utili sant une propagation du type partial lookahead Les listes Chain_Min et Chain_Max r f rencent les in quations et la liste Chain _Min_Max les quations La liste Chain_Dom contient les contraintes utilisant un sch ma de full lookahead La liste Chain_Val r f rence les contraintes utilisant le forward checking ex dis quations La figure 11 sch matise les diff rentes structures de donn es n cessaires aux contraintes CHAPITRE 4
205. lle d un code de niveau 2 try retry trust dans le cas o plusieurs clauses ont cte comme premier argument de la t te Idem pour les entiers les listes et les structures Les instructions try L retry L et trust L ont respectivement le m me r le que try_me_else Lose retry me_else Lease et trust_me_else_fail la seule diff rence r side dans l alternative stock e dans le point de choix pour try L retry L et trust L c est l instruction suivante et non pas Lose Le contr le pour sa part se poursuit par l instruction d adresse L La table 3 montre le code compil du pr dicat p 3 utilis en figure 1 CHAPITRE 3 IMPLANTATION DE WAMCC 48 switch on term L3 fail Li fail L2 switch_on_integer 1 0 L4 switch_on_structure 1 s 1 L6 try_me_else 5 get_integer 0 X 0 4 p 0 X X get_value X 1 X 2 proceed trust_me_else_fail get_structure s 1 X 0 h p s X Y 8 Z p X Y Z unify_variable X 0 get_structure s 1 X 2 unify_variable X 2 execute p 3 Tableau 3 exemple de code WAM 3 2 Ex cution du code WAM traduction vers C Nous tudierons dans cette section diverses solutions pour ex cuter le code WAM et celle choisie pour wamcc traduire Prolog vers C Ce choix sera justifi par rapport aux objectifs que doit remplir wamcc et que nous d finissons tout de suite 3 2 1 Cahier des charges En 1991 nous avons d cid de d velopper un Prolog maison dans le but d e
206. lution int ressante gr ce son mod le simple et surtout homog ne En effet nous verrons comment g n rer partir des contraintes primitives des conditions logiques d crivant si une contrainte est impliqu e par l ensemble courant de contraintes ou non Ces conditions logiques se d rivent ais ment de la syntaxe des contraintes X in r Une contrainte conditionnelle peut donc tre compil e CHAPITRE 1 INTRODUCTION 7 en un test logique qu il sera facile de tester efficacement lors de l ex cution du programme Notons que l id e d avoir une contrainte condition pour l ex cution d une autre contrainte ou d un pr dicat logique d rive en fait des travaux sur les langages concurrents avec con traintes CC o cette construction appel e Ask sert de m canisme de synchronisation de base entre processus concurrents Ce travail ouvre donc naturellement sur l extension d un langage de PLC sur les domaines finis vers un langage CC sur les domaines finis 1 4 Contraintes bool ennes Un autre exemple int ressant pour montrer la flexibilit de l approche RISC est l tude des contraintes bool ennes celles ci et ou et non pour rester simple sont valeur dans un domaine fini 0 1 mais sont cependant diff rentes des contraintes usuelles Il est donc int ressant de voir s il est possible d encoder efficacement ces contraintes en contraintes primitives X in r et de comparer le r solveur bool en ainsi obtenu ave
207. m me module don naient lieu une seule fonction ici une clause donne lieu autant de fonctions qu il CHAPITRE 3 IMPLANTATION DE WAMCC 59 y a de buts dans le corps de la clause la t te et le premier but comptant pour un Donc le code produit est beaucoup plus rapide compiler cf section 3 4 e les particularit s de gcc ne sont pas utilis es en ce qui concerne le contr le et un compilateur classique permettant l insertion de code assembleur suffit e chaque fonction n a qu un seul point d entr e direct qui se trouve au tout d but donc seul le prologue est saut Pour permettre l utilisation de variables locales un espace de travail suffisamment grand est r serv dans la pile C une fois pour toutes avant le lancement du calcul en d finissant un tableau dans une fonction interm diaire Ainsi le pointeur de pile C sp pointe la fin du tableau et ne sera plus modifi puisque les prologues ne seront pas ex cut s Donc les variables locales r f renc es par rapport sp seront allou es dans l espace de ce tableau e la seule hypoth se concerne donc le fait que le prologue ne s occupe que de d cre menter sp Or ceci est g n ralement le cas except sur quelques machines o le com pilateur C r f rence les variables locales non pas par rapport sp mais par rapport un autre registre fp frame pointer qui est affect en d but de fonction la valeur de sp Cette fa on de pr
208. m thode de R O temps en sec 122 syntaxe de la contrainte lo lt lija oo ee 123 d finition du r solveur bool en de clp B 124 code g n r pour IAS IZ de aa A A Ce 130 clp B versus les autres r solveurs 133 d finition de in f t et sup t AAA Gees a 139 d finition de Alr et M E A A A 140 nouvelle d finition de A r et M r 143 probleme des s ries magiques 155 syntaxe tendue de la contrainte X inr 159 code de X in val Y val Y I val Y 1 161 queens optimis avec fonctions utilisateurs o 162 fragment of the constraint system syntax sooo e 176 implementation of our small problem with clp FD constraints 182 41 some runtime examples Table des figures 10 11 12 13 14 15 16 17 exemple d arbre de recherche standard structures de la trail Cae RS Eh A A A a repr sentation des termes dans la WAM arehtecturesddella WAM sora ma RA AA AAA processes d COMMON LE dog lion a o Got M EA disposition des piles en m moire repr sentation interne d un environnement repr sentation interne d une contrainte repr sentations internes d un domaine repr sentation interne d une variab
209. m tiques et symboliques usuelles En ce qui concerne les domaines finis il est remarquable qu une seule contrainte primitive soit suffisante Celle ci peut tre consid r e comme un langage de base pour exprimer les m canismes de propagation et la m thode de r solution choisie pour traiter une contrainte complexe Ceci nous a conduit un processus en deux tapes traduction des contraintes complexes en primitives la compilation et implantation d un r solveur pour prendre en charge la primitive l ex cution Le r solveur ainsi obtenu est simple uniforme et 188 CHAPITRE 9 CONCLUSION 189 homog ne Le syst me de contraintes est de plus ouvert l utilisateur qui peut d finir de nouvelles contraintes en sp cifiant leur traduction en termes de primitives Le traitement d une seule primitive nous a permis de d finir des optimisations pour viter les r veils de contraintes inutiles Ces optimisations profitent videmment toutes les contraintes de haut niveau puisque b ties sur cette primitive Ceci est comparer aux optimisations ad hoc des solveurs bo te noires L tude des performances de clp FD montre que ces choix taient justifi s et que l approche bo te de verre conduit un r solveur plus efficace que ceux b tis sur une sch ma de bo te noire En effet le syst me clp FD se r v le tre en moyenne 4 fois plus rapide que CHIP dont l efficacit n est plus d montrer
210. m C min cur domain X s maz cur domain X s t1 s amp te s t1 s amp te s amp ti s to s amp ti s t s amp ti s t s cur_domain X s E lookup_store X s lookup_store X s If3X in r s then r else 0 infinity lookup_range R retourne le domaine li a R lookup_term C retourne l entier li C Tableau 2 s mantique d notationnelle de l op ration Tell CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 21 point fixe sur le store r sultat rendu par 7 X in r qui r value toutes les contraintes de SU X in r via 7 jusqu l obtention d un tat stable La fonction JT X in r ajoute au store deux versions de la contrainte X in r per mettant une prise en compte des contraintes indexicales dont la valeur volue au fil des calculs a une version de X in r o r est valu dans S gr ce la fonction s mantique r l criture r s repr sente le domaine syntaxique associ l valuation de r Cette version permet de disposer explicitement du domaine de X chaque tape b une version de X in r o r est inchang Ceci permettra la prise en compte future des indexicaux dans les stores plus contraints L valuation d un indexical ex dom X n cessite la r cup ration du domaine courant d une variable Du fait de version a cf ci dessus le domaine de toute
211. mes tr s diff rents ont t propos es et nous allons maintenant nous employer classifier ces r solveurs bool ens partir de syst mes effectivement implant s 5 1 1 M thodes bas es sur la r solution La m thode de r solution originellement con ue pour la logique des pr dicats peut vi demment tre sp cialis e au cas qui nous int resse 1 e propositionnel Cette m thode utilise une repr sentation clausale des formules bool ennes o chaque litt ral repr sente une variable bool enne il s agit donc d op rer en forme normale conjonctive Le principe de la m thode consiste en une suite d tapes dont chacune d entre elles prend deux clauses contenant des occurrences oppos es et produit une nouvelle clause logiquement quivalente CHAPITRE 5 CONTRAINTES BOOL ENNES 109 la conjonction des deux pr c dentes ce processus se poursuit jusqu production de la clause vide ou inconsistance ou de quelque cons quence logique recherch e Par exemple une certaine forme de cette m thode dite SL r solution appara t dans la version actuelle de Prolog HI 31 4 Cependant les faibles performances de ce r solveur limitent son emploi de petits probl mes Plusieurs raffinements ont t propos s en vue de limiter l espace de recherche potentiellement norme de cette m thode et on renverra 56 pour plus ample information Retenons simplement qu il ne semble pas y avoir d am lioration po
212. mf_clp_fd Library libwamcc a libclp_fd a Profile library libwamcc_pp a libclp_fd_pp a Some papers 24 25 26 27 28 17 presents clp FD and its extensions Basically clp FD deals with only one basic constraint X in r see section J 3 1 X is a finite domain variable and r denotes a range which can be not only a constant range e g 1 10 but also an indexical range using e min Y which represents the minimal value of Y in the current store e max Y which represents the maximal value of Y e val Y which represents the definitive value of Y e dom Y which represents the whole domain of Y From the basic X in r constraints it is possible to define high level constraints called user constraints as Prolog predicates Each constraint specifies how the constrained variable must be updated when the domains of other variables change In the clp FD system basic user constraints are already defined as built in predicates see section J 3 CHIP like constraints such as equations inequations and disequations can be used directly by the programmer A preprocessor will translate them at compile time So clp FD offers the usual constraints over finite domains as proposed by CHIP together with the possibility to define new constraints in a declarative way ANNEXE J MANUEL D UTILISATION DE CLP FD 256 J 2 Finite Domain variables A new type of data is introduced FD variables which can take a value in its domain reduced s
213. milaire b_load_variable w X e un entier n choue si n 0 et n 1 sinon empile n sur le heap et range son adresse dans le registre X CHAPITRE 5 CONTRAINTES BOOL ENNES 129 e une variable bool enne son adresse est rang e dans le registre X Les instructions d installation et d ex cution sont b_install_and_tell_cstr1 X0 bvalue0 X1 bvaluet pour le cas n 1 deux possibilit s suivant X1 e X1 est un entier si X1 bvaluel la paire X0 bvalue0 est mise en file et la proc dure de consistance est invoqu e sinon la contrainte r ussit puisque le corps n est pas satisfait e X1 est une variable bool enne un enregistrement est ajout a la liste appropri e de X1 r f rencant XO et bvalueo b_install_and_tell_cstr2 X0 bvalueO X1 bvaluet X2 bvalue2 pour le cas n 2 trois possibilit s suivant X1 et X2 e X1 est un entier similaire b_install_and_tell_cstri X0 bvalue0 X2 bvalue2 e X2 est un entier similaire b_install_and_tell_cstri X0 bvalue0 X1 bvaluel e X1 et X2 sont deux variables bool ennes un enregistrement est ajout la liste appropri e de X1 r f rencant XO et bvalue0 ainsi que l autre variable i e X2 et bvalue2 De m me un enregistrement est ajout e la liste appropri e de X2 r f rencant XO et bvalue0 ainsi que l autre variable i e X1 et bvalue1 Remarquons que seules 4 nouvelles instructions sont n cessaires pour int grer ce r solveur
214. monstrueux impliquant une compilation tr s lente qui a limit la diffusion de ce produit La table 7 pr sente les temps d ex cution de ces diff rents syst mes ainsi que le facteur d acc l ration ou de ralentissement si pr c d du symbole de wamcc par rapport CHAPITRE 3 IMPLANTATION DE WAMCC 72 eux Nous pouvons constater que notre objectif initial est largement atteint puisque wamcc est 1 5 fois plus rapide que Sicstus mul Par ailleurs il est 1 6 fois plus lent que Sicstus natif se situant ainsi entre les deux modes de compilation de Sicstus En ce qui concerne Quintus wamcc soutient bien la comparaison puisqu il est en moyenne aussi rapide Enfin wamcc est en moyenne 3 5 fois plus lent qu Aquarius Cet cart est d en grande partie la tr s bonne performance d Aquarius sur tak 9 fois plus rapide que wamcc qui d tecte lors de la compilation que le calcul est d terministe qui optimise au mieux l appel terminal et qui est tr s optimis pour les calculs entiers Notons que sur ce programme Aquarius est 2 fois plus rapide que la version quivalente crite en C Sans ce redoutable benchmark wamcc est en moyenne 3 fois plus lent En effet sur des programmes utilisant davantage les particularit s de Prolog unification et backtracking l cart est moindre ex sur zebra Aquarius est seulement 1 6 fois plus rapide que wamcc et sur boyer il est environ 1 3 fois plus rapide Nous pouvons do
215. n detail the 3 types of constraints shown in 4 4 that are necessary to model the extension to flow rate constraints 1 domain constraints on departure time variables this step is identical to the first step defined in 4 4 relations between sector entry time variables and departure time variables capacity constraints are modelled in the same way than in 4 4 for each flow constraint a variable V that corresponds to the adequate instant is created for a flight if the flight belongs to the constrained flow and reaches the constraint at instant V within T Reaches means that we will be interested in different instants of the flight according to the constraint type This instant can be a sector entry time a beacon over flying time a departure or arrival time Except this step 2 is identical to the second step above mentioned in 4 4 atmost_interval constraints this step is identical to the third step above mentioned in 4 4 As we can see the integration of flow rate constraints is very natural This illustrates the declarativity and extensibility of our model CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 187 8 4 7 A Simulation Aid Tool for Regulators Cost estimation of Regulation Plans Whatever the point of view may be either local or global regulators cannot have a precise idea of the effects of restrictions on traffic flows they impose because of the very large volume of data the great
216. nc constater que wamcc un syst me crit en quelques mois se compare tr s honorablement des syst mes sophistiqu s ayant demand plusieurs homme ann es de d veloppement Dans tous les cas les facteurs ne sont pas la mesure de la taille des systemes En effet si nous comparons la complexit des noyaux de Sicstus 35000 lignes de C et de wamcc 6000 lignes de C le facteur 1 6 en faveur de Sicstus n est pas si important D autant plus que le compilateur de Sicstus n cessite pas moins de 9000 lignes de Prolog contre seulement 3000 pour wamcc En ce qui concerne Quintus l utilisation intensive le l assembleur noyau certains pr d finis donne lieu un code beaucoup plus difficile maintenir que celui de wamcc sans pour autant que ses performances soient meilleures que celles de notre syst me Bien stir les performances d Aquarius sont remarquables mais elles le sont principalement sur des programmes purement arithm tiques et d terministes Ce qui ne refl te pas notre avis les applications type de Prolog Par contre les temps de compilation d Aquarius nous semblent trop p nalisants Celui ci n cessite 38 minutes pour compiler reducer un programme de moins de 400 lignes En comparaison wamcc n a besoin que de 50 secondes pour fournir un ex cutable qui certes est 2 7 fois plus lent mais s ex cute en dessous de la seconde En ce qui concerne la taille des ex cutables Peter Van Roy lui m me reconna t qu Aquarius
217. nes machines Nous comparerons wamcc la version mul e ainsi qu la version code natif Quintus ce langage a pendant longtemps t le plus rapide du march ce qui jus tifie sa notori t et aussi le fait qu un certain Richard O Keefe soit l un de ses 8traduction de speedup CHAPITRE 3 IMPLANTATION DE WAMCC T1 Quintus Aquarius 2 5 1 Programme boyer browse cal chat_parser crypt ham meta_qsort nand poly_10 queens 16 queens_n 8 queens_n 10 reducer sdda sendmore tak zebra Facteur d acc l ration 1000 1582 1 1624 1 1026 13358 Tableau 7 wamcc versus Prolog professionnels temps en sec implanteurs Quintus est galement bas sur un mulateur mais celui ci est crit en assembleur Notons que nous ne disposons que de la version 2 5 1 qui n est pas la plus r cente Aquarius c est aujourd hui le Prolog le plus rapide C est un syst me complexe qui g n re du code natif en passant par une machine abstraite originale plus performante que la WAM la BAM Le compilateur effectue norm ment de travail analyse de flots de donn es interpr tation abstraite d tection de d terminisme Mais en retour les temps de compilation sont tr s p nalisants La production de code natif partir du code BAM est aussi tr s sophistiqu e elle comporte par exemple un re ordonnanceur d instructions pour le Sparc C est peut tre ce c t
218. ng data e Atoms e g Hello World Atoms are stored in the symbol table a hash table e Lists of one character atoms e g H e 1 1 0 w 0 r 1 d e Strings e g Hello World where a string is a list of numeric codes e g 72 101 108 108 111 32 87 111 114 108 100 atom_length Atom Length Length of Atom is Length atom_concat Atom1 Atom2 Atom3 atom_concat Atomi Atom Atom3 Concatenes Atomi and Atom2 to give Atom3 ANNEXE I MANUEL D UTILISATION DE WAMCC 232 sub_atom Atom Start Length Atom1 The subatom of Atom beginning at the Startth character and Length characters long is Atomi char_code Char Code char_code Char Code Unifies the character Char with its the character code Code chars_codes Chars Codes chars_codes Chars Codes Interconverts the list of chars Chars with the list of corresponding character codes Codes atom_codes Atom Codes atom_codes Atom Codes Interconverts Atom with the corresponding list of character codes Codes atom_chars Atom Chars atom_chars Atom Chars Interconverts Atom with the corresponding list of characters Chars number_atom Number Atom number_atom Number Atom Interconverts Atom with the corresponding number Number number_codes Number Codes number_codes Number Codes Interconverts Number with the corresponding list of character codes Codes number_chars Number Chars number_chars Num
219. ning controller takes it on to find convenient entry and exit flight levels and the right coordination with neighbouring sectors When traffic allows 1t sectors can be grouped there are about 120 possible groups of sectors The European ATFM activity is structured in three levels 1 strategic level at this level long term measures are defined such as the traffic orientation scheme that dictates the routes operators have to use to go from specific departure areas to specific arrival areas National measures are also defined at this level modulation of controllers working hours agreements between military and civil air traffic services or use of main platforms scheduling 2 pre tactical level an important feature of the sector is its capacity i e the maxi mum number of flights that can enter the sector per hour This capacity is variable along the day and along the year Generally it is greater than the demand when one team of controllers manages one sector However some sectors are regularly overloa ded due to a limited number of controllers to structural reasons or to peak traffic in that case the demand can be greater than the capacity during certain periods of the day The pre tactical ATFM consists in preparing two days before the tactical day CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 174 a regulation plan which is a set of flow rate restrictions intended to avoid overloads within critical sectors 3
220. no 4 1987 pp 191 205 M Carlsson Design and Implementation of an Or Parallel Prolog Engine PhD dissertation SICS Sweden 1990 B Carlson M Carlsson Constraint Solving and Entailment Algorithms for cc FD Research Report SICS Sweden 1993 B Carlsson M Carlsson D Diaz Entailment of Finite Domain Constraints In 11th International Conference on Logic Programming Santa Margherita Italy MIT Press 1994 D Chemla D Diaz P Kerlirzin and S Manchon Using clp FD to Support Air Traf fic Flow Management In 3rd International Conference on the Practical Application of Prolog Paris France 1995 T Chikayama T Fujise and D Sekita A portable and Efficient Implementation of KL1 in ICOT NSF Workshop on Parallel Logic Programming and its Programming Environments CIS TR 94 04 Department of Computer Information Science Oregon 1994 P Codognet F Fages and T Sola A metalevel compiler for CLP FD and its combi nation with intelligent backtracking In Constraint Logic Programming Selected Re search A Colmerauer and F Benhamou Eds MIT Press 1993 BIBLIOGRAPHIE 266 21 22 23 24 25 26 31 32 33 D Diaz wamcc Prolog Compiler User s Manual INRIA Le Chesnay France 1994 D Diaz clp FD User s Manual INRIA Le Chesnay France 1994 P Codognet and D Diaz wamcc Compiling Prolog to C In 12th International Conference on Logic Programming Tokyo Jap
221. ns que l on pouvait apporter clp FD lorsque seuls les contraintes bool ennes taient utilis es Le gain en performance est de l ordre d un facteur 2 CHAPITRE 5 CONTRAINTES BOOL ENNES 133 clp B clp B FD CHIP Meil BDD Enum BCons schur 13 27 75 schur 14 35 75 schur 30 over flow schur 100 over flow pigeon pigeon pigeon pigeon pigeon pigeon queens 90 55 queens 233 73 queens over flow queens over flow queens over flow queens over flow queens over flow queens over flow ramsey 0 130 over flow ramsey 0 690 over flow ramsey 1 060 over flow ramsey 292 220 over flow ramsey 721 640 over flow Lo NOVY D D D vn vn a a Tableau 31 c1p B versus les autres r solveurs Un point important d velopper pour am liorer encore les performances de clp B FD ou de clp B est d int grer des heuristiques plus complexes pour la phase d num ration adapt es au cas particulier des bool ens En effet clp FD n a comme heuristique que le first fail classique qui va choisir d num rer d abord les valeurs de la variable dont le domaine est le plus petit Ceci ne sert rien dans le cas des bool ens toutes les variables non encore instanci es ont un domaine de cardinalit 2 Il faudrait donc pouvoir d terminer par exemple le ou les variables qui apparaissent dans le plus de contraintes pour g n raliser cette notion de first fail Ceci n cessite cependant de pouvoir d terminer si une contr
222. nstaller tout le syst me Cette mani re de proc der permet d crire la plupart du code de mani re ind pendante de la machine Par exemple qu un registre WAM puisse tre allou un registre machine ou non le m me nom pr cis dans le fichier de description de la WAM peut tre utilis par la suite C est la charge du programme de configu ration de g n rer les bonnes d finitions de registres ou de macros pour permettre cette transparence 3 3 4 Gestion de la modularit Un fichier source Prolog constitue un module et il est donc possible de d composer une grosse application en plusieurs modules Les points importants du syst me de modules sont e chaque module a son propre espace de noms de pr dicats ce qui est un point important pour le d veloppement de grosses applications CHAPITRE 3 IMPLANTATION DE WAMCC 66 e le syst me de modules de wamcc est bas sur les proc dures ce qui signifie que seuls les pr dicats sont locaux un module alors que les termes sont communs tous les modules e le syst me de modules est plat et non pas hi rarchique tout module est visible des autres modules e aucun surco t n est d l appel d un pr dicat se trouvant dans un module diff rent de celui de l appelant e chaque pr dicat d fini par l utilisateur ou pr d fini appartient un seul module e par d faut un pr dicat n est visible que dans le module o il est d fini i
223. nt grer par exemple directement des contraintes d implication d quivalence etc CHAPITRE 1 INTRODUCTION 8 Ceci est cependant assez vident du fait que les bool ens sont un cas particulier de do maines finis et peut sembler un simple exercice d cole Le plus surprenant cependant est que le r solveur ainsi r alis soit tres efficace il est plus rapide que le r solveur de CHIP d environ un ordre de magnitude et se compare favorablement la plupart des r solveurs bool ens ad hoc bas s sur d autres algorithmes comme les m thodes num ratives les BDD ou les techniques de recherche op rationnelle Notons finalement que ces r solveurs utilisent en g n ral de nombreuses heuristiques pour am liorer les performances alors que notre r solveur n en a pour l instant aucune et que l on peut donc encore esp rer une am lioration des performances 1 5 Le syst me clp FD L approche RISC des domaines finis peut tre implant e tr s efficacement dans un moteur logique classique bas sur la WAM la Warren Abstract Machine qui est l architecture standard des compilateurs Prolog et de bon nombre de syst mes logiques tendus Un tel syst me est implant dans le langage clp FD d crit dans cette th se Il a cependant d abord fallu avant de r aliser clp FD implanter un syst me Prolog clas sique pour servir de support au syst me de programmation par contraintes Celui ci est appel wamcc car il
224. nutes width enter A N is called capacity of A The problem consists in avoiding overloads all along the tactical day by delaying certain flights In our model we have made the choice that capacity constraints affect all flights without any discrimination no flight is privileged with regard to CLP slot allocation We have developed a new constraint the atmost_interval constraint that enables the implementation of a certain number of aircraft per contiguous slices of 6t minute width the cumulative constraint of CHIP allows reasoning on sliding windows of 6t minute width and is so too stringent for our needs CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 175 Description Of The Slot Allocation Problem Model The slot allocation problem under capacity constraint can be defined by its input and output data The input data are e the demand constituted of a set of filled flight plans LF Oi Di SR Sir EET 1 Sim BETin where F is a flight identifier O and D are its origin and destination S 1 Sin are the sectors crossed by the flight EET EET n are the expected by the flight carrier entry times in those sectors E ET is the expected departure time of the flight There are 6000 flight plans a day on average e the resources defined by a set of airspace volume capacity constraints CC S 1 eeg Simt Capas MTS H2 where CC is a constraint identifier Sj1 Sjm are the constrained
225. o 2 4 C3 X in 2 6 which then reduces the domain of Y to 0 2 C4 Y in 02 Note that the unique solution X 3 Y 1 has not yet been found So in order to efficiently achieve consistency the traditional method arc consistency only checks that for any constraint C involving X and Y for each value in the domain of X there exists a value in the domain of Y satisfying C and vice versa So once arc consistency has been achieved and the domains have been reduced an enumeration called labeling has to be done on the domains of the variables to yield the exact solutions Namely X is assigned to one value in Dx its consequences are propagated to other variables and so on If an inconsistency arises other values for X are tried by backtracking Note that the order used to enumerate the variables and to generate the values for a variable can improve the efficiency in a very significant manner see heuristics in 67 In our example when the value 2 is tried for X C2 and C4 are woken because they depend on X Cy sets Y to 2 and C4 detects the inconsistency when it tries to set Y to 0 The backtracking reconsiders X and tries value 3 and as previously C2 and C4 are reexecuted to set and check Y to 1 The solution X 3 Y 1 is then obtained 8 3 3 Optimizations The uniform treatment of a single primitive for all complex user constraints leads to a better understanding of the overall constraint solving process and allows for
226. o_inline option is useful when debugging since it allows the user to trace inline predicates An inline predicate is a predicate which does not give rise to a classical Prolog call and thus it is not visible by the debugger The no_inline option allows the user to trace calls to inline predicates as well ANNEXE I MANUEL D UTILISATION DE WAMCC 221 e the no_test_stack is only useful for architecture which cannot test stack overflows by hardware e g Sony Mips NeXT stations On these machines tests are done by software and are quite expensive With this option overflows are not checked and thus the program runs faster However overflows are not detected e if the v option is not specified wamcc runs silently e wamcc returns 0 if the compilation has succeeded and 1 otherwise 1 2 2 Generating Object Files From the C files generated by wamcc 1t is possible to obtain an object file using the GNU C compiler A shell script w_gcc can also is provided t make this compilation w_gcc only invokes gcc with some necessary appropriate options like Ipath w_gcc can be used as simple as the C compiler The following sequence generates a file prog o from the Prolog file prog pl wamcc prog fast math w_gcc c 02 prog c 1 2 3 Linking Object Files From one or several object files prog 0 prog o it is possible to generate an executable simply by invoking w_gcc with these files as follows W_8CC o prog prog 0 pr
227. oc der ne sert qu aider le debugger C et il est g n ralement possible de la d sactiver gr ce une option du compilateur ex fomit_frame_pointer en gcc Dans le cas contraire il serait possible de g n rer une instruction assembleur pour initialiser ce registre e il est tout fait possible d ex cuter de vrais appels de fonctions l int rieur de ces pseudo fonctions En particulier les macros associ es aux instructions WAM s expansent pour la plupart en appel de fonctions de la librairie de wamcc Ceci permet de privil gier la taille du code donc la vitesse de compilation au l ger d triment de la vitesse d ex cution Etudions maintenant le code n cessaire l amor age du calcul qui vient d tre d crit Soit ex cuter un premier pr dicat g n ralement un top level d adresse p_lab CHAPITRE 3 IMPLANTATION DE WAMCC 60 include lt setjmp h gt void Call_Next WamCont p lab jmp buf jumper int t 1024 void Label_Success Indirect_Goto p_lab void Label_Fail Bool Call Prolog WamCont p lab void Call Prolog Success void Create_Choice_Point asm Label_Success ALTB B Label_Fail CP Label_Success longjmp jumper 2 ret_val set jmp jumper if ret_val 0 void Call Prolog Fail void Call_Next p_lab asm Label Fail Delete_Choice_Point return ret_val 2 longjmp jumper 3 La fonction Call_Prolog a pour role de lancer l ex cution
228. of the arguments of Term If Term is uninstantiated then List must be instantiated either to a list of determinate length whose head is an atom or to a list of length 1 whose head is a number Note that this predicate is not strictly necessary since its functionality can be provided by arg 3 and functor 3 and using the latter two is usually more efficient ANNEXE I MANUEL D UTILISATION DE WAMCC 234 copy term Term CopyOfTerm CopyOfTerm is a renaming of Term such that brand new variables have been substi tuted for all variables in Tern setarg ArgNo CompoundTerm NewArg Replaces destructively argument ArgNo in CompoundTerm with NewArg and undoes it on backtracking This should only used if there is no further use of the old value of the replaced argument numbervars Term N M Unifies each of the variables in term Term with a special term VAR i where i ranges from N to M 1 see write 1 or writeq 1 This predicate is used by listing 1 1 3 4 Test Predicates The following test the type of the term X var X inline predicate Tests whether X is currently uninstantiated var is short for variable An uninstan tiated variable is one which has not been bound to anything except possibly another uninstantiated variable nonvar X inline predicate Tests whether X is currently instantiated This is the opposite of var 1 atom X inline predicate Checks that X is currently instantiated to an a
229. og o lwamcc The command will create the executable prog by linking all object files progli n o A library containing the run time and the built in predicates must be provided via the option llibrary There are two libraries available libwamcc a and libwamcc_pp a The former is the standard library while the later allows the user to obtaind profile information when quiting the program 3the name of this shell script is w_C_compiler_name so if wamcc is moved from one directory to another one w_gcc must be edited to update the pathnames ANNEXE I MANUEL D UTILISATION DE WAMCC 222 hex2p1 and pl2hex Utilities At compile time each predicate gives rise to a C identifier which is the hexadecimal repre sentation of the predicate At linking time if a symbol is multiply defined or not defined the linker will emit a message involving the hexadecimal name of the predicate Two utilities are provided to allow the user to translate in both directions Prolog atoms and hexadecimal representations p12hex prolog_name Prolog to hexadecimal Example pl2hex append 3 displays X617070656E64_3 hhex2p1 hexa name hexadecimal to Prolog Example hex2p1 X617070656E64 3 will display append 3 1 2 4 Stack Overflow Messages When one stack overflows wamcc exits with the following message Fatal Error stack_name stack overflow size current_size Kb env variable env_var_name where stack_name is the name of the stack which has overflowed
230. oint multiplication point point division point point fonction utilisateur argument de fonction min Y terme indexical min max Y gt terme indexical max ct titta tite tixto t1 lt to t t f ar ax fonction utilisateur C param tre terme n infinity cty cty cti cta ctix cta cti lt cta ct gt cta Tableau 36 syntaxe tendue de la contrainte X in r Tant qu il n est pas encore vrai le domaine de X n est pas modifi car la fonction retourne 0 infinity D s que ce test est vrai alors X est mis jour par la contrainte cz car la fonction retourne ra Notons que cette mani re de faire n est pas la plus performante puisque e tant que le test est faux il est inutile d valuer rz ce qui est fait lors de l appel de la fonction if_incl e aussit t que le test est vrai il est inutile de continuer l valuer car nous savons qu il le sera toujours dans la suite du calcul cf section 6 Malgr cela les r sultats obtenus sont tr s bons cf s ries magiques en section 7 2 1 ce qui est de tr s bonne augure pour une future implantation de Ask qui vitera ces d fauts CHAPITRE 7 CONTRAINTES COMPLEXES 160 Nouvelles fonctionnalit s Comme nous l avons vu pr c demment les fonctions utilisateurs permettent d encoder les contraintes conditionnelles Ainsi la contrainte xy z X Y Z de l exemple 7 3 pe
231. omaine fini est tout simplement un ensemble de valeurs num riques ou symboliques de cardinalit finie comme par exemple 1 2 5 12 1 45 ou rouge vert bleu Les contraintes propos es sont aussi bien des contraintes arith m tiques telles que des quations in quations ou dis quations entre des termes lin aires que des contraintes symboliques qui ne rel vent pas des op rations math matiques habi tuelles comme par exemple la relation atmost N X X 1 V qui signifie qu au plus N variables X sont gales l entier V Les algorithmes de r solution de contraintes utili s s d rivent des techniques de consistance des Constraint Satisfaction Problems CSP introduits en Intelligence Artificielle pour la reconnaissance des formes il y a une vingtaine d ann es cf les travaux de Montanari et de Waltz L id e de base est de construire et de bien que cette restriction la lin arit puisse facilement tre lev e CHAPITRE 1 INTRODUCTION 3 mettre jour un r seau de contraintes entre des variables en nombre fini pouvant prendre une valeur dans un domaine fini On a donc un graphe dont les noeuds sont les variables et les arcs les contraintes La satisfiabilit de l ensemble de contraintes est assur e en pro pageant de proche en proche propagation dite locale les valeurs possibles des variables travers les contraintes qui les lient entre elles On utilise en g n ral pour des raisons d effi cacit
232. ompte les intervalles d entiers permettant par l m me une criture d clarative et efficace des fonctions d finies par Morceaux CHAPITRE 4 IMPLANTATION DE CLP FD 77 4 1 2 Nouvelles structures de donn es La prise en charge des contraintes DF n cessite la d finition de nouvelles structures de donn es Celles ci seront toutes stock es dans le heap Repr sentation des environnements Un environnement repr sente le contexte dans lequel doit tre r ex cut e une contrainte Plus pr cisement il contient l adresse des variables DF et des param tres domaines et les valeurs des param tres entiers cf figure 7 Un nouveau registre AF pointe alors l environ nement courant pointeur sur variable DF o entier LR ou pointeur sur domaine Argument 0 Figure 7 repr sentation interne d un environnement Dans ce qui suit les variables DF sont r f renc es fu i Frame Variable et les param tres fp j Frame Parameter o 7 et j sont des entiers servant d indice dans l environnement i e par rapport AF Ainsi la clause de l exemple 2 1 x y c X Y C X in min Y C max Y C Y in min X C max X C sera transform e la compilation en le pseudo code c1p FD x y c X Y C cr er un environnement 3 l ments charger X l indice 0 X fv 0 charger Y l indice 1 Y fv 1 charger C l indice 2 C fp 2 fv 0 in min fv 1 fp 2 max fv 1 fp 2 f
233. on e instructions de chargement de registres e instructions de contr le e instructions d indexation gestion des points de choix Ce d coupage correspond la pr sentation que nous allons faire du jeu d instructions Celle ci sera ascendante partant de la compilation de la t te de clause et des diff rents buts du corps nous verrons comment les instructions de contr le permettent d agencer les codes obtenus Apr s quoi nous expliquerons comment relier les instructions produites a E j f Ru pour chaque clause grace aux instructions d indexation de mani re prendre en charge la gestion des points de choix CHAPITRE 3 IMPLANTATION DE WAMCC 39 Instructions de r cup ration de registres Ces instructions sont produites par la compilation de la t te Rappelons que l unification d une t te de clause avec les arguments a deux buts distincts quoique r alis s conjointe ment v rifier que la clause est utilisable et initialiser ses variables En particulier une variable singleton ne demande aucun traitement puisque elle est unifiable avec tout terme et qu il ne sert rien de la renseigner du fait qu elle n a qu une seule occurrence Comme indiqu pr c demment Warren a d compos l unification pour des raisons vi dentes de performances En effet lors de la compilation il est possible de distinguer les cas suivant pour chaque argument de la t te e premi re occurrence d une variable donc
234. on pour conclure e il est possible de compiler les Asks tout comme les Tells du fait que les condi tions suffisantes de d tection de la satisfaction sont g n r es de mani re statique cf section 6 De plus il est possible de sp cifier divers degr s de pr cision pour ces conditions e Ask permet l utilisateur de sp cifier des sch mas de contr le dirig s par les donn es donc de contr ler le processus de r solution de contraintes ce qui permet d obtenir CHAPITRE 7 CONTRAINTES COMPLEXES 154 des contraintes plus performantes e Ask permet de d finir de mani re d clarative des contraintes c bl es dans les sol veurs du type bo tes noires L op ration Ask n est pas encore implant e dans clp FD mais nous montrerons en section 7 3 2 comment simuler un cas particulier de Ask c A o A est lui m me une contrainte On appelle ce type de Ask une contrainte conditionnelle 17 L implication logique gt ca se d finit comme cy C2 et C gt ac et l quivalence entre c et cz se d finit de mani re classique comme gt Cz et co gt C qui se traduit en fin de compte par 4 Asks Etudions tout de suite des utilisations de contraintes conditionnelles 7 2 1 Le probl me des s ries magiques Le probl me des s ries magiques 67 consiste trouver une suite d entiers 2o tn 1 telle que chaque x repr sente le nombre d occurrences de l entier i dans l
235. onda mental d finir pour comprendre comment l information s accumule et se propage gr ce aux contraintes 2 2 Le cadre PLC C syntaxe et s mantique Nous pr sentons la syntaxe des programmes logiques avec contraintes et leur s mantique op rationnelle 2 2 1 Syntaxe des programmes logiques avec contraintes D finissons maintenant tant donn un syst me de contraintes C D un programme logique avec contraintes sur C Consid rons un ensemble P de pr dicats et un ensemble num rable VY de variables qui seront utilis s pour d finir les pr dicats logiques dans le langage PLC C Les symboles utilis s dans P doivent tre disjoints de ceux de D et on consid rera en outre que l ensemble des variables apparaissant dans D est contenu dans Y On suppose finalement que D contient un pr dicat qui sera trait comme l identit et sera utilis en notation infixe D finition 2 3 Un programme logique avec contraintes de PLC C est un ensemble de clauses d finies de la forme p X a Yi 5 Va CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 13 X Yi Y sont des vecteurs de variables de V deux deux distinctes p X P et 0 q Y aiy dal Ya EPUD p X est appel la t te de la clause et q Y n Vn son corps On remarquera que le corps de la clause contient toutes les contraintes et que les arguments des pr dicats sont donc toujours des variables Ainsi lor
236. ons Pour appliquer ce principe nous devrons nous limiter un sous ensemble de contraintes sur lequel A r peut tre exprim sous la forme d un intervalle ou d unions intersections d intervalles L obtention d un intervalle pour le test va se faire en deux temps Premi rement red finis sons M pour le cas r dom Y tel que M dom Y M min Y max Y au lieu de l ancienne valeur dom Y cf table 34 Notons que cela ne remet pas en cause la validit de la proposition 6 5 du fait que VS Xs C min X max X 5 Ceci ne remet donc pas en cause le corollaire 6 1 assurant la correction Cette modification nous assure d sormais que tous les domaines terminaux i e les feuilles de l arbre syntaxique de A r sont des intervalles Notons galement que nous avons restreint les domaines possibles pour r i e X in rxctet X in r ct ne peuvent tre trait s dans ce sch ma D finition 6 8 Soit une contrainte c X in r E c est la formule syntaxique d finie comme E c min X max X C Ar Le syst me de r criture suivant va alors simplifier l expression c pour faire dispara tre le test d inclusion de domaine et le remplacer par des tests de bornes d intervalles Les termes manipul s par le syst me de r criture sont donc de la forme ry r o ri et ro sont des domaines Etant donn e la liste de r gles suivante nous it rons du haut vers le CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONT
237. onsid r es que de mani re conditionnelle i e sous r serve qu une certaine condition soit v rifi e Ceci se rapproche beaucoup des m canismes de retard que l on trouve en Prolog comme par exemple les d clarations wait ou delay de certains syst mes ou le s minal freeze de Prologll Ces m canismes de retard sont li s en programmation logique des conditions d instanciation de certaines variables Prolog le m canisme cor respondant n cessaire en PLC consid rera de mani re plus g n rale comme conditions des contraintes sur les variables du domaine d int ret Supposons par exemple que l on veuille d finir la contrainte atmost N X1 X 1 V Il faut pouvoir exprimer que des que N variables auront la valeur V toutes les autres auront des valeurs diff rentes de V On veut donc avoir comme conditions des contraintes non exprimables par les simples tests sur l instanciation des delay ou freeze et en cas de satisfaction ajouter de nouvelles contraintes Xj 4 V CHIP propose pour cela une construction if then else la signi fication imm diate mais celle ci reste limit e puisque seules des quations ou in quations lin aires comportant deux variables au plus peuvent appara tre en condition Ceci est d l approche bo te noire qui a pour cons quence la n cessit de d finir pour chaque type particulier de contrainte condition un test sp cifique Heureusement l approche RISC apporte l encore une so
238. onstraint Logic Pro gramming language with Finite Domain constraints has been chosen to implement our practical application 8 1 Introduction The density of traffic over Europe has been steadily increasing for several years This growth is difficult to manage and causes delays for passengers and work overloads for controllers ATFM aims at adapting a variable demand the airplanes which want to fly to the variable available capacity of the system of control so as to use this capacity at best It has significant safety and economic consequences as well Our research is pursued in the French Air Navigation Research Center CENA that is involved in the development of the future Air Traffic Control system This work will be integrated into the SPORT decision support system for traffic flow management This system helps flow managers in analyzing traffic data and in preparing flow management measures It is operational in the six French Air Control Centers and at the Eurocontrol Central Flow Management Unit located in Brussels Figure 20 is a view of the SPORT system showing the French sectors and the most congested routes CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 172 FRANCE vR A UPPER Figure 20 Display of SPORT system In this paper a CLP approach is used to solve the ATFM problem of departure slot allocation clp FD a CLP language with Finite Domain constraints has been chosen to implement this practical appl
239. ors incr ment fd_term_parameter_in_A_frame V V doit tre un entier qui est alors rang dans le mot point par AF AF est alors incr ment Pour chaque contrainte les instructions suivantes sont alors produites CHAPITRE 4 IMPLANTATION DE CLP FD 85 fd_install_constraint install_proc V r initialise AF avec le contenu de V et CC avec l instruction suivante avant de donner le contr le au code d adresse install_proc fd_call_constraint initialise CC avec l instruction suivante et donne le contr le au code d ex cution de la contrainte point e par CF Instructions d installation des contraintes Pour chaque contrainte une proc dure d installation est g n r e dont le role est de cr er et de charger une structure de donn e interne pour cette contrainte cf repr sentation interne des contraintes en section 4 1 2 Cette proc dure initialise galement les listes de d pen dances appropri es de toutes les variables utilis es par cette contrainte Par exemple pour la contrainte c X in min Y infinity le code d installation ajoutera un pointeur vers c dans la liste de contraintes d pendant de min Y fd_create_C_frame constraint_proc tell_fv cr e sur le heap une structure pour la contrainte dont le code d ex cution se trouve a l adresse constraint_proc et dont la variable contrainte est la tell_fvi me CF pointe cette structure ind_min ind_max fd_install_4 ind_min_max 7 fv ind_
240. pagation C est ici que nous b n ficions du fait d avoir plusieurs listes de d pendances distinctes pour viter des r veils inutiles Notons que lorsque le domaine courant de X est d j compris dans celui d not par r issues V rifDomaine et V rifEntier cette op ration est inutile En section 4 3 3 nous analyserons les sources de tels appels pour voir s il est possible de les d tecter et d en r duire le nombre La phase de propagation g re l ensemble des contraintes r activer La r ex cution d une de ces contraintes peut son tour enrichir cet ensemble Du fait que l ordre de ces r ac tivations n influe pas sur la correction nous avons toute latitude sur la mani re de g rer cet ensemble Nous pouvons le repr senter explicitement tas pile file ou adopter un sch ma d ex cution bas sur des continuations implicites Dans ce cas apr s r duction du domaine de X toute contrainte d pendant de X est imm diatement ex cut e par un 3la valeur du registre CC doit tre empil e sur la pile locale pour tre restaur e apr s la propagation CHAPITRE 4 IMPLANTATION DE CLP FD 90 appel imbriqu Ceci est tres similaire l ex cution des buts en PL o l on peut choisir entre la strat gie en profondeur d abord de Prolog et des gestions plus complexes des buts de la r solvante comme cela se fait dans les langages logiques concurrents En ce qui concerne l implantation de clp FD nou
241. par notre architecture WAM En revanche il n est plus n cessaire d utiliser des m thodes d estampillages comme cela tait le cas avec les variables domaines puisque une variable bool enne ne sera r duite qu une seule fois pour prendre sa valeur d finitive Indexation Ici encore l on proc de comme pour les variables domaines en consid rant une variable bool enne comme une variable Prolog classique et donc en essayant toutes les clauses Nouvelles structures de donn es pour les bool ens clp B utilise une file de propagation pour la phase de consistance Notre pr sentation se basera sur une file explicite dont le d but et la fin sont point s par les registres BP et CHAPITRE 5 CONTRAINTES BOOL ENNES 126 TP comme dans la version initiale de c1p FD Toutefois il est possible d utiliser une file implicite similairement ce qui a t pr sent dans la version optimis e de clp FD Les l ments de cette file sont de couples X Bvalue indiquant que la valeur Bvalue doit tre affect la variable X L autre structure de donn es n cessaire permet d enregistrer les informations d une variable bool enne X cf figure 16 et se compose de e le mot tiquet auto r f rence comme pour les variables domaines cf section 4 1 1 e listes de d pendances pour raisons videntes d efficacit nous distinguons les con traintes activer lorsque X sera instanci 0 i e contraintes d
242. partir de chaque bloc d acc der au bloc pr c dent de m me type Lorsqu un nouveau bloc doit tre allou le calcul de son adresse revient au calcul du maximum entre les deux sommets de pile La solution avec deux piles distinctes dites de contr le et de choix est adopt e dans certaines implantations commerciales Toutefois l utilisation d une seule pile simplifie la synchronisation des points de choix et des environnements gr ce au calcul du maximum d crit pr c demment Ainsi lorsqu un environnement est lib r alors qu un point de choix a t cr au dessus de lui par un des ses fils l espace de cet environnement n est pas r utilis puisque il sera n cessaire lors du backtracking CHAPITRE 3 IMPLANTATION DE WAMCC 28 3 1 2 La pile de restauration ou trail Int ressons nous pr sent au probl me de la repr sentation des substitutions Le fait que chaque tat lt r 0 b gt donne lieu un environnement o sont stock es les variables locales de la clause revient repr senter o par un vecteur o un l ment est associ de mani re bi univoque une variable de la clause Chaque l ment de o i indique alors la valeur associ e la i me variable de la clause La figure 1 nous permet de constater que certaines substitutions affectent des variables n apparaissant pas dans la clause courante Ceci est mis en vidence par des fl ches de gauche droite Ces liaisons affectent alors des cji
243. pas encore li e e autre occurrence d une variable donc li e e constante e entier e liste vide trait e comme une constante particuli re e liste non vide elle contient un Car et un Cdr e structure Dans le cas de termes compos s l unification des sous termes est galement d compos e gr ce des instructions sp cifiques Dans la pr sentation qui suit nous notons le i me registre A plut t que A i pour des raisons de clart Quand l criture V elle d note une variable temporaire i e X j ou permanente i e Y j Le code WAM g n r pour unifier le i me registre avec le i me argument de la t te d pend de ce dernier comme suit e premi re occurrence d une variable V get_variable V A e autre occurrence d une variable V get_value V A 3variable n ayant qu une seule occurrence dans la clause CHAPITRE 3 IMPLANTATION DE WAMCC 40 e constante C get_constant C A e entier N get_integer N A e liste vide get_nil A e liste non vide get_list A unify_ unification du Car unify_ unification du Cdr e structure F N get_structure F N A unify_ unification du premier sous terme unify_ unification du dernier sous terme L instruction get_variable V A effectue une simple copie de V dans A ce qui peut donner lieu une optimisation si V est une variable temporaire L instruction get_value V A applique la fonction d unification su
244. pation m moire de cette pile est proportionnelle au nombre de points de choix Aussi serait il bon de pouvoir minimiser ce nombre En pile globale L encore il n y a pas de r gle g n rale pour r cup rer de l espace pendant l avanc e Toutefois le fait de r cup rer les environnements entra ne des trous dans cette pile Prenons le cas d une variable permanente Y li e un terme t du heap Si aucune autre variable n est li e t lors de la lib ration de l environnement de Y les mots occup s dans le heap pour t sont d sormais inutiles Un garbage collector peut donc tre mis en oeuvre sur la pile globale Le fait que la pile globale ne puisse tre r cup r e qu au backtracking a conduit Warren apporter une restriction la notion de variables temporaires En effet la gestion de certaines variables au travers des registres a pour inconv nient majeur de ne pas pas offrir de notion d adresse du mot stockant la variable Supposons alors que la premi re occurrence d une telle variable apparaisse dans l appel d un des buts du corps Cette variable devra donc tre charg e dans un registre et pour cela elle devra tre allou e l adresse a de mani re pouvoir effectuer l affectation ALi lt REF a gt Du fait que nous avons consid r cette variable comme temporaire seule la pile globale est susceptible CHAPITRE 3 IMPLANTATION DE WAMCC 37 de Paccueillir l environnement courant n ayan
245. perte de valeurs 128 512 donc un message d avertissement est affich Cette repr sentation t adopt e car elle est simple correcte et que les algorithmes associ s aux op rations sur les domaines peuvent tre implant s efficacement Il aurait t possible d utiliser une repr sentation par union d intervalles qui n aurait pas eu les m mes limitations de m me qu il aurait t possible d enregistrer une base 8 permettant de coder tous domaines trous appartenant l intervalle 8 8 vector_maz Toutefois ceci aurait nui l efficacit sans tre vraiment utile puisque dans la plupart des probl mes les domaines impliqu s sont petits et proches de 0 Si tel n est pas le cas il est toujours possible d noncer son probl me une translation pr s La figure 9 montre les repr sentations internes d un domaine 01011011011010101 10100101101010010 10010011101001101 vecteur de bits A O Extra contraint domaine vide domaine intervalle domaine a trous min gt max vecteur inutilise vecteur alloue Figure 9 repr sentations internes d un domaine CHAPITRE 4 IMPLANTATION DE CLP FD 81 Repr sentation des variables DF Les informations associ es une variable DF X sont divis es en 2 parties cf figure 10 domaine on y trouve le nombre d l ments et la repr sentation du domaine non vide Cette partie utilise une estampille pour viter les mises en trail multip
246. plus rapide voire plus selon les exemples test s Ainsi l approche RISC prouve qu elle permet de gagner la fois en simplicit et en efficacit clp FD semble donc r aliser notre objectif initial concevoir un syst me de programmation logique avec contraintes sur les domaines finis extensible simple efficace et modulaire Chapitre 2 La programmation logique par contraintes 2 1 Les systemes de contraintes La mani re la plus simple de d finir une contrainte est de la voir comme une formule logique atomique relation qui est interpr t e dans une structure particuli re et non pas dans une interpr tation de Herbrand comme le sont les pr dicats logiques classiques C est d ailleurs la d finition la plus usit e et traditionnelle en PLC originellement propos e par Jaffar et Lassez 44 Cependant une formalisation plus g n rale a r cemment t propos e par V Saraswat 63 qui consid re les syst mes de contraintes comme une g n ralisation des syst mes d information de Scott 64 qui ont prouv leur utilit dans divers domaines de s mantique de la programmation depuis plus d une d cennie Cette approche met l accent sur la d finition d une relation de satisfaction entailment en anglais de contraintes qui d finit le coeur de la s mantique du syst me de contraintes Cette relation de satisfaction indiquera comment les contraintes se d duisent les unes des autres et devra v rifier certain
247. pore un r solveur bool en bas sur ces techniques Il s av re en fait que le r solveur utilisant la propagation est bien plus efficace que celui bas sur l unification bool enne tel point que dans CHIP il est le r solveur par d faut pour les bool ens 5 1 6 PLC versus r solveurs d di s Il faut aussi distinguer dans la classification pr c dente entre les r solveurs bool ens d di s destin s prendre en entr e un ensemble de formules bool ennes et les r solveurs qui sont int gr s dans des langages de PLC car ceux ci offrent une flexibilit bien plus grande en proposant un langage logique complet pour noncer le probl me et g n rer les formules bool ennes r soudre Seuls PrologIII CHIP et clp B FD tombent dans cette derni re cat gorie Les avantages de l int gration dans un langage de PLC sont les suivants e d abord le langage logique peut tre utilis comme m talangage pour poser les contraintes bool ennes au lieu de donner une formulation bool ennes explicite par exemple une forme clausale qui est en g n ral complexe et assez illisible CHAPITRE 5 CONTRAINTES BOOL ENNES 113 e ensuite les heuristiques de calcul peuvent tre int gr es dans le programme lui m me ceci tant donc l oppos d un r solveur bool en ferm avec un nombre limit d heu ristiques pr d finies e enfin ceci permet diverses extensions comme par exemple les pseudo bool ens 8 ou l
248. portant sur un ensemble de variables incluant mais dont l intersection avec X Y Z Y est vide De ce fait la mise jour de Z entra ne une mise jour de A donc un re calcul de R arbitrairement important mais qui n influence aucune des variables X Y Z T Cet exemple met en vidence un impact n gatif de l optimisation 3 qui en ne rajoutant pas la contrainte Cz X Y T la file de propagation sous pr texte qu elle s y trouve d j CHAPITRE 4 IMPLANTATION DE CLP FD 102 engendre de deux calculs de R au lieu d un seul Le point de d part est d une modification de T Sans optimisation 3 Etape Ex cution de utile file de propagation 1 Tin oui Cx T Cz X Y T 2 Cx T oui Cz X Y T Cy X Cz X Y T 3 CALA Y T oui Cy X Cz X Y T CA Z 4 Cy X oui Cz X Y T Ca Z Cz X Y T 5 Cz X Y T oui C4 Z Cz X Y T Ca Z 6 C4 Z oui Cz X Y T CA Z R 7 Cz X Y T non C4 Z R 8 C4 Z non R 9 R oui propag_R 10 propag_R oui Nous pouvons distinguer 3 occurrences de Cz X Y T en file i apr s modification de T tape 1 ii apr s modification de X tape 2 et iii apr s modification de Y tape 4 Sans optimisation c est l occurrence ii qui calcule la valeur finale de Z donc de A en tape 6 avant de lancer le calcul de R qui sera alors d finitif L occurrence iii correspond alors une r ex cut
249. pr dicats d un m me mo dule Ainsi seuls les appels extra modules n cessitent la consultation de la table et seront donc plus co teux que les appels intra modules Notons toutefois que cette approche n est valide que sous certaines hypoth ses non for mul es dans 42 concernant le code produit par gcc e il ne doit pas n cessiter de variables locales i e tout le code doit pouvoir se contenter des registres En effet le fait de se brancher au milieu de la fonction donc de sauter le prologue de celle ci fait qu il n y a pas r servation d espace dans la pile de C pour les variables locales Ce qui implique soit de n utiliser que des variables globales soit de toujours compiler avec l optimiseur de registres option 02 de gcc puisque sans cela Srappelons que le prologue d une fonction d cr mente le pointeur de pile sp la pile C pointe vers le bas du nombre de variables locales n cessaires la fonction CHAPITRE 3 IMPLANTATION DE WAMCC 56 aucune variable locale n est mise en registre Et m me dans ces deux cas rien n assure que gcc n aura pas besoin de variables locales pour ses calculs interm diaires e aucune instruction associ e au pr dicat ne doit tre d plac e avant l tiquette de branchement ex label_p Or il semble difficile de garantir cela Consid rons l acc s un l ment du tableau jmp tb1 1 Celui ci se traduit par une instruction de char gement de l adresse de
250. qu e est instanci e mais pas la valeur d sir e Le corps de la contrainte n est donc pas satisfait c est sa n gation qui l est et donc la contrainte est trivialement satisfaite La figure 19 nous permet d valuer les proportions de chaque issues pour quelques instances des programmes de test LE ReducDomaine E VerifEntier schur 13 EchecEntier Suspend 150000 i WS DejaResolue 112500 75000 37500 queens 8 ramsey 13 Figure 19 proportion de chaque issue de la proc dure de consistance Tout comme pour clp FD l issue V rifEntier correspond un Tell inutile puisqu il r ussit sans modifier la variable contrainte Ici encore des optimisations sont envisageables CHAPITRE 5 CONTRAINTES BOOL ENNES 132 pour viter de telles r activations inutiles Toutefois les r sultats empiriques nous ont mon tr s que ce genre d optimisations permettaient bien de r duire le nombre de r activations inutiles mais que cela ne se traduisait pas par un gain sur le temps d ex cution En effet un Tell inutile se r duit une comparaison entre deux entiers i e X Bvalue et la d tection de l inutilit de cette op ration n cessite aussi un test d entiers Notons que l issue D jaR solue correspond aussi un travail inutile puisque la contrainte est d j satisfaite cf optimisation 2 de c1p FD en section 4 3 3 5 5 5 Evaluation de clp B La table 31 montre les performances de clp B temps en
251. qu une des variables bool ennes de vient instanci e une certaine valeur et ont pout effet d instancier une autre variable D o l id e de sp cialiser les contraintes d pendant d une variable en deux listes la liste des contraintes r veiller lorsque la variable vaudra 0 et celle des contraintes r veiller lorsque la variable vaudra 1 Ceci nous conduit d finir une primitive plus adapt e que X in r pour d crire les propa gations bool ennes Celle ci est de la forme ly lt 1 l o chaque l est soit un litt ral positif X ou un litt ral n gatif X cf table 28 Notons la diff rence avec la formu lation de clp B FD o la primitive X in r tait utilis e de mani re plus calculatoire pour d terminer la valeur affecter la variable X lo lt Eh ss el litt ral positif litt ral n gatif Tableau 28 syntaxe de la contrainte lp lt l l D finition 5 4 A chaque litt ral l l on associe X la variable correspondante tel que si l X oul X alors X X De m me l on d finit Bualue comme la valeur de v rit du litt ral l i e sil X resp l X alors Bvalue 0 resp Bvalue 1 La s mantique d clarative de la contrainte ly lt l l est videmment ly doit tre vrai dans tout store qui satisfait l A Al un litt ral l tant satisfait dans un store S ssi X Bvalue Sans aucune perte de g n ralit nous
252. r e Atoms in alphabetic order e Compound term ordered first by the arity then by the name of the principal functor then by the arguments in left to right order Recall that lists are equivalent to compound terms with principal 2 For the following predicates X and Y are terms compare 0p X Y inline predicate Compares X and Y and unifies Op with lt or gt X Y inline predicate X is literally equal to Y X Y inline predicate X is not literally equal to Y X lt Y inline predicate X is literally less than Y X lt Y inline predicate X is literally less than or equal to Y ANNEXE I MANUEL D UTILISATION DE WAMCC 231 X gt Y inline predicate X is literally greater than Y X gt Y inline predicate X is literally greater than or equal to Y Some further predicates involving comparison of terms are sort L1 L2 The elements of the list L1 are sorted into the total orderer and any identical elements are merged yielding the list L2 complexity O N log N where N is the length of LO keysort L1 L2 The list L1 must consist of items of the form Key Value These items are sorted into order according to the value of Key yielding the list L2 No merging takes place and this predicate is stable if K A occurs before K B then K A will take place before K B in the output complexity O N log N where N is the length of L1 Constant Processing There are 3 ways of representing character stri
253. r backtracking et dans ce cas d empiler un l ment particulier appel point de choix Ainsi la pile locale g re le contr le de Prolog que l on peut s parer en deux phases e avanc e appels imbriqu s de proc dure Classiquement on utilise un environne ment ou bloc d activation o sont stock es les variables locales de la clause et les informations de contr le utiles la sortie du bloc courant i e de la clause Ces environnements sont similaires ceux n cessaires lors de l implantation d un langage qui g re des variables locales ex C Ainsi une clause peut tre compar e une fonction et ses variables nouvelles instances chaque utilisation de la clause des variables locales e retour arri re backtracking consistant reprendre le calcul la derni re alternative non encore exploit e Ainsi un point de choix stocke les informations n cessaires la reprise du calcul On y trouve donc la sauvegarde de la plupart des registres de base ainsi que l adresse de la nouvelle clause essayer Dans la WAM originale ces deux types de blocs de contr le sont entrelac s et donc chaque bloc contient un pointeur vers le bloc pr c dent de m me type pour permettre le d pilement Deux registres de base E et B pointent respectivement sur le dernier environnement et sur le dernier point de choix Ainsi la pile locale contient deux piles entrelac es avec deux sommets de pile et la possibilit
254. r utilis pour dater Vinstanciation finale d une variable DF Une nouvelle cellule est pr vue pour cela dans la repr sentation des variables FD cf figure 13 Par la suite une contrainte X in r n est pas r ex cut e si ground X AINT_Date X lt DATE Pour simplifier ce test INT_Date X vaut la plus grande valeur possible tant que X n est pas d finitivement instanci Impact la table 15 pr sente les gains obtenus avec cette optimisation Elle est extr me ment performante pour les programmes utilisant la r solution par forward checking ex 94 des Tells inutiles vit s pour queens 70 ff correspondant un gain de 74 et moins pour les quations lin aires gain moyen de 23 des Tells inutiles correspondant CHAPITRE 4 IMPLANTATION DE CLP FD 100 pt Chain_Val Chain_Dom Chain_Min_Max Chain_Max Chain_Min Chains_Mask Chains_Stamp Listes de contraintes dependant de la variable Informations de dependances g ua etes Masque listes non vides Estampille pour trail Vector Max Min Extra_Cstr Domaine Informations sur le domaine Nombre d elements du domaine Estampille pour trail Mee Range_Stamp Informations 1 Q_Next_Fdv_Adr i Ptr prochaine var en file file de propag Q_Propag_Mask Masque listes a reexecuter Q_Date_At_Push i Date derniere mise en file Date d instanciation finale variable DF Figure 13 repr sentation interne d finitive d
255. r V et A L instruction get_constant C A v rifie que A est li a la constante C ou a une variable libre auquel cas elle lie celle ci a C Les instructions get_integer N A proc de de mani re similaire L instruction get_nil A est une abr viation de get_constant A La r cup ration d un terme structur utilise les instructions sp cialis es unify_ L uni fication relative un terme compos a deux comportements distincts suivant la nature de Vargument unifier avec le terme e si c est un terme de m me foncteur et de m me arit alors une vraie unification doit avoir lieu sur les sous termes mode READ e si c est une variable libre il y a cr ation du terme sur le heap et liaison de la variable celui ci mode WRITE CHAPITRE 3 IMPLANTATION DE WAMCC 41 L instruction get_list A d r f rence A si le mot obtenu est une variable libre elle est li e une liste cr e sur le heap les instructions unify_ cr eront le Car et le Cdr Si le mot est une liste les instructions unify_ unifieront le Car et le Cdr L instruction get_structure F N A s ex cute de maniere similaire Le code associ la compilation d un sous terme d pend de sa nature comme suit e premi re occurrence d une variable V si V n est pas une variable singleton unify_variable V sinon soit K le nombre de variables singleton successives unify_void K e autre occurrence d une variable V s il
256. r une simplification de clp FD pour le cas bool en Ce travail est int ressant divers titres e il va nous permettre d valuer le surco t de clp FD lorsque seuls les bool ens sont utilis s 1 e lorsque seule une part r duite des possibilit s de X in r est utilis e e il nous permettra de justifier encore plus pr cis ment pourquoi les m thodes de pro pagation locales sont bien adapt es au probl mes bool ens e il va nous faire d couvrir une machine abstraite tonnamment simple permettant d tendre ais ment n importe quel Prolog i e WAM pour prendre en charge des contraintes bool ennes 5 5 1 La contrainte primitive ly lt l l D un point de vue pratique clp B est tr s similaire clp FD puisqu il est le r sultat d une sp cialisation Une telle sp cialisation est possible gr ce aux propri t s qui apparais sent lorsque l on se restreint des domaines 0 1 Citons par exemple e il n est plus n cessaire de coder le domaine explicitement dans la repr sentation d une variable bool enne puisque l on sait que c est toujours 0 1 CHAPITRE 5 CONTRAINTES BOOL ENNES 123 e une telle variable ne peut tre r duite qu une seule fois comme les variables Prolog Ceci signifie que les estampilles ne sont plus n cessaires e si l on se reporte notre th orie de propagation bool enne cf table 21 l on se rend compte que les r gles ne se d clenchent que lors
257. ra un point de choix pour chaque invocation Toutefois nous pouvons d finir un pr dicat ayant la m me s mantique d clarative mais d terministe et plus efficace gr ce l op ration d union entre domaines fournie par le syst me de contraintes Exemple 7 10 plus_or_minus X Y C X in dom Y C dom Y C Y in dom X C dom X C Pour v rifier le comportement actif de cette d finition supposons l ajout de la contrainte plus_or_minus X Y 1 dans le store X in 1 3 Y in 1 5 Le pr dicat d fini en clp FD supprimera la valeur impossible 5 du domaine de Y et ne cr era jamais de point de choix alors que la premi re d finition ne peut le faire Gr ce cette d finition five est deux fois plus rapide que la version de base utilis e dans la comparaison avec CHIP CHAPITRE 7 CONTRAINTES COMPLEXES 165 7 4 2 L union fait la force L id e consiste ici d finir une formule F partir de E V amp V V Cn telle qu elle ne contienne plus de disjonction Deux cas sont alors int ressants a E amp F il suffit d ajouter F au store et aucun point de choix n est n cessaire b E F Pajout de F au store ne suffit pas assurer la correction qui sera alors garantie par un point de choix Etudions un cas concret de type a que l on rencontre souvent Consid rons la disjonction E amp V Ca V V Cn o les contraintes c sont de la forme X in ri A A Xy in ri t
258. raintes primitives X in r permet d utiliser des op rations arithm tiques sur les bornes des domaines r Consid rons donc certaines relations math matiques satisfaites par les contraintes bool ennes and X Y Z satisfait Z XxY LEXSLxXY 1 Y LEY S lt SLXX 1 X or X Y Z satisfait Z X Y XxY IRU Zx XYZ not X Y satisfait X 1 Y Y 1 X La d finition du r solveur est alors triviale et pr sent e dans la table 22 Il encode simple ment les relations ci dessus Proposition 5 2 Les contraintes and or et not sont correctes et compl tes Preuve La preuve de correction consiste simplement montrer que chaque triplet de valeur dans 0 1 satisfaisant la relation ci dessus est un l ment de la table de v rit correspondante La compl tude par rapport la s mantique d clarative tables de v rit est montr e en sens inverse On peut aussi relier directement le r solveur de c1p B FD la th orie de propagation B et montrer que chaque fois qu une r gle de B s applique le triplet de CHAPITRE 5 CONTRAINTES BOOL ENNES 116 and X Y Z in min X min Y max X max Y in min Z max Z max Y 1 min Y min Z max Z max X 1 min X or X Y Z in min X min Y min X min Y max X max Y max X max Y min Z 1 max Y max Z min Z 1 max X max Z not X Y in 1 val y in 1 val X Tableau 22 d finition du r solveur bool en de clp B FD variables dans l ensembl
259. raints cost The efficiency of clp FD language gives us a good hope to realize interesting further works Chapitre 9 Conclusion Nous voici donc arriv s au terme de cette these dont le fil conducteur fut la conception et la r alisation du syst me clp FD un langage logique de programmation avec con traintes sur les domaines finis En ce qui concerne la partie purement Prolog nous avons choisi une approche originale traduisant Prolog vers C via la WAM Ceci nous a permis de disposer d un Prolog simple portable modulaire et efficace En effet gr ce l intro duction de quelques lignes d assembleur pour adapter le contr le de celui de Prolog nous disposons d un syst me compact une grande partie de la compilation tant laiss e au compilateur C et dont les performances sont comparables au meilleurs compilateurs commerciaux ex Quintus Ce compilateur a ensuite t tendu pour g rer des contraintes sur les domaines finis L encore nous avons adopt une approche originale bas e sur les travaux de P van Hentenryck L id e tait de rompre avec l approche traditionnelle r sol veur vu comme une bo te noire pour viter ses inconv nients extensions impossibles ignorance de l implantation complexit Nous avons donc choisi une approche bo te de verre bas e sur la d finition de contraintes primitives simples et en nombre limit permettant de reb tir les contraintes complexes arith
260. rance Date September 1992 A system involving 7 variables and 10 equations Solution X1 X2 X3 X4 X5 X6 X7 x 6 0 8 4 9 3 91 JA O k eq10 Lab LD X1 X2 X3 X4 X5 X6 X7 domain LD 0 10 0 98527 X1 34588 X2 5872 X3 59422x X5 65159x X7 H 1547604 30704 X4 29649 X6 0 98957 X2 83634 X3 69966 X4 62038 xX5 37164 X6 85413x X7 1823553 93989 X1 900032 10949x xX1 77761 X2 67052 X5 193 ANNEXE B PROGRAMME EQ10 194 0 80197 X3 61944 X4 92964 X6 44550 X7 0 73947 X1 84391 X3 81310 X5 1164380 96253 X2 44247 X4 70582 X6 33054 X7 0 13057 X3 42253x X4 77527 X5 96552 X7 11854714 60152 X1 21103 X2 97932 X6 1394152 66920 X1 55679 X4 0 64234x xX2 65337 X3 45581 X5 67707 X6 98038x X7 0 68550 X1 27886 X24 317 16 X3 73597 X44 38835 X7 279091 88963 X5 76391x X6 0 76132 X2 71860 X3 22770 X44 68211 X5 78587 X6 480923 48224 X1 82817 X7 519878 94198 X2 87234 X3 37498 X4 0 71583 X1 25728 X5 25495 X6 70023 X7 361921 78693xX1 38592 X5 38478 X6 04 94129 X2 43188 X3 82528 X4 69025 X7 labeling LD Annexe C Programme eq20 PE Benchmark Finite Domain INRIA Rocquencourt ChLoE Project Name eq20 pl Title linear equations Original Source Thomson LCR Adapted by Daniel Diaz INRIA France Date September 1992 A system involving 7 variables and 20 equations Solu
261. rd tudier une extension de la WAM pour prendre en compte les variables et les contraintes DF puis tudier l int gration de cette extension dans wamcc A cette occasion nous mettrons en vidence que le fait de compiler vers C nous permet d obtenir du code efficace pour les contraintes Enfin nous valuerons les performances de c1p FD 4 1 Extension de la WAM 4 1 1 Int gration des variables domaine Pour permettre de raisonner avec des contraintes un nouveau type de donn es est ajout les variables DF qui sont donc capables d enregistrer des ensembles d entiers Ces variables seront diff renci es des autres variables gr ce une nouvelle tiquette FDV De mani re permettre une plus grande transparence clp FD rend ces variables compatibles avec les variables Prolog et les entiers en permettant l utilisateur de fournir une variable Prolog consid r e comme une variable DF de domaine 0 00 ou un entier n consid r comme une variable DF de domaine n n l o une variable DF est attendue De ce fait l utilisateur n est pas contraint de d clarer les variables DF utilis es au contraire de ce qu impose CHIP L ajout de ce nouveau type de variable affecte l g rement la WAM comme suit le contenu de ce chapitre a t publi e dans 24 25 74 CHAPITRE 4 IMPLANTATION DE CLP FD 75 Manipulation de donn es Les variables DF tout comme les variables Prolog ne peuvent tre dupliqu es l
262. re que 0 infinity Y Y 1 Y I Il est alors possible de red finir la contrainte diff X Y I comme Exemple 7 8 CHAPITRE 7 CONTRAINTES COMPLEXES 162 diff X Y I X in f_diff val Y I cx Y in f_diff val X I cy o La fonction C f_diff y i rend le domaine 0 in finity duquel elle a retir successivement les valeurs y y t y 1 Les 2 intersections sont donc vit es A titre de comparaison la table 38 pr sente les temps obtenus avec cette d finition optimis e Celle ci est environ 1 5 fois plus rapide que celle non optimis e et 7 fois plus rapide que CHIP 3 2 CHIP clp FD clp FD Programme 3 2 2 21 2 21 fct queens 16 queens 64 ff queens 70 ff queens 81 ff Tableau 38 queens optimis avec fonctions utilisateurs 7 4 Disjonction constructive La prise en compte de disjonctions de contraintes est un des point cl s de la PLC ou des CSP du fait que les contraintes disjonctives apparaissent dans beaucoup de probl mes r els tels qu ordonnancement disjonctif 70b shop probl mes de sac dos ou placements d ob jets dans un plan La mani re la plus simple et traditionnelle pour g rer une disjonction de contraintes en PLC consiste utiliser le non d terminisme support par le moteur lo gique i e Prolog sous jacent 67 Malheureusement le fait de traduire une disjonction de contraintes par un point de choix conduit vite de pi tres performances du fait du sch ma n
263. redicate whose principal functor is Name and arity is Arity nospyall Removes all spy points that have been set During the debugging the trace messages look like S I J Port Goal where S is a spy point indicator and is if there is a spy point on the predicate Goal or else Sis Nis an invocation number This unique number can be used to cross correlate the trace messages for the various ports since it is unique for every invocation M is an indice number which represents the number of direct ancestors this goal has Port specifies the ANNEXE I MANUEL D UTILISATION DE WAMCC 251 particular port call exit fail redo Goal is the current goal The indicates that you should type in one of the following debug commands creep or RET Single steps to the very next port skip lt n gt Skips over the execution of predicates called by the current goal If you specify an invocation number less or greater than the current one then the execution continues until the goal whose indice number is n is reached leap Resumes running your program only stopping when a spy point is reached abort Aborts the current execution goals or goalsb Prints the list of ancestors to the current goal goalsb also prints the remainding choice points leash lt 1 gt Sets the leashing mode to 1 l where each 1 is call exit fail or redo similar to leash 1 nobebug or notrace Switches the debugger o
264. rentes structures de r initialisation 3 1 3 La pile globale ou heap D apr s ce que nous venons de voir si une liaison implique une mise en pile de restaura E d f A tion c est qu elle concerne une variable et un terme autre qu une variable Toutefois nous n avons pas abord la mani re dont sont stock s les termes notamment ceux de hauteur sup rieure 1 En effet les vecteurs o enregistr s dans les environnements ne peuvent avoir qu une taille fixe Ou stocker les termes Une solution consiste a utiliser une nouvelle pile dite pile globale ou heap pour stocker les termes structur s Elle a une structure de pile traduction de tagged word CHAPITRE 3 IMPLANTATION DE WAMCC 30 dans la mesure o les nouveaux termes sont empil s sur son sommet point par le registre H et qu elle est d pil e lors du backtracking Elle une structure de tas du fait que des liaisons existent aussi bien du bas de la pile vers le haut que du haut vers le bas 3 1 4 La repr sentation des termes Les termes sont cod s par de mots tiquet s comme dans la majorit des langages dynami quement typ s cf 38 pour une tude compl te de la codification des types dans de tels langages La figure 3 sch matise la repr sentation interne de chaque terme savoir variable la partie valeur est une r f rence vers le terme auquel est li e la variable Une variable libre est simplement repr sent e comme une
265. rer une plus grande efficacit En outre ce r solveur est ouvert l utilisateur qui peut ajouter de nouvelles contraintes pour int grer par exemple directement des contraintes d implication d quivalence etc Ceci est cependant assez vident du fait que les bool ens sont un cas particulier de do maines finis et peut sembler un simple exercice d cole Le plus surprenant cependant est que le r solveur ainsi r alis soit tr s efficace il est plus rapide que le r solveur de CHIP d environ un ordre de magnitude et se compare favorablement la plupart des r solveurs bool ens ad hoc bas s sur d autres algorithmes comme les m thodes num ratives les BDD ou les techniques de recherche op rationnelle Notons finalement que ces r solveurs utilisent en g n ral de nombreuses heuristiques pour am liorer les performances alors que notre r solveur n en a pour l instant aucune et que l on peut donc encore esp rer une am lioration des performances 5 1 Un panorama des r solveurs bool ens Bien que le probleme de la satisfiabilit des formules bool ennes ne soit pas nouveau la conception de m thodes efficaces est encore un champ de recherche actif Par ailleurs il faut noter qu il est tr s souvent important de pouvoir conna tre les mod les i e les affectations des variables quand ils existent de ces formules A cette fin plusieurs m thodes bas es sur des structures de donn es et sur des algorith
266. res A i et X i physique ment ce sont les m mes nous les distinguerons uniquement pour bien pr ciser les concepts utilis s L avantage des temporaires r side dans le fait que certaines instructions de char gement et de r cup ration d arguments pourront donner lieu des instructions de copie CHAPITRE 3 IMPLANTATION DE WAMCC 33 par exemple charger A 1 avec le contenu du registre X 1 La figure 4 montre l utilisation de la m moire dans la WAM Cont Programme Envir Prec Variable Perm Variable Perm Code Alternat Sauvegarde CP Sauvegarde E Pt choix prec Sauvegarde BC Sauvegarde Pntr Programme Sauvegarde TR Cont Programme A 0 Sauvegarde Environnement Pt de Choix A m Sauvegarde Pt de Choix Cut Heap Point de Choix Pntr Structure Trail A 0 Argument A n Argument Registres de Base Figure 4 architecture de la WAM 3 1 6 Economie et r cup ration m moire De par son caract re non d terministe Prolog est sujet des crises de gourmandise m moire aigu s Il est donc important que l architecture permette un maximum d conomie et de r cup ration d espace dans les piles Notons tout de suite que toute pile est en partie r cup r e lors d un backtracking puisque son sommet est r initialis cette occasion CHAPITRE 3 IMPLANTATION DE WAMCC 34 En pile locale D apr s ce qui a t dit sur les variables temporaires les faits et les clauses n ayant qu un seul bu
267. rformant Tout ceci conduit aux instructions de contr le suivantes e pour un fait p lt r cup ration des registres gt proceed e pour une clause p q lt r cup ration des registres gt lt chargement des registres pour le but q gt execute q e pour une clause p q q dt allocate N lt r cup ration des registres gt lt chargement des registres pour le but q gt call q lt chargement des registres pour le but q2 gt call q lt chargement des registres pour le but q gt deallocate execute q CHAPITRE 3 IMPLANTATION DE WAMCC 45 L instruction allocate N cr e un environnement pour N variables permanentes L ins truction deallocate permet de r cup rer cet environnement L instruction cal1 P N initialise CP l adresse qui suit le call et donne le contr le au pr dicat P N L instruction execute P N proc de pareillement sans toutefois modifier le contenu de CP pr alablement restaur par l instruction deallocate Le retour de proc dure est assur par l instruction proceed qui se contente donc d affecter CP PC Instructions d indexation Ces instructions permettent de regrouper le code de chaque clause d un pr dicat et sont donc les instructions de plus haut niveau Elles ont la responsabilit de g rer les points de choix Elles peuvent cr er jusqu deux points de choix l entr e d un pr dicat C est pour
268. riables atmost N L V at most N variables of the list of FD variables L are equal to the value V N and V are integers relation Tuples Vars enforces the list of FD variables Vars to verify the relation coded by Tuples Tuples is a list of tuples of the relation each tuple is a list of integers Example and X Y Z relation 0 6 0 0 1 0 1 0 0 141 111 X Y Z relationc CTuples Vars similar to relation 2 but the tuples are given column by column faster than ANNEXE J MANUEL D UTILISATION DE CLP FD 262 relation 2 Example and X Y Z relationc 0 0 1 1 0 1 0 1 0 0 0 1 X Y Z J 3 7 Symbolic constraints minof Goal Var uses a depth first branch and bound to find the minimum optimal value of Var using Goal as generator e g labeling 1 maxof Goal Var uses a depth first branch and bound to find the maximum optimal value of Var using Goal as generator e g labeling 1 J 4 Boolean built in predicates constraints clp FD offers a set of boolean constraints based on Finite Domains A boolean variable is nothing more than a FD variable with an initial domain 0 1 So arc consistency is also used for booleans and thus the enumeration phase is required as for traditional FD constraints No declarations are needed for boolean variables When a varialble is involved in a boolean constraint it is automatically set to the initial domain 0 1 J 4 1 Basic boolean constraints not
269. ron 10 du temps d ex cution Ceci s explique par le grand nombre de fois o les contraintes sont ex cut es De petites modifications peuvent avoir de grandes r percussions e puisque un gain de 52 de Tells inutiles se refl te par un gain en temps de 26 nous en d duisons que dans la version initiale les 72 d appels inutiles correspondaient 50 du temps d ex cution e le gain total possible en temps d ex cution est donc de 50 Ce gain est comparer nos 26 L encore une meilleur optimisation 2 devrait nous permettre de nous rapprocher de ces 50 e puisque ces 72 d appels inutiles consomment autant de temps que les 28 d appels utiles nous en d duisons qu un appel utile est en moyenne 2 5 fois plus co teux qu un appel inutile Le fait qu un appel utile soit environ 2 5 fois plus co teux qu un appel inutile est d au peu de travail que n cessite ce dernier puisqu il n value que le domaine d not par r avant CHAPITRE 4 IMPLANTATION DE CLP FD 106 de d tecter que X n est pas r duit En particulier dans le cas d quations r solues par lookahead partiel les valuations de r ne font intervenir que des op rations arithm tiques sur des entiers ce qui est g n ralement tr s rapide cf section 4 2 La table 19 compare la version finale de clp FD la version commerciale 3 2 de CHIP sur un Sparc 2 Nous incluons galement le benchmark bridge 67 Sur les quations lin
270. rs de Prolog L inconv nient majeur de cette approche est videmment le surco t de l mulation puisque pour chaque instruction nous n chappons pas au cycle recherche d codage et ex cution Un autre inconv nient provient du fait qu il est difficile de fournir un ex cutable autonome puisque l mulateur doit tre pr sent au moment de l ex cution posant ainsi des problemes de distribution li s aux droits commerciaux limitant la diffusion d un produit professionnel La production de code natif a des caract ristiques inverses de celles de l mulation L cri ture d un g n rateur de code natif est une t che difficile qui requiert une connaissance approfondie de la machine cible C est cette condition que les performances sont au rendez vous en particulier sur les processeurs RISC Bien entendu de tels compilateurs ne sont pas portables et l adaptation une autre architecture n est pas si ais e la o une machine peut tre efficace telle autre peut avoir un comportement tr s m diocre D un autre c t l criture d un compilateur produisant du code natif comprend bon nombre de parties classiques p nibles d velopper bien que les techniques ad quates soient connues ex allocateur de registres 3 2 3 La solution adopt e traduire Prolog vers C Malheureusement les objectifs de notre cahier des charges ne co ncidaient ni avec les caract ristiques de l mulation ni avec celles de la produc
271. s a variable an FD variable or an integer i e a constant denotes either the plus symbol or the minus symbol In the following S and T are linear terms ANNEXE J MANUEL D UTILISATION DE CLP FD S T S is equal to T S T S is not equal to T S lt T S is less than T S lt T S is less than or equal to T SH gt T S is greater than T S gt T S is greater than or equal to T J 3 3 Other arithmetic constraints gt min x y z X Y Z Z is the minimum value between X and Y gt max x y zZ X Y Z Z is the maximum value between X and Y xy lez X Y Z Z is the absolute value of X Y xx y X 7Y Y is the square of X xy z X Y Z Z is equal to X Y i e non linear equation 259 ANNEXE J MANUEL D UTILISATION DE CLP FD 260 J 3 4 Domain Handling domain Vars tLower Upper constraints each variable of the list Vars to belong to the domain Lower Upper fd_vector_max N if N is a variable unifies N to the maximum value which can be stored in a bit vector representation If N is an integer define the maximum value such a definition can only be done once before stating any constraint see section J 2 fd_infinity N Unifies N with the infinity i e greatest value fd_var X Succeeds if X is bound to an FD variable fd_min X N Unifies N with the current minimum value of the FD variable X Note that this is not
272. s avons choisi une repr sentation explicite par file de l ensemble des contraintes r activer car le l ger surco t qu elle engendre est largement contrebalanc par la flexibilit qu elle offre De plus l exp rience nous a montr que l ob tention des solutions tait g n ralement plus rapide gr ce une propagation en largeur d abord i e file qu avec une propagation en profondeur d abord i e pile 4 2 Int gration de clp FD dans wamcc clp FD est implant au dessus de wamcc et b n ficie donc de toutes les facilit s de ce Prolog Le compilateur a t modifi pour g n rer le code WAM tendu d crit pr c dem ment environ 1000 lignes de Prolog en plus La librairie associ e c1p FD tend celle de wamcc par e fonctions d ex cutions des instructions tendant la WAM i e le solveur proprement dit 1700 lignes de C e fonctions relatives aux op rations sur les domaines telles qu intersection union 1700 lignes de C e pr dicats pr d finis propres aux variable DF et aux contraintes 1000 lignes de Prolog et 800 lignes de C Ces extensions rep sentent seulement 100 Ko de code suppl mentaires par rapport la librairie de wamcc 260 Ko contre 160 Ko Tous ces chiffres permettent de se rendre compte de la minimalit de l extension propos e pour les contraintes Du point de vue de l ex cution toute contrainte DF donne lieu deux fonctions La premi re contien
273. s d un appel de proc dure il y aura uniquement identification des variables pr dicat entre l appelant et l appel et il est alors inutile d utiliser un m canisme d unification 2 2 2 S mantique des programmes logiques avec contraintes L ex cution d un programme logique avec contraintes part d une clause particuli re appel e but Il s agit d une clause dont la t te est vide et qui se r duit donc un corps D un point de vue proc dural un but va donc contenir un m lange de pr dicats qui seront les proc dures ex cuter et de contraintes qui repr senteront un tat initial pour les variables D un point de vue logique le but repr sente une formule que l on veut d montrer l aide des axiomes du programme Par souci de simplicit nous nous int resserons ici uniquement a la s mantique op ration nelle de la PLC et formaliserons de mani re classique l ex cution d un programme par une s quence de buts qui partira du but initial pour aboutir a un tat final ou boucler Une configuration est un couple lt I 9 gt o I est un ensemble de pr dicats logiques et des contraintes repr sentant le calcul ex cuter et o 0 est un ensemble de contraintes repr sentant l tat courant des variables du calcul Ceci reprend et tend le formalisme classique de la programmation logique ot un tat de calcul est repr sent par un ensemble de buts courants et une substitution D
274. s domaines La prise en charge des DF entra ne la n cessit de pouvoir sauvegarder des valeurs dans la trail ex domaines modifi s Ce qui est d j support par notre architecture WAM En revanche le fait que les domaines soient r duits en plusieurs tapes entra ne que le crit re de sauvegarde standard de la WAM i e adresse du mot modifier plus ancienne que celle dernier point de choix conduira la mise en trail de chaque modification de domaine Bien videmment un seul domaine l original n cessite d tre sauvegard par point de choix Pour cela nous utilisons la m thode d estampillage de 1 qui consiste ajouter un nouveau registre STAMP pour num roter les points de choix ainsi qu un champ pour chaque variable DF enregistrant le num ro de point de choix de sa derni re sauvegarde en trail Le registre STAMP est donc incr ment lorsqu un point de choix est cr e et d cr ment la suppression de celui ci Dans ce cas X doit tre sauvegard en trail si Stamp X 4 STAMP Indexation La mani re la plus simple de g rer une variable DF du point de vue de l indexation est de la consid rer comme une variable Prolog donc d essayer toutes les clauses Bien vi demment il serait possible d effectuer une indexation plus complexe pour ne prendre en compte que les clauses ayant des entiers ou des variables comme premier argument Il serait m me possible d tendre les constantes de clp FD pour prendre en c
275. s magiques 2 a ee ee ee 154 eee de Conir mnteatnosSt cay oe g i atk E oat eek Get dee Geet ee Sd 155 7 2 3 Contrainte de cardinalit 155 7 2 4 Contrainte element a a A A o 156 7 2 5 Contraintes arithm tiques non lin aires 156 7 3 G n ralisation de la contrainte X inr 157 7 3 1 Contraintes r solues par full lookahead 157 7 3 2 Fonctions utilisateurs e 4 2 6 a0 A A DA fi 158 7 4 Disjonction constructive 162 TAL Um oxemplecim ple 2 a Ra ae Sok NN NME TR ARA ES 163 T420 L union fart la forc LS pidge RS Rk a a Ree ead 165 TAS Autres CXC PIES Gta nA SE Ra Ee aN 166 7 5 Contraintes d finies par des relations 168 R gulation du trafic a rien avec clp FD 170 Sr IO CNOA y 2 E AS A TE ASE DAS ne 171 S 2 gt Problem OUEN DAS DA he ge SR ANA 173 8 2 1 Air Traffic Flow Management Overview 173 8 2 2 The Slot Allocation Problem coca a A Ra es 174 8 3 clp FD in a Nutshell e o ts o o a Ras 175 SL Tre CORSA X AO A a a al AN 176 8 3 2 High Level Constraints and Propagation Mechanism 177 8 3 3 Optimizations Y E e aa ES A A a N 178 Som JPerignmanees soi den y aug a oe a A A AA A 179 8 3 5 atmos_interval CONSTAT woes e a ee aed 179 8 4 Slot Allocation Satisfying Capacity Constraints 180 8 4 1 A Small Example 110 SA SA Ls ek 180 8 4 2 clp FD
276. s programmes de PLC sur les domaines finis La raison principale de cette diff rence est notre avis que dans CHIP le r solveur bool en est crit au dessus du r solveur sur les domaines finis alors que dans clp B FD le r solveur bool en est sp cifique grace l utilisation de la contrainte primitive X in r et qu il l autre r solveur de CHIP bas sur l unification bool enne devient vite impraticable pour des pro bl mes complexes aucun des programmes de test pr sent s ici n a pu tre ex cut en l utilisant cause de probl mes d occupation m moire trop importante CHAPITRE 5 CONTRAINTES BOOL ENNES 118 schur 13 schur 14 schur 30 schur 100 pigeon pigeon pigeon pigeon pigeon pigeon queens queens queens queens queens queens queens ramsey 0 190 ramsey 1 500 ramsey 2 420 ramsey 9381 430 701 106 ramsey 31877 520 1822 220 Tableau 23 clp B FD versus CHIP temps en sec b n ficie de l implantation optimis e de celle ci directement 5 4 3 clp B FD et les autres r solveurs Nous comparons ici clp B FD avec des r solveurs bool ens d di s utilisant des algorithmes tr s diff rents Ces r solveurs ne sont pas des langages de programmation ils prennent en entr e un en semble de contraintes et les r solvent Il y a donc autant de formulations que d instances du probl me A l oppos clp B FD g n re les contraintes lors de l ex cution du pro
277. s sur le heap L instruction unify_constant C en mode READ est similaire get_constant C S et en mode WRITE empile la constante C sur le heap L instruction unify_integer N procede de maniere similaire L instruction unify_nil est une abr viation de unify_constant Nous pouvons remarquer qu il n y a pas d instructions d unification propres aux sous termes compos s En r cup ration de registres ils sont unifi s avec de nouvelles variables temporaires X par unify_variable X celles ci tant ensuite d compos es par les ins tructions get_ X Ceci revient aplatir les termes Par exemple ALi f g Z a revient a ALi f X et X g Z a En ce qui concerne le chargement de registres les nouvelles variables temporaires sont char g es par les instructions put_ X avant d tre unifi es dans le terme compos par unify_value X Ici aussi cela revient une mise a plat des termes Par exemple A i f g Z a revient aX g Z a etaAlil f X Instructions de chargement de registres Comme pour les instructions de r cup ration nous distinguerons le type de l argument charger Il sera n cessaire de prendre en compte les variables dangereuses pour pr venir le probl me de r f rences fant mes Ici encore l instruction d pend du i me argument d un but charger comme suit e premi re occurrence d une variable V put_variable V
278. sity H Ait Kaci S Le Huitouze Scheme FD l INRIA J M Geffroy Nous avons montr les capacit s d extension du solveur en d finissant un r solveur bool en crit en 10 lignes de clp FD Celui ci s est r v l tre 10 fois plus rapide que le r solveur Tee qui n est pas le cas du peu qui est pr sent dans l article Overview of the CHIP compiler qui avouons le ne donne aucune information pratique sur comment compiler les contraintes D ailleurs le compilateur CHIP 3 ans apr s n a toujours pas vu le jour CHAPITRE 9 CONCLUSION 190 quivalent de CHIP mais aussi bien plus efficace que beaucoup de solveurs sp cialement concus pour les bool ens Le syst me clp FD est d sormais un syst me complet et op rationnel Il est disponible par ftp et a d j t r cup r plus de 350 exemplaires Des industriels ont t int ress s par clp FD citons par exemple e le Centre d Etudes de la Navigation A rienne Orly qui utilise clp FD pour la r gulation du trafic a rien cf chapitre 8 e Dassault Aviation St Cloud pour faire du raisonnement qualitatif Les essais pr liminaires ont montr que clp FD tait 200 fois plus rapide que le logiciel d velopp par Dassault e N A S A en Californie pour choisir parmi plusieurs mod lisations d un probl me donn celle qui minimise une certaine fonction de co t d pendant du nombre de variables de contraintes
279. sque sic X in r i e X Er alors ac X in r i e X 0 infinityl r D finition 2 10 Un store est un ensemble fini de contraintes Un store est dit en forme normale ssi pour toute variable X V il ne contient au plus qu une seule contrainte X in r A partir d un store S nous obtenons un store S en forme normale en regroupant toutes les contraintes X in r X in ro X in r portant sur une m me variable X et en les rempla ant par une seule contrainte du type X in ry rg amp Ty Notons que ces ensembles sont quivalents car ils ont de maniere triviale les m mes tuples de valeurs solutions pour les variables Nous ne consid rerons d sormais que des stores en forme normale et l criture S U c sous entend que le store r sultant est en forme normale Nous noterons Store l ensemble de tous les stores Pendant un calcul une contrainte X in r peut chouer tre satisfaite ou tre satisfaire Consid rons par exemple le store X in 3 20 Y in 5 7 10 100 e X in 10 50 est satisfaite avec un nouveau store x in 3 20 amp 10 50 Y in 5 7 10 100 soit x in 10 20 Y in 5 7 10 100 e X in 30 50 choue e X in min Y 40 est satisfaire avec un nouveau store x in 3 20 amp 52740 amp min Y 40 Y in 5 7 10 100 soit x in 5 20 amp min Y 40 Y in 5 7 10 100 3nous utiliserons le mot anglais store car il n a pas de traduction fran aise heureus
280. ssible importante d s qu on sort de petites classes de probl mes 5 1 2 M thodes bas es sur les diagrammes de d cisions binaires BDD Les diagrammes de d cisions binaires BDD ont connu r cemment un grand succ s en tant que moyen efficace de coder les fonctions bool ennes 13 et il tait naturel d essayer de les utiliser dans un r solveur bool en L id e de base des BDD consiste avoir une repr sentation compacte de la forme normale de Shanon d une formule bool enne Une formule a une telle forme normale si elle est r duite une constante 0 ou 1 ou une expression de la forme ite x F G pour if x then F else G o F et G sont en forme normale L expression if then else de cette forme ite x F G repr sente la formule x A F v gt a AG Une mani re efficace de coder et de manipuler cette forme normale utilise un BDD r duit et ordonn qui sera repr sent par un DAG dont les noeuds int rieurs sont tiquet s par les variables et les feuilles par les constantes Un noeud int rieur x ayant deux fils F et G repr sente une expression if then else ite x F G En tablissant un ordre total sur les variables bool ennes il est possible de construire pour toute formule bool enne un BDD respectant cet ordre au sens suivant x lt y ssi il existe un chemin de x y et partageant i e factorisant les sous expressions communes La forme normale ainsi obtenue est unique A titre d exemple la formule F
281. ssibly indiced if it is an array i e name a compound term In the following GVarName represents such a reference to a global variable and its syntax is as follows GVarName atom atom Index Index Index integer GVarName When a GVarName is used as an index the value of this variable must be an integer Indexes range from 0 to Size 1 if the array has Size elements The space necessary for copies and arrays are allocated dynamically and recovered as soon as possible For instance when an atom is associated to a global variable whose current value is an array the space for this array is recovered unless if the assignment must be undone when backtracking occurs see below g assign GVarName Term inline predicate Associates a copy of the term Term to GVarName This assignment is not undone when backtracking occurs See below about array re definitions g assignb GVarName Term inline predicate Same as g assign 2 but the assignment is undone when backtraking occurs See below about array re definitions ANNEXE I MANUEL D UTILISATION DE WAMCC 243 g link GVarName Term inline predicate Makes a link between GVarName to the term Term This allows the user to give a name to any Prolog term in particular non ground terms Note that such an assignment is always undone when backtracking occurs since the term could no longer exists Note also that if Term is an atom or an integer g 1ink and g_assign
282. ssus peut tre optimis en supprimant le registre PC puisque l information qu il v hicule peut tre retourn e par les fonctions Ainsi une fonction effectue 144 y gt ps un calcul en ligne et lorsqu un branchement est requis elle se termine en retournant l adresse du code qui le contr le doit tre donn L analyse de cette m thode montre qu un branchement WAM donne lieu un retour de fonction au superviseur suivi d un appel de fonction Ce qui est bien videmment beau coup plus co teux qu une instruction de branchement assembleur g n r e par un compila teur code natif L appel extra modules est d sormais possible et n est pas plus p nalisant qu un appel intra modules La premi re version de wamcc utilisait cette approche et les per formances obtenues taient environ deux fois moindres que celles de Sicstus 0 6 En ce qui concerne KL1 un compromis t trouv pour diminuer les appels et retours de fonctions En effet tous les pr dicats d un m me module sont plac s dans une seule fonction Ainsi en pr sence d un seul module KL1 un comportement similaire Janus Dans ce cas la fonction superviseur ne sert qu changer de contexte lors des appels extra modules Ceux ci devenant alors plus co teux que les appels intra modules Notons toutefois que cette m thode avec ou sans l optimisation KL1 est la plus viable en restant 100 ANSI C 3 2 7 La m thode Erl
283. st r alis e suivant la valeur impliqu e CHAPITRE 3 IMPLANTATION DE WAMCC 38 3 1 7 Le jeu d instructions Du fait de l utilisation de registres arguments pour assurer l change des donn es un pr dicat peut tre compil de mani re ind pendante de tout contexte Ainsi l unit de com pilation est le pr dicat De plus la compilation d une des clauses du pr dicat ne n cessite aucune connaissance des autres clauses Seules les instructions de gestion des points de choix i e indexation n cessitent la vision globale de toutes les clauses La principale caract ristique du jeu d instruction de la WAM est bas e sur l tude statique du pr dicat pour d terminer a priori statiquement la compilation des situations qui sans cela ne seraient d tect es qu a posteriori dynamiquement l ex cution Pour chaque cas d tec table une s quence d instructions adapt e est g n r e Par exemple la gestion des points de choix est prise en charge par des instructions sp cialis es cr ation du point de choix par la premi re clause mise jour par les autres except la derni re qui se charge de sa suppression De m me l unification est d compos e en fonction des arguments de la clause pour viter l appel la fonction g n rale d unification entre deux termes quelconques Les instructions de la WAM peuvent tre class es en quatre groupes e instructions de r cup ration de registres unificati
284. sur la grande exp rience en mati re de domaines finis de P Van Hentenryck 69 Il semble tou tefois naturel de g n raliser la syntaxe de X in r pour permettre l utilisateur de d finir ses propres fonctions sur les domaines et sur les termes cf table 36 De telles fonctions sont appel es fonctions utilisateurs Dans clp FD les fonctions utilisateurs sont crites en C pour des raisons d efficacit et du fait que le moteur Prolog sous jacent i e wamcc supporte d j l ajout de code C externe Simulation du Ask Les fonctions utilisateurs nous permettent d encoder les contraintes conditionnelles i e Ask du type c c2 En effet supposons que nous d cidions d adopter une approxima tion de type 2 pour d tecter la satisfaction de c cf section 6 Les conditions Es X in r tant du type dom X C Ar Il nous suffit de d finir une seule fonction utilisateur if_incl ro r1 72 qui retourne ra si ro C r et 0 in finity sinon Dans ce cas avec c Xy in riet co X in ry se d finit simplement comme la contrainte d X gt in if_incl dom X A r r2 Op rationnellement chaque fois que X ou r est modifi la contrainte d est r veill e le test de satisfaction de c est r valu CHAPITRE 7 CONTRAINTES COMPLEXES 159 intervalle singleton param tre domaine domaine indexical E ae B s intersection compl mentation addition point point soustraction point p
285. t point soustraction point point multiplication point point division point point min Y terme indexical min max Y terme indexical max ct titta ti to tt ti lt to ti gt to C param tre terme n infinity cty cty cty cty ctixcto ct lt cty ct gt cta Tableau 1 syntaxe de la contrainte X in r Nous utiliserons X n comme abr viation de X in n n Intuitivement la contrainte X in r contraint X appartenir au domaine d not par r Celui ci peut non seulement d noter un domaine constant ex 1 10 mais aussi un domaine indexical i e d pendant de la valeur d autres variables Pour cela les indexicaux suivants sont utilis s e dom Y qui repr sente le domaine courant de Y e min Y qui repr sente la valeur minimale du domaine courant de Y e max Y qui repr sente la valeur maximale du domaine courant de Y CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 17 Chaque domaine terme indexical fournit une valeur voluant tout au long du calcul Ainsi une contrainte X in r sera r valu e chaque modification du domaine d une des variables dont elle d pend Notons galement que la d finition d une contrainte peut utiliser des param tres domaine resp terme Ce sont simplement des variables Prolog devant tre li es une liste d entiers resp un entier Notons que puisque les domaines sont finis notre systeme de contraintes sera clos par n gation pui
286. t call to gensym if Prefix is omitted then sym is used compiler_name X Unifies X with the name of the compiler wam_version X Unifies X with the current version wam_year X Unifies X with the year of the current version argc X Unifies X with the number of Unix arguments of the command line argv N X Unifies X with the Nth Unix argument starting at 0 see also Unix argv L Unix Term Allows certain interactions with the operating system Under Unix the possible forms of Term are as follows access Path Mode Tests if Mode is the accessability of Path as in the C function access 2 argv Args Args is unified with a list of atoms of the program arguments cd Changes the current working directory to the home directory ANNEXE I MANUEL D UTILISATION DE WAMCC 249 cd Path Changes the current working directory to Path exit Status Terminates the Prolog process with the status Status Equivalent to ha1t 1 getenv Name Value Unifies Value with the value of the environment variable Name shell Starts a new interactive Unix shell named in the Unix environment variable SHELL The control is returned to Prolog upon termination of the shell shell Command Passes Command to a new Unix shell named in the Unix environment variable SHELL for execution shell Command Status Passes Command to a new Unix shell named in the Unix environment variable SHELL for ex
287. t le code d installation et la seconde celui d ex cution Puisque chaque r ex cution de contrainte donne lieu un appel de fonction C le registre CC n est plus n cessaire le registre de continuation du processeur est implicitement utilis La fonction d ex cution associ e une contrainte r value la contrainte point e par CF et retourne un bool en suivant la r ussite ou l chec de ce calcul Du fait qu une telle fonction est invoqu e CHAPITRE 4 IMPLANTATION DE CLP FD 91 plusieurs milliers de fois il est important de veiller la qualit du code qui la compose Pour cette raison nous vitons la d finition explicite de CF comme registre global de la WAM tendue pour plut t le passer en tant que param tre de la fonction d ex cution Il est de ce fait consid r comme une variable locale de cette fonction De m me le registre AF est simplement d fini comme une variable locale dans la fonction et est initialis des l entr e partir de CF Pour augmenter la vitesse d valuation des contraintes les registres R et T sont d finis eux aussi comme des variables locales dans chaque fonction Ceci est d autant plus int ressant que sur les machines RISC l acc s aux variable locales est moins co teux que l acces des donn es globales De plus le compilateur C essaye d allouer les variables locales dans des registres de la machine pour la dur e de la fonction En particulier les registres de termes de la WA
288. t ne n cessitent pas d environnement Pour une clause ayant plus d un but dans son corps l environnement n est indispensable que jusqu la fin de la clause Ainsi est il possible de r cup rer l espace allou un environnement la fin de la clause apr s l appel du dernier but et avant de donner le contr le au code point par la continuation Toutefois il est possible de mieux faire En effet en ce qui concerne le dernier but d une clause les registres arguments sont charg s et il est alors possible de r cup rer l environnement avant d appeler le dernier but au lieu de le faire apres Notons que cela ne pr sente un int r t que si aucun point de choix n a t g n r apr s cet environnement au dessus Ceci permet donc en cas de d terminisme l optimisation de l appel terminal comme cela se fait pour les langages fonctionnels puisque l espace m moire utilis reste constant Toutefois nous devons prendre garde ce qu aucune r f rence l environnement ne persiste apr s la r cup ration de celui ci Pour pr venir de telles r f rences fant mes les imp ratifs suivant doivent tre respect s Dans la pile locale aucune r f rence ne doit exister du bas vers le haut Aucune r f rence ne doit exister de la pile globale vers la pile locale Attendu que les termes sont dans le heap le seul cas pouvant engendrer des liaisons vers le haut en pile locale est d des liaisons entre variabl
289. t pas pr vu de place pour elle Warren a d cid de classer de telles variables comme permanentes et a donc apport des restrictions la d finition des temporaires Les r sultats empiriques ayant montr un gain m moire marginal s rement inf rieur aux progr s r alis s en termes de configurations m moires disponibles depuis 1983 nous n avons pas adopt ces restrictions privil giant nouveau la simplicit de compilation Indexation Comme nous l avons vu pr c demment pour l optimisation de l appel terminal et pour l occupation de la trail il est souhaitable de diminuer le nombre de points de choix cr es Le principe de l indexation consiste partitionner l ensemble des clauses d un m me pr dicat en fonction des valeurs possibles de certains arguments cl s et de g n rer des instructions de gestion de points de choix pour chaque partition ind pendamment A l ex cution la partition utiliser est d termin e en fonction de la valeurs des arguments En ne s occupant pas des autres partitions nous diminuons les chances de cr er des points de choix Dans la WAM la cl d indexation est constitu e par le foncteur principal du premier argument de la t te qui peut tre e une variable e un entier e une constante y compris la constante de liste vide e une liste non vide e un terme structur En ce qui concerne les constantes les entiers et les termes structur s une sous partition e
290. tant l adresse des environnements pour d tecter l quivalence De ce fait plusieurs triplets pour la m me variable avec des pointeurs d environnements diff rents pouvaient appara tre dans la file La suppression de cette optimisation nous permet d sormais d utiliser une file dont les l ments sont des couples de la forme lt variable listes r activer gt Il est ais d assurer qu il y a au plus un seul couple pour toute variable X en regroupant les listes r activer en pr sence de plusieurs couples pour une m me variable De ce fait la taille de notre file de propagation est born e par le nombre de variables Il est alors possible de repr senter cette CHAPITRE 4 IMPLANTATION DE CLP FD 97 Chain_Val Chain_Dom Chain_Min_Max Chain_Max Chain_Min Chains_ Mask Masque listes non vides Chains_Stamp ir Estampille pour trail Listes de contraintes Informations dependant de la variable de dependances Vector Max Min Extra _Cstr Domaine Informations sur le domaine Nombre d elements du domaine Range_Stamp ir Estampille pour trail 7 1 i 1 i 1 1 1 Informations Q Next_Fdv_Adr ir Ptr prochaine var en file file de propag Q Propag Mask Masque listes a reexecuter Q Date_At_Push N Date derniere mise en file variable DF Figure 12 nouvelle repr sentation interne d une variable DF file directement au travers des variables DF La file ne n cessite
291. tential quantification is written Y Q meaning there exists a Y such that Q is true where Y is some Prolog variable bagof Template Goal Bag This is exactly the same as setof 3 except that the list or alternative lists returned will not be ordered and may contain duplicates The effect of this relaxation is to save a call to sort 2 which is invoked by setof 3 to return an ordered list findall Template Goal Bag Bag is a list of instances of Template in all proofs of Goal found by Prolog The order of the list corresponds to the order in which the proofs are found The list may be empty and all variables are taken as being existentially quantified This means that each invocation of findall 3 succeeds exactly once and that no variables in Goal get bound Avoiding the management of universally quantified variables can save considerable time and space findall Template Goal Bag 7Remainder Same as findall 3 except that Bag is the list of solution instances appended to Remainder which is typically unbound ANNEXE I MANUEL D UTILISATION DE WAMCC 242 1 3 10 Global Variables wamcc provides a simple and powerful way to assign and read global variables There are 3 kinds of objects which can be associated to a global variable e acopy of a term e a link to a term e an array of objects The initial value of a global variable is the integer 0 A global variable is referenced by a name i e name an atom po
292. tep by step by X in r constraints An FD variable is fully compatible with Prolog integers and Prolog variables Namely each time a FD variable is expected in a constraint i e in X in r and other user constraints it is possible to pass a Prolog integer treated as a singleton range or a Prolog variable bound to an initial range 0 infinity Since domains are finite infinity stands for the greatest integer see also fd_infinity 1 Since Prolog variables and FD variables are fully compatible no domain declarations are needed However in some cases this can cause a failure due to overflows e g infinity x infinity In particular intermediate variables do not need any domain declaration as it is required in CHIP There are 2 representations for an FD variable e interval representation only the min and the maz of the variable are maintained In this representation it is possible to store values included in 0 in fanity e sparse representation an additional bit vector is used to store the set of possible values for a variable In this representation it is possible to store values included in 0 vector_maz By default vector_maz is set to 127 and can be redefined via an environment variable VECTORMAX or via the built in predicate fd_vector_max 1 see section J 3 The initial representation for an FD variable X is always an interval representation and is switched to a sparse representation when a hole appears in the domain e g
293. the Car Sequencing Problem in Constraint Logic Programming In ECAI 88 Munich W Germany August 1988 BIBLIOGRAPHIE 267 34 35 36 37 40 41 42 43 44 45 46 M Dincbas H Simonis and P Van Hentenryck Solving large combinatorial problems in Logic Programming Journal of Logic Programming 8 1 2 1990 G Dore and P Codognet A Prototype Compiler for Prolog with Boolean Constraints In GULP 93 Italian Conference on Logic Programming Gizzeria Lido Italy 1993 G Gallo G Urbani Algorithms for Testing the Satisfiability of Propositional For mulae Journal of Logic Programming no 7 1989 pp 45 61 J M Garot Airspace Management in Europe issues and solutions In ZFORS 1993 13th International Conference of Operational Research Lisbon Portugal 1993 D Gudeman Representing Type Information in Dynamically Typed Languages Tech nical Report University of Arizona Arizona 1993 D Gudeman K De Bosschere and S Debray jc An Efficient and Portable Sequential Implementation of Janus In Joint International Conference and Symposium on Logic Programming Washington MIT Press 1992 R M Haralick and G L Elliot Increasing tree search efficiency for constraint satis faction problems Artificial Intelligence 14 1980 pp 263 313 S Haridi and S Janson Kernel Andorra Prolog and its computation model In 7th International Conference on Logic Programmin
294. tient plus la valeur de la variable instanci e e partir de l exemple 6 2 nous d rivons Ei cx ground Y A dom X C 2 Y infinity ground Y A min X gt 2 Y FE cy ground X A dom Y C 0 X lt 2 ground X A max Y lt X lt 2 puisque cx et cy sont quivalents CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 139 E X gt 2x Y E cx V E cy ground Y A min X ground X A max Y 2xY Vv gt lt X lt 2 Ici aussi la satisfaction de X gt 2x Y est d clench e aussit t que l une des deux variables est instanci e e l avantage de cette approximation est le tres faible co t de la d tection puisqu elle n est d clench e que tardivement Evidemment cet avantage devient un inconv nient en ce qui concerne la pr cision de la d tection qui est assez faible e enfin ce sch ma peut comporter diverses variantes pour la d tection de X in r comme d attendre que X soit galement clos d attendre que seul un ensemble res treint de variables de r soit clos assurant toutefois que r est anti monotone etc 6 3 Approximation 2 test sur les domaines L id e consiste dans le cas d une contrainte c qui n est pas anti monotone produire une contrainte c plus forte que e qui elle est anti monotone D finition 6 5 Soit inf resp sup la fonction de TermSyn dans lui m me d finie en table 32 rm 1570 00 ct ct ct min Y min Y max Y max Y min Y m
295. tion X1 X2 X3 X4 X5 X6 X7 e 1 4 6 6 6 3 1 Jm A eee k eq20 LD LD X1 X2 X3 X4 X5 X6 X7 domain LD 0 10 876370 16105 X1 6704 X3 68610 X6 0 62397 xX2 43340 X4 95100x X5 58301x X7 533909 96722 X5 0 51637 X1 67761 X2 95951 X3 3834x X4 59190 X6 15280x X7 915683 34121 X2 33488 X7 195 ANNEXE C PROGRAMME EQ20 196 0 1671 X1 10763 X3 80609 xX4 42532 X5 93520 X6 129768 11119 X2 38875 X4 14413x X5 29234 X6 0 71202 X1 73017 X3 72370 X7 7524474 58412x X2 0 8874 X1 73947 X3 17147 X4 62335 X5 16005 X6 8632 X7 90614 18810xX3 48219x X4 79785 X7 0 85268 X1 54180 X2 6013 X5 78169 X6 1198280 45086 X1 4578 X3 0 51830 xX2 96120 xX4 21231 X5 97919x X6 65651 X7 18465 64919 X1 59624 X4 75542 X5 47935 X7 0 80460 X2 90840 X3 25145 xX6 04 43525 X24 92298 X3 58630 X4 92590 X5 1503588 43277 X1 9372 X6 60227 X7 0 47385 X2 97715 X3 69028 X5 76212 X6 1244857 16835 X1 12640 X4 81102 X7 0 31227 X2 93951 X3 73889 X4 81526 X5 68026 X7 1410723 60301 X1 72702 X6 0 94016 X1 35961 X3 66597 X4 25334 82071 X2 30705 XK5 44404 X6 38304 X7 0 84750 X2 21239 X44 81675 X5 2772714 67456 X1 51553 X3 99395 X6 4254 X7 0 29958x xX2 57308 X3 48789x X4 4657x X6 34539x X7 249912 85698 X1 78219 X5 0 85176 xX1 57898 X4 15883 X5 50547 X6 83287 X7 373854 95332 X2 1268 X3 0 87758 X2 19346 X4 70072 X5 44529 X7 740061 10343x X1 11782 X3 36991 X6 0 49149 X
296. tion de code natif Aussi avons nous pens la traduction de Prolog vers C qui sur le papier devait permettre de b n ficier des avantages des deux approches Ainsi la portabilit serait assur e et en fin de compte du code natif serait produit par le compilateur C ce qui devait compenser le manque d optimisations par l absence des phases de recherche et de d codage En ce qui concerne la modularit celle de C permettrait de compiler des programmes Prolog s paremment et de les r unir au moment de l dition de liens les probl mes de visibilit des pr dicats tant r solus par les d clarations C appropri es Enfin le fait de compiler vers C permettrait CHAPITRE 3 IMPLANTATION DE WAMCC 51 de b n ficier d interfaces simples avec ce langage aussi bien qu avec tout autre langage compil et fournirait de vrais fichiers ex cutables Toutefois nous ne disposions au moment de ce choix 1991 d aucune r f rence dans le domaine de la traduction de Prolog vers C Aujourd hui encore trois ans apr s aucune implantation de Prolog bas e sur une traduction vers C n est disponible en dehors de wamcc En revanche dans ce laps de temps cette approche t adopt e pour implanter trois langages logiques d terministes avec gardes Janus 39 KL1 19 et Erlang 42 Ils utilisent tous des sch mas de traduction diff rents qu il est int ressant de comparer celui utilis dans wamcc en ce qui concerne
297. tion des contraintes DF En outre le trai tement d une seule primitive permet de d finir des optimisations globales dont b n ficient toutes les contraintes de haut niveau Toutes ces id es sont d taill es et aboutissent la d finition du langage clp FD L tude des performances de clp FD montre que cette approche est tr s efficace meilleure en tout cas que les r solveurs bo tes noires Nous tu dions galement les aptitudes de clp FD r soudre des contraintes bool ennes car elles sont un cas particulier des DF L encore clp FD se compare tr s bien avec des r solveurs sp cialis s Nous nous int ressons enfin a la d tection de la satisfaction des contraintes pour permettre l utilisateur de sp cifier des calculs dirig s par les donn es plut t que par les instructions Ce travail d bouche donc tout naturellement sur l implantation des langages concurrents Mots cl s Programmation Logique Prolog implantation contraintes domaines finis bool ens lan gages concurrents Intelligence Artificielle
298. tom i e a non variable term of arity 0 other than a number integer X inline predicate Checks that X is currently instantiated to an integer number X inline predicate Checks that X is currently instantiated to a number i e an integer atomic X inline predicate Checks that X is currently instantiated to an atom or number ANNEXE I MANUEL D UTILISATION DE WAMCC 235 compound X inline predicate Checks that X is currently instantiated to a term of arity gt 0 i e a list or a structure callable X inline predicate Checks that X is currently instantiated to a callable term i e an atom or a compound term 1 3 5 Control P Q Prove P and if it succeeds then prove Q P Q Prove P or if it fails or if the continuation fails prove Q instead of P The effect of the cut symbol is as follows When first encountered as a goal cut succeeds immediately If backtracking should later return to the cut the effect is to fail the parent goal i e that goal which matched the head of the clause containing the cut and caused the clause to be activated P If the goal P has a solution fail otherwise succeed This is not real negation P is false but a kind of pseudo negation meaning P is not provable P gt Q R Analogous to if P then Q else R This form of if then else only explores the first solution to the goal P P gt Q Equivalent to P gt Q
299. trainte c en file tait alors inutile si Date_Exec c gt Date Mise_En_File c Dans le meilleur cas le gain tait alors de 26 de Tells correspondant 17 du temps d ex cution et nul dans le pire des cas Dans la version courante de clp FD ceci a t abandonn pour les raisons suivantes e les r ex cutions du type a sont automatiquement vit es gr ce notre gestion de la file de propagation au travers des variables DF puisque lors de l ajout en file d une variable si celle ci s y trouve d j seul le masque des listes r ex cuter est mis jour ou logique e il tait n cessaire de dater toutes les ex cutions de contraintes y compris celles dues la propagation ce qui n est pas n cessaire pour les dates requises par la file et par l optimisation 2 De ce fait d s qu un calcul devenaint long le registre DATE d bordait n cessitant un lourd traitement de remise z ro de toutes les dates e l limination syst matique des doublons permet d viter les r activations du type b et que celles ci mais n offre qu un gain marginal du fait que l ordre d valuation des contraintes est modifi Pour illustrer ce dernier cas consid rons un ensemble de contraintes exprim es sous la forme Cy j Yn pour une contrainte sur X d pendant des variables Y Y Soit alors les contraintes Cx T Cy X Cz X Y T C A Z et un r seau R de contraintes inter d pendantes
300. tre trop grossi re Pour revenir sur notre exemple CHAPITRE 7 CONTRAINTES COMPLEXES 161 X Y avec un store initial X in 1 100 Z in 5 24 on obtiendrait une r duction de X 3 4 inchang et de Z 9 16 qui est beaucoup plus pr cise que 9 16 Optimisations Le fait de pouvoir d finir des fonctions pour le calcul de contraintes nous permet d optimiser l valuation de certaines contraintes Consid rons la contrainte diff X Y I utilis e dans queens pour sp cifier que X AY X4Y I1 X 4 Y I d finie comme suit Exemple 7 7 diff X Y D X in val Y amp val Y 1 val Y 1 cx Y in val X val X I val X I cy La table 37 montre le code produit par la compilation de la contrainte cx celui de la contrainte cy tant similaire fd_dly_val 1 1 end T 1 Y si Y est clos fd_compl_of_singleton 0 1 R O Y fd_term_copy 3 1 T 3 Y fd_term_parameter 2 2 T 2 I fd_term_sub_term 3 2 T 3 Y I fd_compl_of_singleton 3 3 R 3 Y I fd_inter 0 3 R O Y amp Y I fd_term_add_term 1 2 T 1 Y I fd_compl_of_singleton 1 1 R 1 Y I fd_inter 0 1 R O Y amp Y I amp Y 1 fd_tell_range 0 X in Y amp Y I Y I fd_proceed retour d ex cution Tableau 37 code de X in val Y amp val Y I amp val Y I Ce code effectue 3 compl mentations et 2 intersections Or le domaine que nous voulons affecter X n est rien d aut
301. u d instructions La compilation d une contrainte ly lt l1 l se d compose en deux parties e chargement des variables Xo X dans des arguments de la WAM e installation et ex cution de la contrainte 1 e cr ation des enregistrements appropri s dans les listes de d pendances des variables X X et d tection si la corps de la contrainte est satisfait par le store courant Dans l affirmative la paire Xo Bvalueg est mise en file de propagation et la proc dure de consistance est invoqu e CHAPITRE 5 CONTRAINTES BOOL ENNES 128 mu N El D Variable X Variable Y BValue_2 1 BValue_2 0 Blv_2_Adr Blv_2_Adr Bloc2_Flag 0n Bloc2_Flag 0n Tell_BValue 1 Tell_BValue 1 Tell_Blv_Adr Tell_Blv_Adr Next_Record Next_Record Chain_0 Variable Z Figure 18 structures de donn es n cessaires pour la contrainte Z lt X Y Dans la pr sentation qui suit nous notons Xi le i me registre de la WAM plut t que X i pour des raisons de clart nous simplifierons encore en crivant X si indice du registre n a pas d importance Quand l criture V elle d note une variable temporaire i e X j ou permanente i e Y j comme en section 3 1 7 Les instructions de chargement sont b_load_variable V X lie V une variable bool enne cr e sur le tas et range son adresse dans le registre X b_load_value V X suivant que la valeur w de la d r f rence de V est e une variable libre si
302. u de Z par l valuation de Z Y et nous devons donc pr venir le cas Y 0 similairement pour Z X L on peut alors utiliser un Ask pour d finir cette contrainte de mani re d clarative et efficace comme suit Exemple 7 3 7xy z X Y 2Z Y 40 X in min Z gt max Y max Z lt min Y X 0 Y in min Z gt max X max Z lt min X Z in min X min Y max X max Y L lagage effectu est beaucoup plus important que celui obtenu en retardant l valuation jusqu obtention de la lin arit du fait que X 0 est une condition d attente beaucoup CHAPITRE 7 CONTRAINTES COMPLEXES 157 plus faible que ground X Ainsi la contrainte xy z X Y 110 dans le store X in 1 40 Y in 6 30 r duira le domaine de X 5 11 et celui de Y a 10 22 Du fait que la contrainte n est pas encore lin aire la premiere version n effectuerait aucune r duction et la recherche de toutes les solutions entrainerait alors au moment de l num ration l essai de 40 valeurs pour X En comparaison la version utilisant le Ask ne n cessiterait que l essai de 7 valeurs 7 3 G n ralisation de la contrainte X in r 7 3 1 Contraintes r solues par full lookahead Grace la contrainte X in r nous pouvons sp cifier des sch mas de propagation du type full lookahead entre deux variables et ventuellement une constante comme montr en exemple 2 3 Il n est toutefois pas possible d utiliser ce type de propagat
303. ul when debugging since this avoid to recompile the code A dynamic predicate is either a predicate which has been declared with the directive dynamic or a predicate whose first clause has been dynamically created asserted In this version dynamic code is always public can be seen by any module Note that a static predicate i e compiled predicate cannot be redefined by a dynamic predicate For the predicates defined below the argument Head must be instantiated to an atom or a compound term The argument Clause must be instantiated either to a term Head Body or if the body part is empty to Head An empty body part is represented as true asserta Clause The current instance of Clause is interpreted as a clause and is added to the current interpreted program as the first clause The predicate concerned must be currently be dynamic or undefined Any uninstantiated variables in the Clause will be replaced by new private variables assertz Clause Like asserta 2 except that the new clause becomes the last clause for the predicate concerned clause Head Body The clause Head Body exists in the current interpreted program The predicate concerned must currently be dynamic clause 2 may be used in a non determinate fashion i e it will successively find clauses matching the argument through backtra cking retract Clause The first clause in the current interpreted program that matches Clause is erased The predi
304. until a NEWLINE character is read The NEWLINE character is discarded and the result is an atom Fails if the end of the file is encountered read_word X Skips leading separator characters and reads characters from the current input until a separator character is reached but not read Fails if the end of the file is encountered read_integer X Skips leading separator characters and reads the next integer from the current input Fails if the end of the file is encountered read Term The next term delimited by a full stop is read from the current input When the end of the file is reached Term is unified with the term end_of file read_term Term Options Same as read 1 with a list of options Options is a list of variables Vars Vars is bound to a list of variables of Term variable_names Names Names is bound to a list Name Var pairs where each Name is an atom indicating the name of a non anonymous variable in the term and Var is the corresponding variable singletons Names Name is bound to a list Name Var pairs one for each non anonymous variable only appearing once in the term syntax_errors Val controls what action to take on syntax errors Possible values are dec10 the syntax error is reported and read is repeated error an exception is raised fail the error is reported and the read fails quiet the read quietly fails ANNEXE I MANUEL D UTILISATION DE WAMCC 226 write Term
305. uple D tel que e D est un ensemble de formules atomiques e est une relation de satisfaction satisfaisant Struct Cut et tant g n rique Le th or me suivant permet de d finir un syst me de contraintes partir d un pr syst me de contraintes Th or me 2 1 63 Soit D F un pr syst me de contraintes Soit D la cl ture de D pour la quantification existentielle et pour la conjonction Soit la cl ture de par les r gles d inf rences Alors D est un syst me de contraintes CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 12 Par exemple un syst me de contraintes peut tre construit de mani re directe partir d une th orie logique du premier ordre c est dire d un ensemble de formules du premier ordre Prenons une th orie T et d finissons D comme la cl ture des formules dans le vocabulaire de T par conjonction et quantification existentielle On d finit alors la relation Fr comme suit S kr d si et seulement si S implique logiquement d en utilisant comme extension les axiomes de T On peut alors montrer facilement que D kr v rifie les propri t s des syst mes de contraintes donn es ci dessus On voit ainsi que cette d finition g n ralise naturellement la vision traditionnelle des con traintes comme des formules interpr t es dans une structure particuli re Ici la structure est toujours implicite on ne donne que la relation de satisfaction qui est un l ment f
306. ut tre encod e par Exemple 7 5 gt xy z X Y Z X in div_e min Z max Y div_d max Z min Y Y in div_e min Z max X div_d max Z min X Z in min X min Y max X max Y La fonction div_e x y resp div_d x y retourne x y resp 1 y si y 4 0 et 0 resp infinity sinon Consid rons maintenant le cas particulier o X Y ie X Z L utilisation de gt xy z X X Z dans le store X in 1 100 Z in 5 24 r duira le domaine de X 1 24 mais ne modifie pas le domaine de Z Il est toutefois possible d am liorer l tendue de ces r ductions du fait que X VZ Ceci est similaire ce qui se passe si la normalisation n est pas effectu e pour les quations lin aires cf section 7 1 1 et que les diverses occurrences d une variable sont trait es s par ment D finissons alors la contrainte X Z comme suit Exemple 7 6 2xx z X Z X in sqrt_e min Z sqrt_d max Z Z in min X min X max X max X La fonction sgrt e x resp sqrt d 1 retourne la racine carr e de x arrondie l entier sup rieur resp inf rieur Cette contrainte dans le store X in 1 100 Z in 5 24 r duira le domaine de X 3 4 et celui de Z 9 16 Notons pour finir qu il est videmment possible d utiliser un sch ma de propagation par full lookahead comme indiqu pr c demment En effet dans le cas de termes non lin aires l approximation par les intervalles peut
307. ution a rencontr un pr dicat non d fini soit parce que l ensemble de contraintes est devenu inconsistant 2 3 Le cas C FD Nous allons nous int resser ici a la d finition d un systeme de contraintes sur les domaines finis not FD 2 3 1 Les domaines finis D finition 2 5 Un domaine est un ensemble fini non vide de constantes En ce qui nous concerne nous ne nous int resserons qu des ensembles d entiers naturels N et plus particuli rement des ensembles appartenant aux parties de 0 1 infinity o infinity est un entier naturel particulier repr sentant la plus grande valeur qu une CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 15 variable DF puisse prendre Dom est l ensemble de tous les domaines Nous utiliserons la notation k k2 comme abr viation de l ensemble des entiers k t q k lt k lt k2 D finition 2 6 Soit d un domaine on d finit min d et max d comme les bornes de d e min d ktg ked et Wed k lt E e mar d ktq kEd et Vk ed k gt k Nous utiliserons les op rations d inclusion d intersection d union et de compl mentation not e d dy pour d signer le compl mentaire de da dans d4 En ce qui concerne les entiers on utilise les op rations classiques sur les x ainsi que les divisions arrondies par d faut et exc s not es respectivement et Nous d finissons alors des op rations point point sur les domaines D
308. v 1 in min fv 0 fp 2 max fv 0 fp 2 CHAPITRE 4 IMPLANTATION DE CLP FD 78 Repr sentation des contraintes Cstr_Address adresse de la fonction C associ e Tell_Fdv_Adr adresse de la variable contrainte adresse de l environnement Figure 8 repr sentation interne d une contrainte Une structure interne est associ e chaque contrainte X in r et stocke les diff rentes informations suivantes cf figure 8 e l adresse de l environnement dans lequel doit tre activ e cette contrainte e l adresse de la variable X qui est contrainte e l adresse du code d ex cution qui se charge d valuer le domaine r pour ensuite appeler la fonction Tell qui mettra jour X Un nouveau registre CF pointe alors la contrainte courante Repr sentation des domaines Il y a deux repr sentations possibles pour un domaine Min Max seuls le min et le max sont maintenus Cette repr sentation est donc utilis e pour des intervalles et peut stocker des valeurs incluses dans 0 in finity Sparse en plus du min et du max un vecteur de bits est utilis pour stocker en extension l ensemble des valeurs du domaine Cette repr sentation permet de stocker des valeurs incluses dans 0 vector_max Par d faut vector max vaut 127 et peut tre red fini gr ce une variable d environnement ou via le pr dicat pr d fini fd_vector_max 1 Les vecteurs ne sont pas dynamiques et ce pr dicat ne peut donc tre utilis
309. variable X dans S s obtient en r cup rant la contrainte X in r qui lui est associ e dans S cf fonction lookup store et en valuant r sans tenir compte des indericaux pour viter les boucles infinies ce qui revient valuer r dans le store vide cf fonction cur domain En vue de simplifier encore un peu les notations nous utiliserons les abr viations suivantes relatives un store S e Xs cur_domain X S i e la valeur du domaine de X dans S e min X s min Xs e maz X s maz Xs e rs E r S i e domaine d not par r dans S e ts E t S i e entier d not par t dans S D finition 2 11 Soit S et S deux ensembles de contraintes on dit que S est plus con traint que S not S E S ssi YX Va Xs C Xs Nous pouvons alors d finir une quivalence entre stores comme suit D finition 2 12 Deux stores S et Sy sont quivalents not S S2 ssi S E S et So Sy CHAPITRE 2 LA PROGRAMMATION LOGIQUE PAR CONTRAINTES 22 Le fait d utiliser un point fixe pour Tell impose que cette op ration soit monotone De mani re plus pr cise si une valeur est inconsistante pour une variable DF un moment donn elle ne doit pas re devenir consistante par la suite D finition 2 13 Un domaine r est monotone resp anti monotone ssi VS S S E S gt rgCrs resp rg C rer Une contrainte c X in r est anti monotone ssi r est anti monotone Nous pouvons alors imposer que l
310. verage average delayed length h delay delay flights of of of of among among p c indom atmost equa flights delayed all constr constr lity flights flights constr Tableau 41 some runtime examples would have been impossible to adapt the restrictions to last minute changes during the real time supervision phase Hereafter we describe an extension of the model seen so far which permits to organize delays in a fairly manner It corresponds to the way French flow managers work 8 4 6 Extension of the Model to Integrate Flow Rate Cons traints Flow Constraint Definition A flow constraint called in Europe a regulation is a relation between a traffic flow F a temporal period T and a rate N 6t N is the maximum number of aircraft that can feed the flow each 6 minutes F can be defined by a set of origins and or a set of destinations and or a set of beacons and or a set of sectors and or a flight level layer Those properties of a flow are the characteristics that a flight must fulfill to be submitted to the flow constraint Generic example of flow constraint from SetOfOrigins entering Group OfSectors hi h2 N t CHAPITRE 8 R GULATION DU TRAFIC A RIEN AVEC CLP FD 186 Instantiated example of flow constraint from UK to Balearic 10am 11am 1 8 The constraint is satisfied if during T there are at most N flights belonging to F per slice of t minute width clp FD Model We ca
311. vons nous assurer que VS S E S gt rs C rs i e r est anti monotone alors il suffit de v rifier Xs C rg ce qui n implique que de tester le store courant De plus cette rela tion est particuli rement bien adapt e pour am liorer l optimisation 2 puisqu elle d tecte la satisfaction d une contrainte X in r la seule vue du store courant ce qui ne peut se faire qu en concluant que X ne sera plus r duit La proposition suivante nous montre que F est une relation plus forte que F CHAPITRE 6 D TECTION DE LA SATISFACTION DE CONTRAINTES 136 Proposition 6 1 Si SF c alors S F c Preuve triviale du fait que VS S E S gt Xg C Xs O Nous allons donc nous int resser la d tection de S Fy c plut t qu la d tection de S ce Soulignons que ceci constitue la premi re approximation pour la d tection de la satisfaction D finition 6 3 Soit une contrainte c X in r E c est la formule syntaxique d finie comme E c dom X Cr Etant donn un store S cette formule s value vrai ou faux de mani re vidente par la valeur de v rit de E c s Xs C rs La proposition suivante est celle sur laquelle reposera la d tection de satisfaction Proposition 6 2 Sic est anti monotone alors E c s gt Sty c Preuve puisque c est anti monotone nous avons VS S E S rs Cre supposons que E c s soit vraie i e Xs C rs nous pouvons donc en conclure que VS S E S Xs Crs Cre
312. xp rimenter diverses extensions En effet l tude de Sicstus Prolog nous a vite convaincu du travail colossal que repr sentait la modification d une implantation professionnelle Nous avons donc d fini un cahier des charges pour wamcc comprenant les points suivants par ordre de priorit e evolutivit puisque ce Prolog devait servir de plate forme exp rimentale Ceci impli quait donc un moteur Prolog simple ne pouvant b n ficier d optimisations pouss es CHAPITRE 3 IMPLANTATION DE WAMCC 49 qui font grossir le code ex l mulateur de Sicstus ne n cessite pas moins de 35000 lignes de C e portabilit de mani re permettre une large diffusion et viter l obsolescence inh rente l attachement une machine donn e e efficacit pour ne pas disqualifier les futures extensions en particulier les con traintes sous le pr texte que le Prolog de base n est pas assez efficace En effet bien souvent un langage est d abord jug sur les contre performances qu il offre sur les benchmarks classiques et ensuite seulement sur les facilit s d expressions et les nouveaut s qu il offre Ainsi nous nous tions fix s comme objectif d tre aussi rapide que la version 0 6 de Sicstus celle ci servant alors de mesure talon pour l valuation des performances Cette version tait bas e sur un mulateur tr s optimis crit en C e support de la modularit permettant a
313. y Can Logic Programming run as fast as Imperative Programming Report No UCB CSD90 600 Berkeley California 1990 74 P Van Roy and A Despain High Performance Logic Programming with the Aquarius Prolog Compiler IEEE Computer pp 54 67 1992 75 D H D Warren An Abstract Prolog Instruction Set Technical Report 309 SRI International Oct 1983 76 D H D Warren The Andorra Principle Internal Report Gigalips Group 1987 Des contraintes na t la beaut L onard de Vinci L erreur est la r gle la v rit est l accident de l erreur Georges Duhamel Il y a assez de lumi re pour ceux qui ne d sirent que de voir et assez d obscurit pour ceux qui ont une disposition contraire Blaise Pascal R sum Ce travail porte sur la compilation des langages de programmation logique par contraintes sur les domaines finis DF Plut t que d adopter l approche usuelle consid rant le r sol veur comme une bo te noire nous avons choisi l approche bo te de verre de P van Hentenryck Dans celle ci le r solveur g rer une seule contrainte primitive Toutes les con traintes complexes quations contraintes symboliques sont traduites en des appels de contraintes primitives Le r solveur est ainsi simple et homog ne De plus l utilisateur peut d finir ses propres contraintes en termes de cette primitive Cette primitive nous permet de d finir une machine abstraite pour la compila
Download Pdf Manuals
Related Search
Related Contents
Xenon 1900/1902 Area-Imaging Scanner User's Guide Shift-I User Manual V1.3 DSC-TX100/TX100V CQM1 - Manuel d`utilisation - (Français) - Support ZyXEL Communications P-660R-T1 v2 Network Router User Manual De'Longhi N130HPE Quick Start Guide CompeteFor User Guide - Derbyshire Economic Partnership NL - IT - Ulabox.com Copyright © All rights reserved.
Failed to retrieve file