• Aucun résultat trouvé

Un système de types pour CHR

N/A
N/A
Protected

Academic year: 2021

Partager "Un système de types pour CHR"

Copied!
11
0
0

Texte intégral

(1)

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, 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.

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�

(2)

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

égalementleaspartiulier 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.

(3)

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 :

(4)

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, 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(t1, . . . , tn) si pour tout i ∈ {1, . . . , n}, ti = ti. La

notationest 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, Di

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 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=<YY=<Z

Z=<X,true,truei.Une exéutionpossible est:

hZ=<X,X=<YY=<Z,truei (Introdue×2) hX=<ZZ=<X,X=<YY=<Z,truei(Propagate trans.) htrue,X=<ZZ=<XX=<YY=<Z,truei(Introdue×2) hX=Z,X=<YY=<Z,truei (Simplify anti.) htrue,X=<YY=<Z,X=Zi (Solve) hX=Y,true,X=Zi (Simplify anti.) htrue,true,X=YX=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.

(5)

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) 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

G1. . . , Gj est une onjontion de ontraintesna-

tives.

Demanièreusuelle, leslauses sontde la forme :

H :- B1, . . . , Bn

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 queN vérieles hypothèses

quisuivent.

On onsidère queN 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 queN

permet de déduire des jugements de la forme Γ ⊢N

t:τ. Demanièresimilaire,noussupposonségalement

queN 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

Références

Documents relatifs

La possibilité de donner à des éléments de la spécification les appa- rences du code opérationnel facilite beaucoup le raisonnement sur les propriétés des programmes : par exemple,

Dans la section 3.2.4, nous proposons une sémantique de UT T r dans la théorie classique des ensembles suivant la preuve de Goguen (voir le cha- pitre A.2 de l’annexe). Dans ce

Le nombre d’éléments d’un tableau doit impérativement être connu lors de la compilation... Déclaration

Le nombre d’éléments d’un tableau doit impérativement être connu lors de la compilation... Déclaration

Dans la preuve de ce th´eor`eme, on utilise deux propri´et´es essentielles qui sont valables pour les types de donn´ees syntaxiques: l’une vient du fait que D est un type entr´ee

On d´ecrit un syst`eme de λ-calcul typ´e, appel´e Arithm´ etique Fonctionnelle du second ordre (en abr´eg´e AF2), dont les types sont les formules de L. Dans l’´ecriture des

Nous pr´esentons dans cette note un r´esultat de compl´etude pour les types ` a quantificateurs positifs du syst`eme F de J.-Y.. Ce r´esultat g´en´eralise un th´eor`eme