HAL Id: inria-00099931
https://hal.inria.fr/inria-00099931
Submitted on 11 Oct 2006
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.
Proposition d’architecture du moteur de test de
conversion
Frédéric Blanqui
To cite this version:
Frédéric Blanqui. Proposition d’architecture du moteur de test de conversion. [Contrat] A04-R-488 ||
blanqui04d, 2004, 7 p. �inria-00099931�
inria-00099931, version 1 - 11 Oct 2006
Lot 5.1
Te hnologie de véri ation
Ajouter la réé riture au noyau de Coq
Proposition d'ar hite ture du
moteur de test de onversion
Des ription: Nousexaminonsl'ar hite turea tuelledeCoqetdis utonsdiérentessolutions
pouryajouterlaré riture.Ensuite, danslebutd'implanter unprototype
rapi-dement,sansbouleverserle odedeCoq,nousproposonsunear hite turesimple
utilisantCiME,unebibliothèqueOCamlpourlaré riture.
Auteur(s) : Frédéri Blanqui
Référen e : Averroes/Lot5.1/Fourniture2/V1.0
Date : 30mars2004
Statut : validé
Version: 1.0
Réseau Nationaldes Te hnologies Logi ielles
ProjetsubventionnéparleMinistèredelaRe her heetdesNouvellesTe hnologies
CRIL Te hnology, Fran e Télé om R&D, INRIA-Futurs, LaBRI (Univ. de Bordeaux CNRS),
LIX (É ole Polyte hnique, CNRS) LORIA, LRI (Univ. de Paris Sud CNRS), LSV (ENS de
(AnalysisandVERi ationfortheReliabilityOfEmbeddedSystems)
Historique
10février2004 V0.1 réationdudo ument
30mars2004 V1.0 versionnale
Table des matières
1 Ar hite turede Coq 3
1.1 Noyau . . . 3
1.2 Rédu tion . . . 3
1.3 Conversion . . . 4
2 Ajoutde la ré riture :dis ussion 4
3 Propositiond'ar hite ture 6
1 Ar hite ture de Coq
Nous ommençons par présenter l'ar hite ture a tuelle de Coq [7℄. Ensuite, nous dis utons
diérentes possibilités pour pouvoir y intégrer de la ré riture. Nous onsidérons la version 7.3
(bugx)deCoqquidatedemai2002.Laversionsuivante7.4(février2003)etlaversionen ours
dedéveloppement(version8.0beta, dé embre2003)neremettentpasen auselemoteurdetest
de onversion.L'adaptationdelaprésentear hite tureàlafutureversion8.0deCoqnedoitdon
pasposerdedi ultés.
Unebrèvedes riptionpeutêtretrouvéedans[4,9℄.Le odedeCoqestdiviséen9répertoires:
lib:modules implantantdesstru turesdedonnéeset fon tionsd'utilité générale.
kernel:modulesimplantantlemoteurdetestde onversionet levéri ateurdetype.
library:modulesimplantantlesmé hanismesdeba ktra king ( ommandeUndo).
pretyping:modules implantantl'inféren edetype.
interp:modulestransformantlesAST
1
entermes nontypés.
parsing :modules implantantlale ture,le odageet l'a hagedes ommandeset termes
fournisparouàl'utilisateur.
proofs:modulesimplantantlemoteurdepreuves.
ta ti s:modulesimplantantlelanguagedeta tiques.
toplevel:modulesimplantantlelan ementetl'exé utiondeCoq.
1.1 Noyau
Lerépertoirequi nousintéressele plus,kernel, ontient les hiers suivants.Ceuxrelatifsà
ladénitiondestermes:
univ:universet ontraintesd'univers.
names:nomsdesobjets.
term:termes.
Ceuximplantantletestde onversion:
esubst:substitutions expli ites.
losure:stru turededonnéesutiliséepourlarédu tion.
onv_ora le :fon tion indiquantquelle
δ
-rédu tion réaliseren premier dans le as où ondoitfaireun hoix.
redu tion:fon tionsderédu tionetdetestde onversion.
Ceuximplantantlesenvironnements:
sign:séquen esdedé larations.
entries:stru turesdedonnéeutiliséespourrajouterunobjetdansunenvironnement.
de larations: stru tures dedonnéesutilisées eninterne pourreprésenter lesobjets d'un
environnement.
environ:environnements.
ooking:?
Enn, euximplantantlavéri ationdetype:
type_errors:erreursdetypage.
indtypes:vériel'admissibilitéd'untype( o)indu tif.
indu tive:vériel'admissibilitéd'unefon tiondénie par( o)pointxe.
typeops:inféren edetype.
safe_typing:environnementsbientypés.
1.2 Rédu tion
DanslesystèmeCoq,lemoteurdetestde onversiondoitprendreen ompte4typesdiérents
dedénitionsourelationsderédu tion:
β
-rédu tion: dans l'appli ationd'unefon tion, rempla ementdans le orps dela fon tiondesargumentsformelsparleurvaleur.
1
(Analysis andVERi ationfortheReliabilityOfEmbeddedSystems)
ι
-rédu tion: rédu tionengendréeparlesdénitions( o)indu tivesintroduitesparlesmot- lés Fixpoint, Fix,CoFixpointetCoFix.
δ
-rédu tion:rédu tionengendréeparlesdénitionsintroduitesparlesmot- lésDefinitionet Lo al.
ζ
-rédu tion: rédu tionengendréeparlesdénitionsintroduitesparlemot- lé let.Larédu tionestimplantéeparunema hineabstraite.Plusdepré isionspeuventêtretrouvées
dans la thèse de BrunoBarras [1℄. Le type des termes est onstr. Le module losure dénit
un type los_infos qui permet de dénir quelles rédu tions on souhaite voir appliquées (on
peut pré iser les symboles que l'on veut
δ
-réduire individuellement), et un type f onstr pourreprésenterlestermesdanslama hine.Unétatdelama hineestdonnéparunf onstr(latête)
et une pile de f onstr(les arguments).Le module losure exporte enparti ulierles fon tions
suivantes:
inje t : onstr -> f onstrtransformeun onstrenf onstrpourpouvoirleréduire.
val whd_sta k : los_infos -> f onstr -> f onstr sta k -> f onstr * f onstr
sta k al ulelaforme
βδιζ
-normaledetêted'unf onstrappliquéàunepiled'arguments.term_of_f onstr : f onstr -> onstrtransformeunf onstren onstr.
whd_val : los_infos -> f onstr -> onstr al ulelaforme
βδιζ
-normaledetêted'unf onstr.
norm_val : los_infos -> f onstr -> onstr al ulelaforme
βδιζ
-normaled'unf onstr.1.3 Conversion
L'algorithmedetestde onversionimplantédanslaversion7.3deCoqestdûàBrunoBarras
[1℄.L'idéedebaseestpro hede elledeThierryCoquand[8℄quine onsidèrequela
β
-rédu tion.Pourtesterla
β
-équivalen ede2termesu
etv
,on ommen eparréduireu
etv
jusqu'àleursformesnormalesdetêtequi,dans e as,doiventêtreuneséquen ed'abstra tionssuivied'une onstante
ou d'une variable (la tête) appliquée à une séquen e de termes. Si les têtes sont diérentes, les
termessontné essairementdistin ts arlatêteestinvarianteparrédu tion.Sipar ontrelestêtes
sont égales,il onvient alorsde tester l'équivalen e de leursargumentsdeux àdeux de manière
ré ursive.BrunoBarrasaétendu etalgorithmeauxautresrédu tionsetl'aimplantédemanière
e a eàl'aidedesubstitutionsexpli ites.
Danslesfon tionsde onversiondé rites i-après,untermeestdé omposéen2ou3éléments:
unterme de typelift(déni dans esubst)représentantdesrenumérotationsdesindi es de de
Bruijn(lifts),et unf onstrseulouunf onstr(la tête)ave lapiledesesarguments.Letest
de onversionproduitdes ontraintesd'universsatisablessilesdeuxtermessont onvertibles,ou
lèveuneex eption.
Lafon tionde onversionproprementditeest f onvet s'appliqueàdes onstr. Elle
om-men e partestersi lesdeux onstrsontsyntaxiquementégaux(fon tion eq_ onstr dans
terme a egrâ e auhash- onsing).Dans le as ontraire,elle réeun los_infossans
δ
-rédu tion(lesδ
-rédu tionsné essaires au test de onversionserontrajoutées aufur et àmesure),transformeles onstrenf onstrave inje t,etappelle nvave desliftségaux
àELID(identité).
nv al ulelesformesnormalesdetêteave whd_sta k,etappelleeqappr.
eqappr omparelestêtes.Dansle asoùunetêteseulementestune onstante,ellela
δ
-réduitet rappelleeqapprave le résultat.Dans le as oùles deux têtes sontdes onstantes, elle
appelleora le_order(dansmodule onv_ora le) pour savoirquelle onstante
δ
-réduire.Enn, dansle asoùlesdeuxtêtessontégales,on omparelesarguments.
2 Ajout de la ré riture : dis ussion
L'implantation a tuelle de Coq repose de manièreimportante sur le fait que, poursavoirsi
uneappli ationestrédu tibleentête,ilsut deregarderlessous-termesimmédiats:sionaune
abstra tion,l'appli ationest
β
-rédu tible,etsionaun onstru teur,l'appli ationestι
-rédu tible.Ave desrèglesderé ritureaprioriquel onque,etenparti ulierave delaré rituremoduloAC,
il en va tout autrement. Il peut être né essaire d'examiner des sous-termes à une profondeur
supérieureàunpoursavoirsi unterme est rédu tibleentête. Deplus,unterme non rédu tible
entêten'estpasné essairementenformenormaledetête:desrédu tionsenprofondeurpeuvent
êtrené essairespourpouvoirréduireuntermeentête.
On voit don quel'implantatione a e dutest de onversionen présen e deré riture et de
β
-rédu tionposentdesproblèmes omplexes.Ceux- i n'ayantpasen oreétéexplorés,davantagedere her he estné essaire avantdepouvoirproposerunalgorithmee a epourl'implantation
deCoqave ré riture,larésolutionde esproblèmesrisquantderemettreprofondémenten ause
l'implantation a tuelle du noyau de Coq. Cependant, l'intégration de ré riture à Coq pose un
ertainnombredequestionsauxquellesilnoussemblené essairederépondreavantde hoisirune
ar hite tureparti ulière:
Distinguer ré ritureet
ι
-rédu tion? Bienque, demanièregénérale,laré ritureenglobeertaines des rédu tionsdéjà présentes dans Coq (enparti ulier la
ι
-rédu tion, mais laδ
-rédu tionaussi),ilaétédé idédansladénitiondela lassederé ritureàintégrer[2℄quela
ré ritureseraitrajoutéeàCoqsanspourautantsesubstituerauxrédu tionsdéjàprésentes,
et qu'elle s'appliqueraitàdesobjetshabituellement onsidérés omme onstantsdans Coq
(ParameteretAxiom).Cependant,onpeutsedemandersi,enterme demaintenan eet de
sé urité,ilestbienraisonabledetraiterdemanièreparti ulière esrédu tions(enparti ulier
la
ι
-rédu tion).Maistraiterlaι
-rédu tion ommeun asparti ulierderé riturerequiertdehangerunepartieimportantedu odedeCoq.
(Ré)implanterla ré rituresoi-mêmeou faire appelà des outils spé ialisés?
L'im-plantation e a ede laré riture,et en parti ulier delaré rituremodulo AC, est quelque
hose de non trivial.Cela représente de 10 à20000 lignes de ode dans CiME par
exem-ple, alorsque lenoyaudeCoq faitenviron10000lignesde ode.La questionsepose alors
s'il n'estpasraisonnablede faireappelsàdesoutilsspé ialisésen ré riture(e.g.CiME [6℄,
Elan[3℄,TOM[12℄,Maude[5℄),maisCoqn'estalorspasàl'abrisd'erreursdanslesystème
utilisé. D'autre part, il y a plusieurs manières de faire appel à un tel système. Réutiliser
son ode pose desproblèmes de maintenan e: quefaire si une erreur est dé ouverte dans
le odeimporté?Appelerle systèmede manièredynamique posedes problèmes
d'installa-tion:l'utilisateurdoitavoirinstalléuneversionappropriédusystèmepourpouvoirinstaller
Coq.Parailleurs,lesystèmedoit/peut-ilprendreen hargela
β
-rédu tionaussi(quipeut-êtrevue ommedelaré rituredupremierordresidessubstitutionsexpli itessontutilisées)?
Interpréterou ompiler? Enn, on peut distinguer deux manières d'implanter la
ré rit-ure qui peuvent se ombiner. L'appro he par interprétation onsiste à disposer d'un ode
générique permettant de al uler la forme normale d'un terme àpartir d'un ensemble de
règles de ré riture ( 'est l'appro he développée dans CiME par exemple). L'appro he par
ompilation onsiste àproduire unprogrammequi, unefois ompiléeenbinaire, al ule la
forme normaled'un terme pour un ensemble de règles de ré riture parti ulier ( 'est
l'ap-pro he développée dans Elan par exemple [11, 10℄). La ombinaison des deux appro hes
semblenaturelleetsouhaitablepuisque,d'unepart,l'appro heparinterprétationest
né es-saire dans une session intera tive et, d'autrepart, l'appro hepar ompilation fournit une
pro éduredenormalisation pluse a eque l'appro heparinterprétation. Cependant,
l'u-tilisation de ode ompilé dans le noyau pose deux problèmes importants. Le premier est
d'ordre te hnique : il né essite de faire appel à des programmes ontruits et ompilés de
manièredynamique.Lese ond estrelatifàlasé urité:quelle onan epeut-ona orderà
(Analysis andVERi ationfortheReliabilityOfEmbeddedSystems)
3 Proposition d'ar hite ture
L'obje tif d'Averroes étant de réaliser un prototype pour tester l'utilisation de ré riture en
Coqet nonderéaliserune nouvelleversionde Coqin luantdelaré rituretout enétantsûreet
e a e,ilest natureld'adopterune ar hite turequiné essitedemodierCoqlemoinspossible.
C'estainsiquenousavons hoisidedistinguerré ritureet
ι
-rédu tion,d'utiliserle odedeCiME[6℄pour
R
-normaliserlestermes (onappelleraR
-rédu tionlarédu tionengendréeparlesrèglesde ré rituredé larées dans l'environnement),et don d'interpréterles règlesde ré riture. CiME
fournitégalementunefon tionvériantla onuen elo ale(moduloAC)d'unensemblederègles
deré riture.
Nousdé rivonsmaintenant ommentmodierlapro édurede onversiondeCoqpouryin lure
laré riture.Danseqappr,quand unetêteaumoins estune onstantedénie parré riture,ilest
peut-êtrené essairedefairequelquesré riturespourmontrerquelesdeuxtermessontéquivalents.
Cependant, pour être dé len hables, es ré ritures peuvent né essiter que les arguments soient
d'abord
βδιζ
-normalisés.Deplus,enprésen edesymboles ommutatifsouasso iatifs- ommutatifs,ilnesut plusdetesterl'égalitésyntaxiquedesarguments: ommedansCiME,ilfautaplatir
et ordonner les arguments de façon à tester leur AC-équivalen e (par exemple, dans CiME, si
x < y < z
alors+(+yx)z
est représentépar+xyz
).On voit don deux in onvénientsimportants à ette appro he. Premièrement, le fait d'avoir
à
βδιζ
-normaliser avant deR
-normaliser fait perdre l'avantage d'une normalisation progressive(passage par les formes normales de tête) qui permet de déte ter plus tt une erreur de type.
Deuxièmement, l'utilisation du odede CiME pour normaliserunterme Coq né essitede
nom-breuses onversionsentrestru turesdedonnées.Etantdonnéquelastru turedef onstrutilisée
pourla
βδιζ
-rédu tionest omplexe,ilestplusaisédedénirune onversionentreletype onstrdeCoqetletypetermdeCiMEqui,àladiéren edeCoq, utilisedeslistespourlesarguments
d'un symbole, les aplatit et les ordonne. On a don , à haque
R
-normalisation, deux doubleonversions:def onstrà onstr(ave lafon tionterm_of_f onstr), de onstràterm,et la
même hosedansl'autresensaprèsla
R
-normalisation.La onversionentre onstret term pourrait être éliminée si CiME avait une interfa e plus
génériqueetétait apabledetravaillersurn'importequellestru turededonnées( equineparaît
pasdi ileàréaliseraumoinsenabsen edesymbolesAC).C'estparexemple equepermetTOM
[12℄.Pouréliminer la onversionentref onstret onstr,il fautenplusêtre apabled'exprimer
l'eetd'appliquerunerèglederé riture(exprimée pardes onstr)surunf onstr.
Référen es
[1℄ B. Barras. Auto-validation d'un système de preuves ave familles indu tives. PhD thesis,
UniversitéParisVII,Fran e,1999.
[2℄ F. Blanqui. Dénition de la lasse de réé ritureà intégrer.Averroes, lot 5.1, fourniture 1,
2004.
[3℄ P.Borovanský,H.Cirstea,H.Dubois,C.Kir hner,H.Kir hner,P.-E.Moreau,C.Ringeissen,
andM. Vittek. ELANUser Manual. INRIANan y,Fran e,2000. http://www.loria.fr/
ELAN/.
[4℄ J.Chrz¡sz z.ImplementationofmodulesintheCoqsystem.InPro eedingsofthe16th
Inter-nationalConferen eonTheoremProvinginHigherOrderLogi s,Le tureNotesinComputer
S ien e2758,2003.
[5℄ M. Clavel, F. Durán, S. Eker, P. Lin oln, N. Martí-Oliet, J. Meseguer, and J. Quesada.
Maude : Spe i ation and Programming in Rewriting Logi . ComputerS ien e Laboratory,
SRIInternational,United States,1999. http://maude. sl.sri. om/.
[6℄ E.Contejean,C.Mar hé,B.Monate,andX. Urbain. CiME,2000. http:// ime.lri.fr/.
[7℄ Coq-Development-Team. The Coq Proof AssistantReferen eManual Version 7.4. INRIA
Ro quen ourt,Fran e,2003. http:// oq.inria.fr/.
[8℄ T.Coquand. Analgorithmfortesting onversionintypetheory. InG.HuetandG.Plotkin,
editors,Logi al Frameworks, pages255279.CambridgeUniversityPress,1991.
[9℄ J.-C.Filliâtre. Designofaproofassistant:Coqversion7. Te hni alReport1369,Université
ParisSud,Fran e,2000.
[10℄ H. Kir hner and P.-E. Moreau. Promoting rewriting to aprogramminglanguage : A
om-pilerfornon-deterministi rewriteprogramsinasso iative- ommutativetheories. Journalof
Fun tional Programming,11(2):207251,2001.
[11℄ P.-E. Moreau. Compilation de règles de réé riture et de stratégies non-déterministes. PhD
thesis,UniversitéNan yI,Fran e,1999.
[12℄ P.-E.Moreau,C.Ringeissen,andM.Vittek.Apatternmat hing ompilerformultipletarget
languages. In Pro eedings of the 12th International Conferen e on Compiler Constru tion,