HAL Id: inria-00000074
https://hal.inria.fr/inria-00000074
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, estdestiné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.
Un système de types pour CHR
Emmanuel Coquery, Francois Fages
To cite this version:
Emmanuel Coquery, Francois Fages. Un système de types pour CHR. Premières Journées Franco- phones de Programmation par Contraintes, CRIL - CNRS FRE 2499, Jun 2005, Lens, pp.189-198.
�inria-00000074�
Un système de types pour CHR
Emmanuel Coquery
1,2
François Fages
1 1
Projet Contraintes, INRIA Roquenourt, BP 105, F-78153LeChesnay Cedex
2
Conservatoire National des Arts etMétiers, 292 rue StMartin, 75141 Parisedex 03
Emmanuel.Coqueryinria.fr Franois.Fagesinria.fr
Résumé
Nous proposons un système de types général pour
le langage des Constraint Handling Rules (CHRs), un
langagede règles deréériture destinéàl'implantation
de solveursde ontraintes.LesCHRsétanten faitune
extensiondehautniveaud'unlangagehte,telquePro-
logouJava,lesystèmedetypesestainsiparamétrépar
le système de types du langage hte. Nous montrons
la ohérene du système de types pour les CHRs par
rapportàleursémantiqueopérationnelle.Nousétudions
égalementleaspartiulieroù lelangagehteestunlan-
gagedeprogrammationenlogiqueaveontraintes,typé
avelesystèmedetypespresriptifquenous avonsdé-
veloppédansnospréédentstravaux.Enpartiuliernous
montronsquelesystème résultantestohérent avele
modèle d'exéutionétenduCLP+CHR. Cesystèmeest
implanté à travers une extension du logiielTCLP de
typagedesprogrammeslogiquesaveontraintes.Nous
exposonsnosrésultatsexpérimentauxsurlavériation
destypesdesolveursetprogrammesutilisantlesCHRs,
dontlelogiielTCLPlui-même.
Abstrat
WeproposeageneritypesystemfortheConstraint
HandlingRules language(CHRs), arewritingrule lan-
guage for implementingonstraint solvers. The CHRs
beingahigh-levelextensionofahostlanguage,suhas
Prolog orJava,thistypesystemisparametrizedbythe
typesystemofthehostlanguage.Weshow theonsis-
tenyofthetypesystemfortheCHRsw.r.t.theiropera-
tionalsemantis.wealsostudythepartiularasewhere
thehostlanguageisaonstraintlogiprogramminglan-
guage,typedwiththepresriptivetypesystemwedeve-
loppedinourpreviouswork.Inpartiular,weshowthe
onsistenyoftheresultingtypesystemw.r.t.theexten-
dedexeutionmodelCLP+CHR.Thissystem isimple-
mentedthroughanextensionofourtypehekerTCLP
foronstraintlogilanguages.Wealsopresentsomeex-
perimentalresults on the type-hekingof solvers and
programsusingtheCHRs,inludingTCLPitself.
1 Introdution
Le langage des Constraint Handling Rules (en
abrégéCHR)deFrühwirth[8℄estunlangagederègles
de réériture destiné à l'implantation de solveurs de
ontraintes.Il seprésente sousla formed'une exten-
siond'unlangagehte,telqueProlog[10℄ouJava[2℄,
permettant d'introduire de nouvelles ontraintes de
manièredélarativedanselui-i.AinsilesCHRssont
utilisés pour gérer les ontraintes dénies par l'utili-
sateur, le langage hte se hargeant des autres al-
uls, parexemple àl'aidede ontraintes natives. Par
lasuitenoussupposonsl'existenedelaontraintena-
tive=/2.LesCHRssontunlangagederèglesgardées
qui réérivent des multi-ensembles de ontraintes en
les simpliant, et ei jusqu'à leur résolution. Ainsi,
une des partiularitésdes CHRs est qu'ilsautorisent
plusieursontraintesdanslatêted'unerègle.
Les langages typés possèdent de nombreux avan-
tages en termes de développement, telsque ladéte-
tionstatiqued'erreursdeprogrammationoude om-
positiondeprogrammes,etladoumentationduode
en utilisantles types. LesCHRs ontdéjà été utilisés
dans leadredutypagedes langagesdeprogramma-
tion,quee soitpourlarésolutiondes ontraintesde
sous-typage [6, 4℄ ou pour la gestionde la surharge
dansleadredeslangagesfontionnels[16℄etdeslan-
gagesaveontraintes[5,4℄.Cependant,iln'existe,à
notre onnaissane,auun système de typespourles
CHRs.
Dans et artile, nous omblons e vide en propo-
santun système de typespour les CHRs, inspiré du
systèmedetypesTCLPpourlesprogrammeslogiques
ave ontraintes [7℄. Les CHRs étant une extension
d'un langage hte, e système est paramétré par le
système de types du langage hte. Nous ferons trois
hypothèsessurlesystèmedetypesdulangagehte.
formeΓ⊢t:τ quiassoieletypeτ auterme(ou
à l'expression) t dans l'environnement (ou, plus généralementsousl'hypothèse)Γ.Ildénitégale-
mentunenotiondeontraintebientypée dansun
environnementΓ.
Laontraintet1=t2estbientypéedansunenvi-
ronnementΓs'ilexisteuntypeτtelqueΓ⊢t1:τ
etΓ⊢t2:τ.
Si une onjontion c de ontraintes natives est
bientypée dansunenvironnementΓet est équi-
valenteàuneonjontiond,alorsdestégalement
bientypéedansΓ.
En utilisantes hypothèses, nousexprimons la ohé-
renedusystèmedetypespourlesCHRsparrapport
àleursémantiqueopérationnelleàtraversunthéorème
d'auto-rédutionquiexprimequesiunprogrammeest
bien typé alorstoutes les dérivations issuesd'un but
bientypésontbientypées.
Nous étudions également le as de l'instaniation
du système de types pour les CHRs ave le sys-
tème de types TCLP pour les programmes logiques
aveontraintes[7℄,etmontronsunthéorèmed'auto-
rédutionpourlesystèmedetypesrésultantparrap-
portaumodèled'exéutionCLP+CHR[8℄danslequel
il est possible d'étendre la dénition des ontraintes
CHRspardeslauses. Ce résultat estintéressantar
la programmation logique ave ontraintes onstitue
un adre naturel pour l'utilisation des solveurs de
ontraintes.UnsystèmedetypepourCLP+CHRper-
metdetyperunsolveurave leprogramme quil'uti-
lise. De plus il arrive fréquemment que les solveurs
CHRomplexessoientéritsommeuneombinaison
delauses etderèglesCHR,lesrèglesfaisantappelà
desprédiats etleslausesàdesontraintesCHR.
Lerestedel'artileestorganiséommesuit.Lase-
tion2rappellelasyntaxeetlasémantiqueopération-
nelledes CHRs,y omprisle modèleCLP+CHR. La
setion3présentelesystèmedetypesquenouspropo-
sonset lasetion 4soninstaniation avele système
detypespourCLP.Lasetion5présentequelquesré-
sultatsexpérimentauxsurletypagedesolveursérits
enCHRàpartirdel'implantationdusystèmedansle
logiielTCLP [3℄. Enn, nous onluons ave la se-
tion6.
2 Préliminaires sur les CHRs
Nousrappelonsiila syntaxe et lasémantiquedes
CHRs,issues de [8℄. Nousdistinguons les ontraintes
CHR, dénies par le programmeur, des ontraintes
natives du langage hte, qui représentent les aluls
auxiliaires ayantlieu lorsdel'appliation d'unerègle
CHR.Cesdernières sontgéréesparunsolveurprédé-
d'égalité = /2 et la ontrainte true font partie de
es ontraintes natives. On note X le domaine des
ontraintes natives et CT la théorie, éventuellement inomplète, qui orrespondau solveur de ontraintes
natives.On noteras, t, . . . lesexpressions dulangage hte, SCHR l'ensemble des symboles de ontraintes
CHR,donnéesaveleurarité,SN l'ensembledessym-
boles de ontraintes natives, également données ave
leurarité.
2.1 Syntaxe
Dénition1 Unerègle CHRpeutêtre :
une règle de simpliation de la forme :
H1, . . . , Hi <=> G1, . . . , Gj|B1, . . . , Bk
une règle de propagation de laforme :
H1, . . . , Hi ==> G1, . . . , Gj|B1, . . . , Bk
oubienune règle de simpagation de laforme :
H1, . . . , Hl\Hl+1, . . . , Hi
<=> G1, . . . , Gj|B1, . . . , Bk
ave i > 0, j ≥ 0, k ≥ 0, l > 0 et H1, . . . , Hi
est une suite non vide de ontraintes CHR, la garde
G1, . . . , Gj est une suite de ontraintes native et le
orps B1, . . . , Bk est unesuitede ontraintesCHR et
de ontraintesnatives.
Un programme CHR est une suite nie de règles
CHR.
Laontraintetrue estutiliséepourreprésenterlessé- quenes vides. La garde vide peut être omise, ave
l'opérateur|.Lanotationnom@Rdonnelenomnom
àlarègleCHRR.
Informellement, larègle de simpliation remplae
les ontraintes de la tête par elles du orps. La
règle de propagation ajoute les ontraintes du orps
en onservant elles de la tête. La règle de simpa-
gation est un mélange des deux préédentes : les
ontraintesHl+1, . . . , Hi sontremplaéesparleorps,
lesontraintesH1, . . . , Hl étantonservées.
Par soui de simpliité, et pare que le typage
des programmes CHR ne néessite pas de distin-
guer les règles de simpagation, nous onsidérerons
qu'unerèglede simpagationde laformeH1, . . . , Hl\ Hl+1, . . . , Hi <=> G1, . . . , Gj | B1, . . . , Bk est une
abréviationpourlarègleH1, . . . , Hi <=> G1, . . . , Gj| H1, . . . , Hl, B1, . . . , Bk.Demême,lesrèglesdepropa-
gationpourraientêtrerééritessousformederèglesde
simpliation, mais nous les onservons ii par soui
delarté.
Exemple 1 Le programmeCHR suivant, tiré de [8℄,
dénit unsolveurpour la ontrainte =<plus petit ou
égal, pouvant gérer des arguments qui sont des va-
riables :
antisymetrie X=<Y , Y=<X <=> X=Y.
transitivite X=<Y, Y=<Z ==> X=<Z.
ident X=<Y \ X=<Y <=> true.
Larègle reflexiviteéliminelesontraintes=<siles
deux arguments sont égaux. La règle antisymetrie
simplie unedoubleinégalitéen uneontrainted'éga-
lité. La règle transitivite permet d'ajouter les
ontraintesorrespondantàlalturetransitivede =<.
Enn, la règle ident élimine les ontraintes =< en
double.
2.2 Sémantiqueopérationnelle
La sémantique opérationnelle des CHRs s'exprime
sousformed'unsystème detransitions,noté7−→, sur
des états qui sont des triplets hF, E, Di, où F est
un but, 'est-à-direun multi-ensemblede ontraintes
CHRet deontraintesnatives,E estunemémoirede
ontraintesCHRetDestunemémoiredeontraintes
natives,'est-à-diredesmulti-ensembledeontraintes
(respetivement CHR et natives). Un état est don
uneonjontiondeontraintesCHRetdeontraintes
natives.
Dansladénitionsuivante,l'égalitéestétendueaux
ontraintesparmorphisme,'est-à-direc(t1, . . . , tn) = c(t′1, . . . , t′n) si pour tout i ∈ {1, . . . , n}, ti = t′i. La
notation ∧ est utilisée pour exprimer le ltrage de
ontraintesdansunmulti-ensemble.L'égalitéestalors
étendue aux onjontions de ontraintes de la ma-
nièresuivante :si H etH′ sontdeuxonjontions de
ontraintes, alors H = H′ s'il existe deux suites de
ontraintes H1, . . . , Hn et H1′, . . . , Hn′ orrespondant respetivement à H et H′, et, telles que pour tout i∈ {1, . . . , n},Hi=Hi′.
Dénition 2 SoitP unprogrammeCHR.Larelation
de transition 7−→ pour les CHRs est donnée par les
règlessuivantes.Lesmajusules apparaissant dansles
tripletsreprésententdesonjontionsdeontrainteset
¯
xreprésentelesvariablesapparaissant danslatêteH.
Solve
hC∧F, E, Di 7−→ hF, E, D′i
siC est uneontrainte native
etsiCT |= (C∧D)⇔D′.
Introdue
hH∧F, E, Di 7−→ hF, H∧E, Di
siH estune ontrainte CHR.
Simplify
hF, H′∧E, Di 7−→ hB∧F, E, H=H′∧Di
si (H <=> G|B) estdans P renommé ave des
variables fraîhes,
etsiCT |=D⇒ ∃¯x(H =H′∧G).
Propagate
hF, H′∧E, Di 7−→ hB∧F, H′∧E, H =H′∧Di
si(H ==> G|B) estdans P renomméave des
variables fraîhes,
etsiCT |=D⇒ ∃x(H¯ =H′∧G).
La transition Solve orrespond à une transition
eetuée par le solveur de ontraintes natives. La
transition Introdue exprime simplement le dépla-
ementd'uneontrainteCHRdubutverslamémoire
de ontraintes CHR où elle pourra être utilisée ave
d'autresontraintespourl'appliationd'unerègle.Les
règlesSimplifyetPropagateorrespondent,respe-
tivement,àl'appliationdesrèglesCHRdesimplia-
tionetdepropagation.Laonditiond'appliationdes
règlesexprimequelatêtedelarègledoitêtreinstan-
iéedefaçonàequelagardeetlaonditiondeltrage
de latête soient impliquéespar la mémoireourante
de ontraintes natives.Le orps de larègle est alors
ajoutéaubutourantet lesontraintesH′ sontreti-
réesdelamémoiredeontrainteslorsdel'appliation
delarègleSimplify .
Dénition3 Un étatinitial onsisteen unbutF et
desmémoiresdeontraintesvides:hF, true, truei.Un
état nal est soit de la forme hF, E, f alsei (éhe),
soit dela forme htrue, E, Di(suès).
L'exemple suivant montre l'exéution d'un pro-
grammeCHR.
Exemple2 Considérons le solveur donné dans
l'exemple 1 et l'état initial hX=<Y ∧ Y=<Z ∧
Z=<X,true,truei.Une exéutionpossible est:
hZ=<X,X=<Y∧Y=<Z,truei (Introdue×2) hX=<Z∧Z=<X,X=<Y∧Y=<Z,truei(Propagate trans.) htrue,X=<Z∧Z=<X∧X=<Y∧Y=<Z,truei(Introdue×2) hX=Z,X=<Y∧Y=<Z,truei (Simplify anti.) htrue,X=<Y∧Y=<Z,X=Zi (Solve) hX=Y,true,X=Zi (Simplify anti.) htrue,true,X=Y∧X=Zi (Solve)
On peut remarquer que la sémantique donnée i-
dessusn'empêhepasl'appliationrépétéed'unerègle
depropagationsurlesmêmesontraintes,provoquant
demanièretriviale lanonterminaisonduprogramme
CHR. Dans l'exemple préédent, on aurait ainsi pu
appliquer la règle transitivite au lieu de la règle
antisymetrie,réintroduisantainsilaontrainteX=<Z
éliminéeàlaquatrièmeétape.Dans[1℄,Abdennadher
donneunesémantiqueopérationnelleplusdèleàl'im-
plantation desCHRs permettant d'éviter e ompor-
tement,enrestreignantl'ensembledesdérivationspos-
sibles.Lesthéorèmesd'auto-rédutiondonnésdansles
setions suivantes, qui expriment que dans un pro-
gramme bien typé une transition à partir d'un état
bien typé onduit à un état bien typé, restent ainsi
valablespourette sémantiqueplusréaliste.
2.3 CLP+CHR
Lorsquele langagehte estunlangage delalasse
CLP(X) [11℄ des langages langages logiques ave
ontraintessurundomainedeontraintesX,ilestpos-
sible d'intégrer plus fortement les CHRs au langage.
Frühwirth [8℄ propose ainsi d'étendre le langage des
CHRsave uneonstrutionlabel_with et lapossibi-
litéd'introduiredeslausespourlesontraintesCHR.
Nous rappelons ii la syntaxe et la sémantique opé-
rationnellede etteextension. Un atome est soit une
ontraintenative,soituneontrainteCHR, soitdela
forme p(t1, . . . , tn) où p/n est un symbole de prédi-
at. On note SF (resp. SP) l'ensemble des symboles
de fontion (resp. prédiats), donnés ave leur arité,
etV l'ensembledesvariables.
Dénition4 Une délaration d'énumération pour
uneontrainte CHRH estde la forme : label_with H if G1, . . . , Gj
où G1. . . , Gj est une onjontion de ontraintesna-
tives.
Demanièreusuelle, leslauses sontde la forme :
H :- B1, . . . , Bn
oùH est soit unatome orrespondant à unprédiat, soituneontrainteCHR, maispasuneontraintena-
tive,etB1, . . . , Bk est unesuited'atomes.
Ladélarationlabel_withc(t1, . . . , tn)if G1, . . . , Gj
exprimequeG1, . . . , Gj estunegardepourleslauses
delaontrainteCHRc/n.
Dénition5 Larelationde transition entrelesétats
CHRsestétendueparlesdeuxrèglessuivantes:
Unfold
hH′∧F, E, Di 7−→ hB∧F, E, H=H′∧Di
si (H :- B) est dans P renommé ave des va-
riablesfraîhes,
etsiH n'estpasune ontrainteCHR.
Label
hF, H′∧E, Di 7−→ hB∧F, E, H=H′∧Di
si(H :- B)et (label_with H′′ if G) sont dans P renommé avedesvariables fraîhes,
etsiX |=∃¯x(H′ =H′′∧G)
La règle Unfold est prohe de la règle de résolu-
tion CSLD [11℄. La diérene est que, dans le adre
de la résolution CSLD, les ontraintes C présentes
dans le orps de lalause sont égalementajoutées à
lamémoire de ontraintes nativeset que lamémoire
résultante,'est-à-direH =H′∧D∧C,doitêtresa-
tisabledansdomaine desontraintes X.Les lauses
pour les ontraintes CHR ne peuvent être utilisées
que par appliation de la règle Label, qui néessite
quel'unedesgardesdélaréesavelabel_with pourla
ontrainteonsidéréesoitimpliquéeparlamémoirede
ontraintesnativesourante.
3 Système de types
3.1 Hypothèsessurlesystèmedetypesdulangage
hte
Comme lesCHRs sont une extension d'unlangage
hte,lesystèmedetypesquenousproposonspourles
CHRs est paramétrépar elui du langage hte, noté
⊢N. Nous supposerons que ⊢N vérieles hypothèses
quisuivent.
On onsidère que ⊢N est basé sur une algèbre de
types, l'ensemble des types étant noté T. On notera
lestypesavelalettreτ.Unenvironnementdetypage, notéΓ,assoieuntypeauxvariables.
Étantdonné une expression t, on suppose que ⊢N
permet de déduire des jugements de la forme Γ ⊢N
t:τ. Demanièresimilaire,noussupposonségalement
que⊢N permetdedénirunenotiondeontraintebien
typée dans un environnement Γ, une onjontion de
ontraintesnativesC1∧. . .∧Cnétantbientypéedans
unenvironnementΓsipourtouti∈ {1, . . . , n},Ciest
bientypédansΓ.OnnoteraΓ⊢N CAtom,lefaitque
laontrainteCestbientypéedansl'environnementΓ.
Noussupposons égalementquelaontrainte d'égalité
s=t entre s et t estbien typée dans Γs'il existe un
typeτ telqueΓ⊢N s:τ et Γ⊢N t:τ.
Noussupposonsquel'uniond'environnementsdety-
pagesur desensembles devariablesdisjointsestdé-
nieparuneopération,notée⊎,tellequesiΓ⊢N t:τ,
alors Γ⊎Γ′ ⊢N t : τ. Dans de nombreux systèmes
de types, Γ est une fontion assoiantdes types aux
variablesapparaissantdans tet vériedonette hy-
pothèse.Cependant,nousn'avonspasbesoindeonsi-
dérer laforme exate des environnementsde typage,
qui peuvent don prendredes formes plusomplexes
sansqueela n'aitdeonséquenes surlesystèmede
typespourCHR.
Enn, nous supposons que si une onjontion de
ontraintes natives C est bien typée dans un envi-
ronnement Γ et si CT |= C ⇔ D, alors il existe un
environnementdetypageΓ′,telquelaonjontionde
ontraintesDest bientypéedansΓ⊎Γ′.
3.2 Systèmede typespour lesCHRs
LesystèmedetypesquenousproposonspourCHR
permet de dénir une notion de ontraintes et de
règles CHR bien typées. On assoie à haque sym-
bole de ontrainte CHR c/n un, et un seul, type de
la forme τ1×. . .×τn. Ce type est supposé xé, par