HAL Id: inria-00000089
https://hal.inria.fr/inria-00000089
Submitted on 26 May 2005
HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.
Explication systématique des contraintes indexicales
Ludovic Langevine
To cite this version:
Ludovic Langevine. Explication systématique des contraintes indexicales. Premières Journées Fran- cophones de Programmation par Contraintes, CRIL - CNRS FRE 2499, Jun 2005, Lens, pp.413-422.
�inria-00000089�
Expliation systématique des ontraintes
indexiales
Ludovi Langevine
∗
Sis , Uppsala Siene Park,SE-75183 Uppsala, Suède
langevinsis.se
Résumé
Plusieurssolveursdeontraintessurdomainesnis,
telsGNU-PrologouSICStusProlog,utilisentlesindexi-
auxpourdénirleursontraintesprimitives.Unindexi-
al exprime un ensemble de valeurs onsistantes pour
une variabledonnée et peut être ompilé en un algo-
rithmedeltrageeae.
L'expliation d'un retrait de valeurs est un sous-
ensemble du store qui sut à justier e retrait. Les
expliations permettent de traiter des problèmes sur-
ontraints ou dynamiques, et de mettre en ÷uvre di-
versesméthodesdereherhe.
Traditionnellement,ilfaut onevoirun algorithme
dealuldesexpliationspourhaquealgorithmedel-
trage.Cetartilemontreque,pourlesontraintesspé-
iéespardesindexiaux,ilestpossiblededériverauto-
matiquementlesalgorithmesd'expliation.Dansleas
de SICStusProlog, ilestmême possiblede tirerpartie
del'implémentationexistantepouroptimiserealul.
Abstrat
Severalonstraintsolvers overnitedomains, suh
asGNU-PrologorSICStusProlog,useindexialstode-
netheirprimitiveonstraints. Anindexialspeiesa
set ofonsistentvaluesforagivenvariableandanbe
ompiledintoaneientlteringalgorithm.
The explanation of a value withdrawal is a set of
onstraints thatis suient tojustify this withdrawal.
Explanationsenablethehandlingofover-onstrainedor
dynami problems, and allow the development of new
searhmethods.
Traditionally,anexplanationalgorithmhastobede-
signed for eah ltering algorithm. This paper shows
thatexplanationalgorithmsanbeautomatiallyderived
fromindexialonstraints. Inthe aseofSICStusPro-
log,explanationomputationanalsobenetfromthe
existingimplementation.
∗
1 Introdution
Lesexpliations sont unevariété detehniquesqui
gardenttraedes déisionsdusolveurde ontraintes,
prinipalement pour améliorer la puissane et l'in-
telligene de la proédure de reherhe. Les explia-
tions ont montré leur eaité pour aélérer la ré-
solution de ertaines lasses de problèmes diiles,
omme la planiation hautement disjontive [13℄.
Elles permettent également de traiter les problèmes
dynamiques et surontraints au sein d'un même ou-
til. De plus, Ferrandet oll. [11℄ ont montré que les
expliations peuvent être utilisées pour déboguer un
programmequinefournit pasunesolutionattendue.
Malgré leurs diverses appliations, les expliations
restentpeuutilisées.Peudesolveursfournissentette
fontionalité, omme le remarquent Douene et Jus-
sien [8℄. Le méanisme de alul des expliations est
intrusif: leodesouredu résolveurdoit êtreinstru-
menté. Le prinipal obstale semble être le out de
edéveloppementdansle÷urdusolveur,maisaussi
danslesalgorithmesdeltragedesontraintesprimi-
tives.Douene et Jussien proposent d'utiliser la pro-
grammation orientéeaspetspouréviter lamodia-
tiondireteduodesouredurésolveur.Quoiqu'ilen
soit, l'algorithme d'expliationd'une ontrainte don-
néedoitêtreonuetdéveloppé.C'estunetâheaisée
mais fastidieuse pourles ontraintes simples,et bien
plusarduepourlesontraintesglobales.Deplus,l'uti-
lisateurdoitexpliquerlesontraintesqu'ildénit.
Certainssolveursutilisentunlangagedédiépourdé-
nirleurs ontraintes primitives.Ces dénitions sont
ensuiteompiléesouinterprétéesdynamiquement.Les
indexiauxsontunmoyenpourdérireesontraintes.
Introduits par Van Hentenryk et oll. [19℄ dans le
adre de (fd), il en existe deux mise en ÷uvres
sont à la fois délaratif et opérationnels : ils spéi-
entleniveaudeonsistaneàappliqueretorentun
moyensimplederéaliserleltrageorrespondant.
À notre onnaissane, auune implémentation des
indexiauxne fournitd'expliations.Dans etartile,
nous présentonsd'abordun shéma triviald'explia-
tiondesontraintes indexiales.Puis nousproposons
d'utiliserlastruturedulangageindexialpouralu-
lerdes expliations pluspréises. Ce shéma est sys-
tématique : il évite la oneption manuelles d'algo-
rithmesd'expliation.Nousmontronségalementom-
mentbénéier del'implémentation existante desin-
dexiauxpourlimiterlesaluls.Lesexpliationsal-
ulées ne sont pas minimales pour l'inlusion, mais
sontpréises pourunlargesous-ensembledulangage
indexial.
La setion 2 motive notre travail en rappelant les
prinipesdesexpliationsetleursprinipalesapplia-
tions.Lasetion3présentelesontraintesindexiales
quenousvoulonsexpliqueretleursimplantationlas-
siques.Nousexposonsunshémad'expliationtriviale
ensetion4.Un shémapluspréisest ensuiteintro-
duit ensetion 5.Lestravauxonnexes sontdisutés
ensetion6,avantdeonlureen7.
2 Expliations en PPC(DF)
Une expliation est un sous-ensemble des
ontraintes du problème à résoudre sut à justi-
erune ation du solveur. Deux types d'expliations
sont largement utilisés : l'expliation de retrait de
valeursetl'expliationsd'éhe.Lapremièreexplique
pourquoi une valeur donnée, ou un ensemble de
valeurs, doit être retiré du domaine d'une variable.
La seonde est un ensemble onituel qui rend le
problème insoluble. Cette setion dénit d'abord
les expliations en 2.1, puis la setion 2.2 détaille
quelquesunesdeleurspropriétés.Enn,nousprésen-
tonsquelquesappliationsmotivantesdesexpliations
en2.3.
2.1 Dénitions formelles
Considérons la dénition traditionnelle d'un CSP
(onstraint satisfation problem) : unensemble
V
devariables, une fontion de domaine
D
qui assoie àhaque variable
x
un ensemble ni de valeurs pos-sibles
D(v)
, et un ensembleC
de ontraintes.D
estle domaine de alul, ensemble des valeurs possibles
pour toutes les variables. Les domaines initiaux des
variables, quand diérents de
D
, sont inlus dansC
sousformedeontraintesunaires.
dutions de domainesqu'elle opère. Dans et artile,
nous utilisons leformalisme de Ferrand et oll.[10℄ :
lapropagationestmodéliséeparlealuldelalture
desendante de l'ensemble des opérateurs de onsis-
tane loaleassoiés à
C
. Ce formalismeapture l'in-omplétudedessolveursbaséssurlapropagation.Par
soui de simpliation, nous noterons
CL ↓ (V, C)
lafontiondedomainesur
V
résultantdelapropagation desontraintes deC
.Déf. 2.1 (Expliationde retrait) Une expliation
du retraitde la valeur
d
pour lavariablev
est unen-semblede ontraintes
E ⊆ C
telque:d / ∈ CL↓(V, E)(v)
End'autrestermes, la propagation desontraintesde
E
est sut àjustier l'élimination de la valeurd
deD(v)
.Quand les expliations sont alulées pendant la
propagation, à la volée, l'expliation du retrait de
d
de
D(v)
ontient la ontrainte qui a proédé au l-trage.Elle ontientégalementlesontraintes respon-
sables des retraitsde haquesupport de lavaleur et
lesexpliations duretraitde haquesupport. Ce rai-
sonnementonduitàunedénitionréursiveélégante
de l'expliation, omme un arbre de preuve de re-
traits de valeurs [10℄ (expliations-arbres). Ii, nous
adoptonsuneformalisationplussimpleoùlesexplia-
tionssontdesensemblesde ontraintes (expliations-
ensembles)[15℄).
Déf. 2.2 (Expliationd'éhe) Une expliation
d'éhe de
(V , C)
est un ensemble de ontraintesE ⊆ C
telque:∃v ∈ V · CL↓(V, E)(v) = ∅.
End'autrestermes,lesous-ensemblede ontraintes
E
estunonit :il n'admetauunesolution.
Dans lasuite,parlantindiéremmentd'expliation
deretraitoud'éhe,nousnoteronsexpliationd'une
déision.
2.2 Caratérisationdes expliations
Nousnotons
E
l'ensembledesexpliationsdéjàal- ulées.E
estunefontionpartielledeV×D
dansP (C)
,où
P (C)
estl'ensembledespartiesdeC
.Nousutilisonslanotationensembliste:
E ∈ V ×D×P (C)
Propriété 2.1 (Expliationde tout retrait)
E
est une fontion partielle dont le domaine estl'ensemble desretraitsopérés :
∀v ∈ V · ({d ∈ D | ∃(v, d, E) ∈ E} = (D −D(v)))
ationspeuventêtretrouvées.Premièrement,si
E
ex-plique une déision,alors tout sur-ensemble
E ′
deE
dans
C
estégalementuneexpliationdeettedéision,parsuitedelamonotoniitédesopérateursderédu-
tion.Ainsi,
C
est uneexpliationtrivialede toutedé-isiondurésolveur.Deuxièmement,plusieursexplia-
tions dièrentes de lamême déisionpeuventoexis-
ter du momentqu'ilexiste deux expliations
E 1 ⊆ C
et
E 2 ⊆ C
tellesqueE 1 ∩ E 2
n'estpasuneexpliationdeettedéision.
Ågren [1℄ dénit laplus ne expliation d'une de-
ision ommel'expliation qui implique unminimum
de variables. Un ritère plus ourant est la minima-
litépourl'inlusiond'uneexpliation[14℄.Ii,omme
formalisé par Ferrand et oll. [10℄, nous onstruisons
lesexpliationsàpartird'expliationsexistantes,ajou-
tantlaontraintedélenhantladéision:
Propriété 2.2 (Expliationonstrutive)
Chaque expliation de
E ∈ E
est onstituée de laontrainte
c
et d'un ensemble (éventuellement vide) d'expliations. Formellement, haque(v, d, E)
deE
est telque:
E = {c} ∪
n
[
i=1
E i
Deplus,haque
E i
onernedesvariables devar(c)
(àausede loalitédualul) :
∀i ∈ J1, nK, ∃v i ∈ var(c), ∃d i ∈ D · (v i , d i , E i ) ∈ E
ave
var(c)
l'ensembledesvariables impliquéesdansc
.Parsuite,nous onsidéronsla minimalitéloalepour
l'inlusion [14℄. Une expliation est loalement mini-
malepourl'inlusionsielleutilise unminimumd'ex-
pliations antérieures
E i
.2.3 Appliationsmotivant lesexpliations
Nous sommes intéressés par quatre appliations
prinipales desexpliations,àsavoir: ledébogage,le
traitementdesproblèmesdynamiques,larésolutionde
problèmessurontraintset l'enrihissementdelapro-
édure de reherhe. Nous allons résumer es quatre
pointsande motivernotre ontribution. Nepréten-
dantnullementprouverl'intérêtdesexpliations,nous
renvoyonsleleteurauxtravauxitéspourdesdétails
tehniquesouquantitatifs.
Premièrement, les expliations aident à déboguer
un programme inorret. Elles sont un moyen de
trouver la raison d'une réponse manquante. Quand
une solution attendue d'un problème n'est pas trou-
vée par la reherhe, ela signie qu'un ensemble de
lantdesexpliationspeutexhiberunensembleoni-
tuelpréis,'est-à-direunensembledeontraintesjus-
tiant le rejet de la solution. Le programmeur peut
ainsiseonentrersur e onitande trouverl'ori-
ginedubogue.Ferrandet oll.[11℄ ontadapté ledé-
bogagealgorithmiqueenesens.
Deuxièmement, le même prinipe permet de gérer
lesproblèmes surontraints.Quand unproblèmeor-
retement formulé et programmé est insoluble, des
ontraintes doivent être relâhées. Ouis et oll. [17℄
montrentommentlesexpliationsaidentl'utilisateur
à hoisir les ontraintes à relâher. L'utilisation de
leur outilparun utilisateurnal nenéessite auune
onnaissanedelaprogrammationparontraintes.
Troisièmement,lesexpliationsaméliorentletraite-
mentdes problèmesdynamiques,oùlesontraintes à
prendreenomptepeuventhangerauoursdel'exé-
ution. Certaines ontraintes peuvent être relâhées,
d'autres ajoutées. De tels problèmes se renontrent
dans des systèmes onfrontés à une demande ou un
environnementhangeant.Lesexpliationspermettent
ausolveurderelâhern'importequelleontraintetout
enannulantseseetspassés,eteiaveunminimum
dealuls.Deplus,l'étataprèslerelâhementestsou-
ventprohedel'anienétat.C'estainsiqu'Elkhyariet
oll.[9℄ gèrent diérentsproblèmes dynamiquesd'or-
donnanement où les ativités et ressoures peuvent
être ajoutées ousupprimées, et où les ontraintes de
préédenespeuventêtremodiées.Leursrésultatssur
delargesinstanesmontrentl'eaitédelaméthode
etlastabilitédesordonnanementsproposésparl'ou-
til.Delamêmemanière,l'outild'emploidutempsde
Cambazardetoll.[2℄prendenomptel'aspetdyna-
miqueinhérentauxressoureshumaines.
Enn, les expliations libèrent le solveur du ar-
an du retour-arrière hronologique. Le solveur pou-
vant relâher n'importe quelle ontrainte, la proé-
dure de reherhe n'est plus néessairement un par-
oursd'arbre.Àhaqueéhe,unonitpeutêtreex-
trait. Lesonits extraitsdurantl'exéution peuvent
êtreanalysésand'adapterl'heuristique.Ii,lesexpli-
ations ontun double intérêt.Elles permettent d'ap-
prendre la ause des éhes et d'eetuer un bak-
traking dynamique.Cetteintégrationdelapropaga-
tiondeontraintesdanslebaktraking intelligent
évite de répéter les mêmes impasses. Laplus onnue
destehiquesdee typeest MAC-DBT(Maintaining
Ar-Consisteny withDynami Baktraking),propo-
X in min(Z) - max(Y) .. max(Z) - min(Y),
Y in min(Z) - max(X) .. max(Z) - min(X),
Z in min(X) + min(Y) .. max(X) + max(Y).
Fig.1Spéiationdelaonsistanedebornespour
laontrainte
X + Y = Z
(syntaxeSICStusProlog)plus(X,Y,Z) +:
X in dom(Z) - dom(Y),
Y in dom(Z) - dom(X),
Z in dom(X) + dom(Y).
Fig. 2 Spéiation de la onsistane d'hyper-ar
pour
X + Y = Z
3 Contraintes indexiales
Nousrappelonsiilesbasesdesindexiaux:leurex-
pressivité(se.3.1),syntaxe(se.3.2),ainsiqueleurs
shémas de ompilationet de propagation (se. 3.3).
La setion 3.4 présente quelques aspets tehniques
deleursimplémentations.Deplusamplesdétailssont
donnéspar Carlsson et oll. [4℄ pourSICStus Prolog
etCodognetetDiaz[5℄pourGNUProlog.initialpaper
byVan
3.1 Expressivitédes indexiaux
Unindexialestuneontraintedelaforme
V in R
,où
V
est une variable de domaine etR
une expres-siondehamp,représentantunensembledevaleurs 1
.
L'expression
R
peut inlure des informations sur les domaines d'autres variables, telles leurs bornes, leurensembledevaleurs,leurvaleurnaleouleurardina-
lité(notérespetivement
min
,max
,dom
,val
,etcard
).Ainsi, le domaine de
V
doit être un sous-ensemble deR(D)
, évaluation deR
dans l'état des domainesD
. L'indexial spéie don un ensemble de valeursvalides pour
V
. Comme expliqué en 3.3, un indexi-al peut être ompilé en un algorithme de ltrage.
Denombreusesontraintesstandards(arithmetiques,
booléennes ou symboliques) peuvent être exprimées
par la onjontion de plusieurs indexiaux, à raison
d'unindexialparvariable.EnSICStus,lesindexiaux
sontégalementutiliséspourspéierlestestsd'impli-
ationetdesatisabilité.
Lesindexiaux peuvent oder plusieursniveaux de
onsistane.Parexemple,lagure1présenteomment
spéier la onsistane de bornes pour la ontrainte
1
Noustraduironsletermeanglaisrangeparhampdans
eontexte,ommehampdevaleurspossibles.
arithmetique X+Y=Z,grâe àdes intervalles délimités
parlesbornesdesvariables(A..Bestl'intervalleentre
Aet B).Laonsistaned'hyper-arpeutêtrespéiée
enutilisantl'additionetlasoustrationpoint-à-point,
ommelemontrelaFigure 2.
L'intérêtdesindexiauxest triple:leurlangageest
simple à maîtriser, ils sont simples à onevoir et à
omprendre,etils sontdesspéiationsexéutables.
Deplus,ilestpossibledelesimplémentertrèseae-
ment.Même s'ilsmanquentd'expressivité,inapables
d'exprimer les algorithmesomplexes des ontraintes
globales,ilsonstituentunoutilpuissantpourdérire
unlargeéventaildeontraintessimples.Pourpreuve,
la totalitéde labibliothèque domaines nis deGNU
Prologestimplémentéeenutilisantlesindexiaux.Les
indexiauxpermettentaussidedévelopperrapidement
desrésolveursspéialisés.
3.2 Une syntaxeuniéedes indexiaux
L'expressivité et la syntaxeexates des indexiaux
varient légèrement suivant les implémentations. Par
exemple,GNUPrologproposelamultipliationpoint-
à-point entre deux hamps de valeurs [6, Se. 7.3.1℄
tandisqueSICStuspermet desévaluationsondition-
nelles. Ii,nous onsidéronsl'union desonstrutions
de es deux implémentations, adoptant si possible la
syntaxede SICStus,et elle deGNU Prologpourles
onstrutionsquiluisontspéiques.
Dans un indexial
V in R
, l'expressionde hampR
est une onstrutiondu langage dérit en table 1.Ce langage a deux niveaux d'expression : les termes
(valeursindividuelles dans
D
),qui peuventêtre om-binés en hamps (sous-ensembles de
D
). Les valeursde hamps élémentaires sont soit le domaine d'une
variable, une énumération de termes ou un interval
entre deux termes. Les hamps peuvent être ombi-
nés en utilisant des opérations ensemblistes (union,
intersetion, omplément) ou l'arithmétique point-à-
point(
P (D) 2 → P (D)
). Les opérations arithmétiques peuvent également ombiner un hamp et un terme(
P (D)× D→ P(D)
).Lestermesélémentairessont:une borneinférieureousupérieure,laardinalitéoulava-leur instaniée d'un domaine, ou bien une onstante
de
D
.Lestermespeuventêtreombinésarithmétique- ment.Lasémantiquedénotationnelledees onstru-tions est dérite dans [5℄. La table 1rappellequatre
fontionnalités avanées.Tout d'abord, l'appel d'une
fontion C (aspet non doumenté de GNU Prolog),
avedestermesouhampspourparamètres.Lafon-
tion
f
doit renvoyerunhampdevaleurs.C'estainsiqu'est implémentée la ontrainte element en GNU
Prolog. Ensuite, SICStus propose deux onstrutions
d'évaluationonditionnelleoùlehampévaluédépend
delavaleurd'uneautreexpression(
?
etswitch
).En-Constrution
type
Syntaxe Desription
Valeursde
hamps
dom(V )
étatourantdeD(V ) {T 1 , . . . , T k }
ensemble de termes(S)
T 1 .. T 2
intervalleJT 1 , T 2 K ⊆ D
Composition
de hamps
R = R 1 op R 2
R 1 /\ R 2
intersetionR 1 \/ R 2
unionR 1 + R 2
additionpàp.R 1 − R 2
soustrationpàp.R 1 ∗ R 2
multipliation pàp.(G)
R 1 / R 2
divisionpàp. (G)R 1 mod R 2
modulopàp. (S)Op.sur un
hamp
\ R 1
omplément− R 1
négationpàp. (S)Composer
unhamp
etun terme
R = R 1 op T 1
R 1 + T 1
additionpàp.R 1 − T 1
soustrationpàp.R 1 ∗ T 1
multipliationpàp.R 1 /< T 1
division entière pàp.(défaut) (G)
R 1 /> T 1
division entière pàp.(exès) (G)
Valeursde
termes
min(V )
borneinf.deD(V ) max(V )
bornesup.deD(V ) card(V )
ardinalité deD(V )
(S)
val(V )
valeurnaledeD(V )
n
entier,n ∈ D
inf
borneinf.deD sup
bornesup.deD
Composition
de termes
T = T 1 op T 2
− T 1
négation (S)T 1 + T 2
additionentièreT 1 − T 2
soustrationentièreT 1 ∗ T 2
multipliationentièreT 1 /< T 2
division entière (dé-faut)
T 1 /> T 2
division entière (ex-ès)
T 1 mod T 2
moduloentierFontions
avanées
R = f(. . .)
f(a 1 , . . . , a k )
appel de fontion, lesa i
sont destermes ouhamps (G)
R 1 ? R 2
égalàR 2
siR 1 6= ∅
,∅
sinon (S)
switch(T, L)
égalàL(T )
(S)unionof(x, R 1 , R 2 ) = ∪ d∈R 1 (R 2 [x ← d])
(S)
Key:
R
,R 1
etR 2
sontdeshamps.T
,T 1
etT 2
sontdestermes.V
estunevariabledevar(V in R)
.x
estunevariableloaleR[x ← d]
estlasubstitutiondex
pard
dansR L
listede(i, R i )
avei =j ⇒ R i = R j
,etL(i) = R i
(G)signaleunespéiitéGNUProlog.
(S)signaleunespéiitéSICStusProlog
pàp.signiepoint-à-point
Tab.1Syntaxeuniée desontraintesindexiales
n,
union
alule,enSICStus,l'uniondesévalua- tionsdeR 2
pendantqu'unevariableloalex
parourtlesvaleursde
R 1
[3,Se.34.10.2℄.3.3 CompilationetPropagationdesindexiaux
Les indexiauxontunshéma de ompilation et de
propagationsimple.Chaqueindexial
V in R
estom-pilé en un moyen d'évaluer
R(D)
(f. 3.4). Le réveild'un indexialprovoque ette évaluation, puisle al-
uldel'intersetionentrel'ensemblerésultantetledo-
maineourantde
V
. CetteintersetionR(D) ∩ D(V )
devientlenouveaudomainede
V
.Unéheestdétetélorsqueette intersetionestvide.
Leréveild'unindexialestprovoquépartoutemise
àjourd'undeséléments-domainesimpliquésdansson
hamp
R
. Par exemple, un indexial dont le hampseréfère à
min (X )
,max (Y )
, etdom (Z)
seraréveillé àhaqueaugmentationdelaborne inférieurede
D(X)
,diminution de
max(Y )
et tout retraitdansD(Z )
. Laorretion de e shéma de propagation néessite la
monotoniité deshampsdesindexiaux.
Propriété 3.1 (Monotoniité) Un hamp
R
estmonotonessi
R(D) ⊆ R(D ′ )
,pourtoutepairedefon-tions domaine
(D, D ′ )
surV
telle que∀v ∈ var(R) · D(v) ⊆ D ′ (v)
.LorsqueR
estnon-monotone, l'évalua-tionde
R(D)
estretardéejusqu'àequeD
assureettemonotoniité.
Lastratégieexatedépend del'implémentation[4,5℄.
Ii, nous supposerons qu'un indexial ne peut ee-
tuerde retraitde valeursque quandsa monotoniité
estertaine.Cettepropriétéestappeléemonotoniité
pourla propagation.
3.4 Évaluationdes indexiaux
EnSICStus,lehampd'unindexialestompiléen
notation post-ordrepuis en un ode pour mahine à
pile. Quand unindexial
V in R
est reveillé, lama-hineàpileévalue
R(D)
,suivantl'étatourantdesdo-maines. Le résolveur alulealors laposition relative
de
R(D)
parrapportàD(V )
,l'intersetionn'étantpas diretementalulée.Silesdeuxensemblesserévèlentdisjoints,unéheestdélenhé.Sinon,lesvaleursin-
onsistantessontretiréesde
D(V )
.En 5,nouspropo-sonsdetirerpartideetteimplémentation:évaluation
de
R(D)
parune mahine àpile et omparaisonaveD(V )
ensuite.EnGNUProlog,haqueindexialestompiléenune
fontionCalulant
R(D)
. Lorsduréveildel'indexi-al,ettefontionestappelée.Silehamprésultatest
non vide,l'intersetion
R(D) ∩ D(V )
estalulée parunetbit-à-bit,etaetéeà
D(V )
.Iln'yadonpasdeomparaisondirete entre
R(D)
etD(V )
.Cetteom-pilationnativeest undes pointslés de GNUProlog
etpermetuneévaluationplusrapide(f.laomparai-
sonde[4℄).Lesontraintesprimitivesbénéientainsi
desoptimisationsduompilateurC,auprixd'unode
plusvolumineux (parrapport au byteode orrespon-
dant).Unautreinonvénientestlareompilationobli-
gatoiredusolveurFDlorsquel'utilisateurveutdénir
unenouvelleontrainteprimitive.
4 Expliations triviales des indexiaux
Commenousl'avonsdétailléen3,lelangageindexi-
alse réfèreaux domainesdeinq manières,notées :
min (V )
,max (V )
,dom (V )
,val (V )
andcard (V )
.Appe-lonséléments-domaines esréférenesaux(partiesde)
domaines. L'évaluation d'une expression-hamp dé-
penddeséléments-domainesqu'elleontient.Pluspré-
isément,
R
estunefontiondeseséléments-domaines.L'absened'unevaleurdans
R(D)
peuts'expliquerpar l'étatourantdeséléments-domainesprésentsdansR
.Nous dénissons quelques raouris pour expliquer
l'état ourant des éléments-domaines :
E min (V )
estl'expliation de lavaleurde
min(D(V ))
,E max (V )
estl'expliation de la valeur de
max(D(V ))
, etE dom (V )
est l'expliation de l'ensemble de
D(V )
. Leur déni-tionest simple:
E min (V ) = [
d∈ D ∧ d<min(D(V ))
E(V, d)
E max (V ) = [
d∈ D ∧ d>max(D(V ))
E(V, d)
E dom (V ) = [
d ∈ D ∧ d / ∈D (V )
E(V, d)
Laardinalitéde
D(V )
,àl'instar desavaleur ins-taniée, dépend de tous les retraits eetués dans
D(V )
:E val (V ) = E card (V ) = E dom (V )
.Enévaluant
c ≡ V in R
,nousexpliquonsleretraitde
D(V ) − R(D)
deD(V )
par:T (V, R, D) = {c} ∪
[
v ∈ var(R)
∪ e∈elements(R,v) E e (v)
où
elements(R, v)
est l'ensemble des éléments-domainesserapportantàlavariable
v
dansR
.Théorème4.1 (Corretion du shéma trivial)
Si unindexial
V in R
est monotone pour la propa-gation (f. 3.3), alors
T (V, R, D)
est une expliationorreteduretrait de valeursdû àetindexial.
Cerésultatpeutêtreprouvéparindutionfortesurla
taillede
T (V, R, D)
.Leasdebaseestuneexpliationsingleton,signiantque
V in R
estunaire,ouquetoutles éléments-domainesde
R
ontleur valeur nominale(i.e.
min(D) ∈ D(X )
pourmin (X)
,max(D) ∈ D(X )
pour
max (X)
,D(X) = D
sinon). L'étape d'indutionestévidentepourlesélémentsdutype
dom
,val
etcard
(d'aprèslapropriété2.2).Enn,notonsquelamonoto-
niitéde
R
impliquelamonotoniitépourl'augmenta- tiondehaundesélémentsmin
,etpourladiminution desélémentsdetypemax
.R(D) = ∅
provoquant un éhe, les expliations triviales peuvent être utilisées omme expliationsd'éhe(évidentd'aprèsdéf.2.2):
Théorème 4.2 (Expliationd'éhe) Si un in-
dexial
V in R
est évalué et queR(D) ∩ D(V ) = ∅
,alors
E dom (V ) ∪ T (V, R, D)
estuneexpliation d'éhepour
(V , C)
.Ces expliations ne sont pas minimales, mais elles
sont failes à intégrer dans le proessus d'évalua-
tion.L'ensemble
∪ v ∈ var(R) elements(R, v)
étantonnuau moment de la ompilation, le alul de l'explia-
tion peutêtre intégré statiquementdans l'évaluation
de l'indexial. Le seul alul supplémentaire est dû
à l'opération
∪
surP (C) 2
. La setion 5 propose unshémadonnantd'autresexpliationsnon minimales,
maispluspréisesnéanmoins.
5 Expliations préises aux bornes
Nous proposons maintenant un shéma systéma-
tiquedealuld'expliations,pluspréisquelesexpli-
ations triviales.Ce shéma tire partidelastruture
de l'indexial exéutéet repose sur une partition des
valeursà retirer.Cette partition privilégieles bornes
du domaine. Après avoir motivé e hoix (se. 5.1),
nousdénissonslesexpliationsalulées(se.5.2)et
présentonsle shémaen regard dela syntaxedes in-
dexiaux (se.5.3).
5.1 Bornes desdomaines etPropagation
Lesbornesdesdomainesontsouventunrleparti-
ulierdanslesalgorithmesdeltrage.Nombred'entre
eux sont basés sur la onsistane de bornes, qui ap-
proximehaquedomaine
D(v)
parsonpluspetitinter-valle englobant, 'est-à-dire
Jmin(D(v)), max(D(v))K
.Cettetehnique faitpeude as destrous des do-
maines et ore un niveau de onsistane plus faible
quel'hyper-aronsistane.Maissarapiditédealul
enfaitsouventunbonompromisélagage/vitesse.
Comme nous le détaillerons, pour beauoup des
onstrutionsdulangageindexial,lamise àjour des
bornesd'undomaineestlaonséquenedemisesàjour
debornesd'unouplusieursautresdomaines.Celaest
égalementvalablepourertainesonstrutionsaom-
plissantl'hyper-aronsistane.
min int
X X
max X de R(D)
Borne inf.
R(D)
Intérieur de Borne sup.
de R(D)
Nouveau domaine de X Domaine de X Évaluation de R
Valeurs retirées
Fig. 3 Partition des valeurs retirées basée sur les
bornesde
R(D)
5.2 Expliations partiulièrement préises aux
bornes
Soit
∆ V
l'ensemble des valeurs à retirer deD(V )
dû à l'indexial
V in R
,∆ V = D(V )− R(D)
. Nouspartitionnons
∆ V
entrois ensembles (éventuellement vides):1.
∆ min V = {δ ∈ ∆ V | δ < min(R(D))}
;2.
∆ max V = {δ ∈ ∆ V | δ > max(R(D))}
;3.
∆ int V = ∆ V − ∆ max V ∪ ∆ min V
.
Lagure3illustreesdénitions.Lesdomainessont
unensemble dearrésblans,lesparties noiresétant
les valeurs manquantes.
∆ min V
(resp.∆ max V
) est l'en-semble des valeurs dont le retrait est dû à la borne
inférieure (resp. supérieure) de
R(D)
.∆ int V
est l'en-semble desvaleursretiréesentrees bornes.Triviale-
ment,
∆ min V
,∆ max V
,et∆ int V
estunepartition de∆ V
.Nous proposons d'expliquer haque partie
∆ i V
sé-parément. Dans la suite, nous herhons à expliquer
les bornes du hamp de valeurs onsidéré, adoptant
l'extension terminologiquesuivante :
Déf. 5.1 (Expliquerune expression indexiale)
E ⊆ C
est une expliation de la propriétéP
d'uneexpression (hamp ou terme)
e
du langage indexialssi
e(CL↓(V , E))
satisfaitP
.Pouruneexpressiondehamp
R 1
,E min (R 1 )
estl'expli-ationdelavaleurde
min(R 1 (D))
,E max (R 1 )
expliquemax(R 1 (D))
.E int (R 1 )
expliquelestrousdeR 1 (D)
.Pouruneexpressionterme
T 1
,E val (T 1 )
expliquelava-leurde
T 1 (D)
.Propriété 5.1 (Expliquerla partition
∆ V
){c}∪
E min (R)
(resp.{c} ∪ E max (R)
) est une expliation duretraitde
∆ min V
(resp.∆ max V
)deD(V )
,avec ≡X in R
.{c} ∪ E int (R)
estune expliation duretraitde∆ int V
deD(V )
.Expression
e E val (e)
min(V ) E min (V )
max(V ) E max (V )
card(V ) E dom (V )
val(V ) E dom (V )
n, inf, sup ∅
−T 1 E val (T 1 ) T 1 [+,−,/<,/>] T 2 E val (T 1 ) ∪ E val (T 2 )
E val (T 1 ∗ T 2 ) = 8
<
:
E val (T 1 )
siT 1 = 0
E val (T 2 )
siT 2 = 0 ∧ T 1 6= 0 E val (T 1 ) ∪ E val (T 2 )
sinonE val (T 1 mod T 2 ) =
8
<
:
E val (T 1 )
siT 1 = 0
E val (T 2 )
siT 2 = 1 ∧ T 1 6= 0 E val (T 1 ) ∪ E val (T 2 )
sinonTab. 2 Expliations préises aux bornes pour les
termes
5.3 Shémade alul
Pour un indexial donné
V in R
, le alul deE min (R)
,E max (R)
etE int (R)
est ompositionnel, sui-vant la struture de l'expression
R
: les expliations sontdesattributssynthétisésdel'arbresyntaxiqueas-soiéà
R
.Pourhaqueonstrutiondelatable1,nousspéionsommentsynthétiserlesexpliationsàpar-
tirde elles dessous-expressions.La table 2présente
leshémadealulpourleniveaudesvaleurstermes,
reprenantlesnotationsde4.Lerésultatd'uneopéra-
tion binaire est expliqué par l'union des expliations
des deux opérandes. Quand il existe un élément ab-
sorbant (tel 0pour
×
et omme opérande gauhedemod
, 1 ommeopérande droit demod
), le terme pre-nantpourvaleurl'élémentabsorbantsutàexpliquer
lerésultat (lemême raisonnements'applique àl'opé-
randegauhede
/<
et/<
).La table 3 présente le shéma de alul pour les
valeurs de hamps. Par manque de plae, nous n'en
détaillons qu'un éhantillon représentatif. Le même
prinipe général s'applique aux onstrutions man-
quantes : nous tentons d'utiliser les expliations des
bornesdesopérandespourexpliquerlesbornesduré-
sultat.
Certaines onstrutions perdent la préision aux
bornes de nos expliations. Ainsi, pour
{T 1 , . . . , T k }
les bornes durésultat peuventêtre dues à n'importe
quel
T i
.Ranerlealul néessiteraitplusd'informa- tionssurlesT i
.D'autresonstrutionsonserventtou- jours lapréisionauxbornes,tellesR 1 +R 2
.Pour/\
,lesbornes de
R 1 ∩ R 2
peuventparfoisêtreexpliquéesparlesbornesd'undesdeuxopérandes.Andegarder
uneomplexitéraisonnable,
E int (e)
estl'uniondesex-pliationsdesdeuxhamps,equimanquesouventde
préision.Celaévitequelaomplexiténedépendede
Expression
e E min (e) E max (e) E int (e)
dom(V ) E min (V ) E max (V ) E int (V )
T 1 .. T 2 E val (T 1 ) E val (T 2 ) ∅
{T 1 , . . . ,T k } S
i∈J 1 ,kK E val (T i )
− R 1 E max (R 1 ) E min (R 1 ) E int (R 1 ) R 1 + R 2 E min (R 1 ) ∪ E min (R 2 ) E max (R 1 ) ∪ E max (R 2 ) E dom (R 1 ) ∪ E dom (R 2 ) R 1 − R 2 E min (R 1 ) ∪ E max (R 2 ) E max (R 1 ) ∪ E min (R 2 ) E dom (R 1 ) ∪ E dom (R 2 )
R 1 /\ R 2
E min (e) = 8
<
:
E min (R 1 )
simin(R 1 ) ∈ R 2 E min (R 2 )
simin(R 2 ) ∈ R 1 E dom (R 1 ) ∪ E dom (R 2 )
sinonE max (e) = 8
<
:
E max (R 1 )
simax(R 1 ) ∈ R 2 E max (R 2 )
simax(R 2 ) ∈ R 1
E dom (R 1 ) ∪ E dom (R 2 )
sinonE int (e) = E int (R 1 )
R 1 ? R 2
E min (e) =
E dom (R 1 )
siR 1 = ∅ E min (R 2 )
sinonE max (e) =
E dom (R 1 )
siR 1 = ∅ E max (R 2 )
sinonE int (e) =
∅
siR 1 = ∅ E int (R 2 )
sinonTab.3Expliationspartiulièrementpréisesauxbornes d'expressionsdehamps(éhantillonreprésentatif)
laardinalité deshamps,pourl'arithmétique point-
à-pointnotamment.
Laorretiondeeshémaseprouveparindution
fortesurlatailledesexpliations,ommeen4.Ii,le
asdebaseetl'étaped'indutiondoiventêtreprouvés
parindutionsurlastruturede
R
,néessitantunaspourhaqueonstrutiondulangage.
Quandlesindexiauxsontévaluésparunemahine
àpile,ommepourSICStusProlog,lamiseen÷uvre
de e shéma est direte : une pile d'expliations est
ajoutéeàlamahine.Àhaqueempilementd'uneva-
leur terme ou hamp
e(D)
, un triplet d'expliations(E min (e)(D), E max (e)(D), E int (e)(D))
est empilé sur lapile d'expliations. Quand la mahine applique une
opération,lesexpliationsdesopérandessontdépilées,
elles du résultats sont alulées suivant l'opération
appliquéeet empilées.
5.4 Variante paresseuse
Au moins la moitié des évaluations d'indexiaux
sont inutiles, le résultat
R(D)
étant un surensemble deD(V )
[5℄.L'implantation proposée i-dessus alule trois ex-
pliations pourhaqueonstrution. Si, au nal, au-
unerédutiondedomainen'esteetuée,es aluls
serévèlentinutiles.Etsiunerédutiondedomaineest
néessaire,ertainesdesexpliationsaluléespeuvent
demeurerinutiles.Nousproposonsd'adapterleshéma
pour aluler paresseusement les expliations utiles,
aprèss'êtreassuréque
∆ min V
,∆ max V
ou∆ int V
soientnonvides.Premièrement,uneinstrumentationlégèredela
fontion d'évaluation garde trae des résultats inter-
médiaires.Ensuite,sinéessaire,lesexpliationsutiles
sontaluléesgrâeàette trae.
Instrumentationde l'évaluation. Tandisquelama-
hine àpile évalue
R(D)
, les résultats intermédiaires (termes ou hamps) sont stokés dans un arbre.Chaque opération de la mahine rée un n÷ud de
et arbre, ontenant le byteode de l'opérationet ses
résultats intermédiaires. Cet arbre a don la même
struture que l'indexial. Reylant des résultats in-
termédiaires, le seul surout est dû àla onstrution
de l'abre. La gure 4 présente ette proédure ins-
trumentée.
I
est leot d'instrutions de la mahine,S
la pile d'évaluation,E
un ensemble ordonné de n÷ud représentant la trae des opérations déjà exé-utées.
new
_leaf
insèreune nouvellefeuilledansE
.new
_node
extrait lesarity(i)
derniers n÷uds deE
et insèreunnouveaun÷ud,pèredes n÷uds extraits.
La fontion est prinipalement une boule exéutant
les instrutions de la mahine à pile. À la n de la
fontion,
E
ontientlaraine del'arbreetR
ontientR(D)
.Calul àrebours Aussittl'évaluation de
R(D)
ter-minée, lerésolveuralule
∆ min V
,∆ max V
et∆ int V
.Si né-essaire,nousalulonsréursivementlesexpliations
néessaires.Pour ela, nous utilisons lesrésultats in-
termédiaires stokés dans l'arbre. Ainsi, nous alu-
lons seulement les expliations néessaires et évitons
funtion evaluation(
I
,D
), returnsR
,E S ← ∅
E ← ∅
while
hIi 6= ∅
doi ← dequeue(I)
swith
i load
_min
:X ← deref
_var(dequeue(I)) push(S, min(X ))
new
_
leaf ( E , E min (X), int(min(X ))) load
_max
:X ← deref
_var(dequeue(I)) push(S, max(X))
new
_leaf ( E , E max (X), int(max(X))) load
_val
:X ← deref
_var(dequeue(I)) push(S, val(X))
new
_leaf ( E , E dom (X ), int(v
_x)) load
_dom
:X ← deref
_var(dequeue(I)) push(S, D(X))
new
_leaf ( E , E dom (X ), set(D(X ))) load
_int
:t ← deref
_int(dequeue(I)) push(S, t)
new
_
leaf ( E , ∅, int(t)) load
_set
:r ← deref
_set(dequeue(I)) push(S, r)
new
_
leaf ( E , ∅, set(r))
default:
R ←
ompute(S
,i
)push(
S
,R
)new
_node ( E , i, arity(i), R)
end swith
end while
R ← pop(S)
end funtion
Fig.4Proédure d'évaluationinstrumentée
lespartiesnonpertinentesdel'expression
R
.6 Travaux onnexes
Ågren [1℄ a onçu et mis en ÷uvre un méanisme
d'expliationpourSICStusProlog.Cetravailestl'une
des premières grandes tentatives d'expliation des
ontraintesglobalesd'un véritable résolveur.Ågrena
égalementmisaupointdesalgorithmespouraluler
les expliations les plusnes de quelques ontraintes
globales lassiques, telles queall_distint(réalisa-
tiondel'hyperar-onsistanepourladiérenedeux
à deux d'uneliste de variables),iruit (ontrainte
qu'un ensemble de sommets d'un graphe forme un
iruithamiltonien).Malheureusement,eméanisme
faitpartied'unebranhereherhedeSICStusPro-
log, non distribuée à e jour. À notre onnaissane,
les raisons qui expliquent et abandon sont les outs
d'élaboration de e méanisme ainsi que la néessité
Ferrand et oll. [12℄ ont proposé un proédé géné-
riquepouralulerlesexpliationsàpartird'unetrae
préisedel'exéutiondusolveur.Ceproédén'estpas
intrusif,tantquelesolveurfournitunteltraeur.On
peutiterquatredeestraeurs,àsavoirpourGNU-
Prolog [16℄, Choo, PaLM (qui trae déjà des expli-
ations) et CHIP. Si l'on onsidère le as de GNU-
Prolog, les expliations issues de et algorithme se-
raient moins préises queles ntres. Commela trae
ne dit pas quelles informations de domaine l'indexi-
al évalué utilise, leurs expliations doivent prendre
enonsidérationtouteslesrédutionsdedomainedes
variables impliquéesdans la ontrainte,depuis ledé-
butdel'exéution.Cealulneprenddonenompte
quelesexpliations
E dom (X)
déjà dénies dansnotreshéma trivial(Se.4). À e jour, auuneimplémen-
tationdeetalgorithmen'estdisponible.
7 Conlusion
Cetartileaprésentéunshémadeprodutionau-
tomatique d'expliations pour les solveurs basés sur
les indexiaux.Ce shéma utilisela struture des in-
dexiaux pourexpliquerleurs ltrages.Il propose un
ompromisentrepréisionetoutdel'expliation,in-
sistantsurl'expliationsdesbornesdesdomaines.
Notre shéma permet l'expliation automatiquede
plusieursrésolveursexistants.Il peutégalementtrai-
ter lesontraintes quel'utilisateur dénit parindexi-
aux.Lesontraintesquenousgéronssontlimitéespar
l'expressivité desindexiaux, exluantles ontraintes
globales. Cependant, l'utilisation d'un langage spéi-
quepourdérirelesontraintesglobales,tellespro-
priétés de graphes de ontraintes,permet d'imaginer
un shéma aussisystématique. De premiersrésultats
ene sensontétéobtenusréemmentparRohartet
Jussien[18℄.
Remeriements L'auteur tient à remerier
l'équipedeSICStusPrologpoursonaide,notamment
Mats Carlsson et Per Mildner. Certaines idées ont
émergées suite à d'agréablesdisussions ave Naren-
dra Jussien, Pierre Deransart, Guillaume Rohart et
Alexandre Tessier. Un remeriement tout partiulier
pour Mireille Duassé, dont l'enre a reouvert un
brouillon deet artile,et pour GrégoryLafay, qui a
exeré sestalents de traduteur sur une partie de la
versionnale.
Référenes
[1℄ M. Ågren Traing and explaining the exe-
ComputerSiene,Uppsala,juil. 2002.
[2℄ H. Cambazard, F. Demazeau, N. Jussien &
P. David Interatively solving shool time-
tabling problems using extensions of onstraint
programming, in Pratie and Theory of Au-
tomatedTimetabling(PATAT2004) (Pittsburgh,
PA USA) (M. Trik &E. K. Burke, éds.), aout
2004,p. 107124.
[3℄ M. Carlsson et al. SICStus Prolog 3.12.0
user'smanual,SICSResearhReport,nov.2004.
[4℄ M. Carlsson, G. Ottosson & B. Carlson
An open-ended nite domain onstraintsol-
ver,inPro.of the9th Int.Symp. onProgram-
ming Languages : Implementations, Logis and
Programs (H. Glaser, P. Hartel & H. Kuhen,
éds.), LNCS, no. 1292, Springer Verlag, 1997,
p. 191206.
[5℄ P. Codognet & D. Diaz Compiling
onstraintsinCLP(FD), Journalof Logi Pro-
gramming 27(1996),no.3,p. 185226.
[6℄ D.DiazÉtudedelaompilationdeslangages
logiquesdeprogrammationparontraintessurles
domainesnis:lesystèmelp(fd), Thèse,Uni-
versitéd'Orléans,1995.
[7℄ D. Diaz et al. GNU-Prolog, a lp(fd) sys-
tem based on Standard Prolog (ISO), 2003,
http ://gprolog.soureforge.net/Distributed un-
dertheGNUliense.
[8℄ R. Douene & N. Jussien Non-intrusive
onstraintsolverenhanements, in Colloquium
onImplementationofConstraintandLOgiPro-
grammingSystems(CICLOPS'02), CWReports,
vol.344,juil.2002,p. 2636.
[9℄ A. Elkhyari, C. Guéret & N. Jussien
Constraint programming for dynami shedu-
ling problems, in ISS'04 International Shedu-
lingSymposium (Awaji,Hyogo,Japan)(H.Kise,
éd.),JapanSoietyofMehanialEngineers,mai
2004,p. 8489.
[10℄ G. Ferrand, W. Lesaint & A. Tessier
Theoretial foundations of value withdrawal
explanations for domain redution, Eletroni
Notesin ComputerSiene 76(2002).
[11℄ ,Towardsdelarativediagnosisofonstraint
programs over nite domains, in Proeedings
of the Fifth International Workshop on Auto-
mated Debugging, AADEBUG2003 (Ghent, Bel-
gium)(M.Ronsse,éd.),sept.2003,p. 159170.
[12℄ , Explanations to understand the trae
of a nite domain onstraint solver, in 14th
Gomez-Perez & P. Hofstedt, éds.), sept. 2004,
p.1933.
[13℄ C.Guéret, N.Jussien &C. PrinsUsing
intelligent baktraking to improve branh and
bounds methods : an appliation to open-shop
problems,EuropeanJournalofOperationalRe-
searh 127(2000),no.2,p.344354.
[14℄ U.JunkerQuikxplain:Conitdetetion
forarbitraryonstraintpropagationalgorithms,
in IJCAI'01Workshopon Modelling andSolving
Problems withConstraints,2001.
[15℄ N. Jussien, R. Debruyne & P. Boizumault
Maintainingar-onsisteny within dynami
baktraking, in Priniples and Pratie of
ConstraintProgramming(CP2000)(Singapore),
Leture Notes in Computer Siene, no. 1894,
Springer-Verlag,sept.2000,p. 249261.
[16℄ L. Langevine, M. Duassé & P. Deran-
sart A propagation traer for gnu-prolog :
from formal denition to eient implementa-
tion, in Proeedings of ICLP'03, (Mumbai, In-
dia)(C.Palamidessi,éd.),LetureNotesinCom-
puterSiene,Springer-Verlag,dé.2003.
[17℄ S. Ouis, N. Jussien & P. Boizumault
COINS : aonstraint-basedinterativesolving
system,inProeedingsofthe12thWorkshopon
Logi Programming Environments, (Wlpe'02)
(Copenhagen, Denmark) (A. Tessier, éd.), 2002,
ComputerResearhRepositorys.SE/0207046.
[18℄ G.Rohart&N.JussienImplémenterdes
ontraintesglobalesexpliquées,inAtesdespre-
mières Journées franophonesde programmation
par ontraintes (JFPC 2005) (C. Solnon, éd.),
2005.
[19℄ P.Van Hentenryk,V.Saraswat&Y.De-
ville Design, implementation and evalua-
tion of the onstraint language (FD), in
Constraints : Basis and Trends (A. Podelski,
éd.),LNCS,no.910,SpringerVerlag,1995.