• Aucun résultat trouvé

Fraction : analyseur de propriétés par des techniques de résolution de contraintes

N/A
N/A
Protected

Academic year: 2021

Partager "Fraction : analyseur de propriétés par des techniques de résolution de contraintes"

Copied!
15
0
0

Texte intégral

(1)

HAL Id: hal-02545591

https://hal.archives-ouvertes.fr/hal-02545591

Submitted on 17 Apr 2020

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.

résolution de contraintes

Fabrice Parrennes

To cite this version:

Fabrice Parrennes. Fraction : analyseur de propriétés par des techniques de résolution de contraintes.

[Rapport de recherche] lip6.2001.017, LIP6. 2001. �hal-02545591�

(2)

résolution de contraintes

Fabrice Parrennes

SURLOGS.A.VELIZYPLUS-BatE 1bis, ruedupetit-clamart

78140Velizy-Villacoublay Fabrice.Parrennes@surlog.com

LIP6,ThèmeSPI Fabrice.Parrennes@lip6.fr

19juin 2001

Résumé

Ce papierdécritfraction,un outildevérication depropriétés de programmeparutilisation de contraintes.L'utilisationdetechniquesliées auxcontraintespour vérierdespropriétés n'estpas véri-tablement nouvelle [11 , 12]. L'originalité del'approche exposée estd'avoir déniune traduction d'un langagedestyleimpératifenunesériedesystèmesdecontraintes.Cesontlesalgorithmesderésolution de contraintesquipermettent devaliderounonles propriétés recherchées. Cettetraductionpasse par uneétapeintermédiaireoùl'onretrouvel'aspectfonctionneldesprogrammes.

L'utilisation dulangageObjective Caml apermisderéaliserfacilement unprototypedelaméthode dont l'architecture rappellecelled'uncompilateur. Ladénition d'unsolveurdecontraintesmodulaire rendl'outilparamétrableparrapportàdesmodulesderésolutiondecontraintessurdesdomaines dié-rents(lesentiersetlesbooléensparexemple).

1 Introduction

Laproblématiquedelavéricationdepropriétésd'unprogrammeinformatiquepeutserameneràvalider desprédicatssurl'ensembledesétatspossiblesduprogramme.Ilestassezfaciledevérierqu'unepropriété estvraielorsqueleprogrammeinformatiqueestexécutédansunenvironnementparticulier.Ilsutd'évaluer le programme pour l'environnement spécié puis de vérier la propriété sur le résultat de l'exécution du programme. La propriété n'est alors valide que sous l'hypothèse décrite par l'environnement dans lequel est évaluéleprogramme. Ilest nettement plusdicile de vérierla propriétélorsque nous neconnaissons pasl'ensembledesvaleurspossiblesdesvariables(parexemplelorsquel'environnementd'exécutionassocie plusieursvaleursàune mêmevariable).

La véricationde propriétéspeut sefairepar interprétation abstraite,c'est-à-direen donnantune vue abstraitedesdomainesdesdonnées.Uneinterprétationabstraiteintéressantepourlavalidationdepropriétés estdénieendécoupantundomainededonnéesenintervalles[7].L'imagedesdiérentesopérationsréalisées parcesdonnéesest fournieparunesémantiqueabstraitebaséesurunesémantiqueconcrèted'évaluation.

Il reste alors à calculer sur ces intervalles. Un intervallepeut être représenté par une contrainte, une propriétéestainsireprésentéeparunsystèmedecontraintes.Ilfautalorsutiliserdesalgorithmesderéduction dedomaine,pourvérierqu'unensembledecontraintesestsatisableetainsiexhiberuneoul'ensembledes solutionsdelarésolution.

Uneapprochesemblableadéjàétéutiliséepourdéterminerdesjeuxdetestdeprogrammes[12]oupour vérierdesprogrammespar"modelchecking"aveccontraintes[11].

Ce papierprésenteun analyseurdepropriétés, appelé fraction,qui permet d'obtenirune abstraction sousformedecontraintesd'unprogrammeécritdansunlangageimpératif.L'abstractiondeceprogramme

(3)

passeparuneétapeintermédiaireoùestretrouvéel'aspectfonctionneldecelui-ci.Lessystèmesdecontraintes associésauprogrammededéparts'obtiennentpartraductiondecetaspectfonctionnelduprogramme.

Apartir dessystèmes de contraintes et des propriétés recherchées,unmodule derésolution permet de validerounonlesdiérentespropositions.Latechniquedetraductionpermet decalculerplusnementles diérentsdomainesdedonnéesassociésauxvariablescarlelangagedescontraintesest beaucoupplusriche quelasimpleabstractiondesdonnéesenintervalle.

L'outil fractiona été implémenté en utilisant lelangage Objective Caml[14, 18]. La dénition de phasesdetraduction biendistinctesapermisl'implémentationd'une structuremodulaire prochedes dié-rentesphasesd'uncompilateur.Lamodularitéetlesfoncteursd'ObjectiveCamlontpermisd'obtenirun paramétragedumodule derésolutiondecontraintespardesmodulesspéciquesauxdomainesdecalcul.

Cetoutilfraction 1

estdestinéàétablirlacommunicationentrelesoutilsdéveloppésparSURLOGS.A., àsavoirAGFL r

2

etRCSPL r 3

.L'outil AGFL r permetd'obtenirunevisionfonctionnelled'unprogramme écritdansunlangagedestyleimpératif[3].L'outilRCSPL r estunoutilpermettantlaréalisationd'analyses desûretédulogicieldetypeAMDE[4 ].

Cetarticleprésentelaproblématique,latechniquedevéricationparcontrainteset lapartierelativeau codage,danslelangageObjectiveCamldelaméthoded'analysedepropriétésparutilisationdetechniques decontraintes.

2 Présentation de la méthode 2.1 Présentation de la problématique

Nouscherchonsàdénirune approximationdesprogrammessurdesdomainesdevaleurs,pourcelaun certainnombrededénitions sontintroduites.

Soit Var un ensemble de variables et Val un ensemble de valeurs (les entiers, les booléens, les réels parexemple).P dénotel'ensembledesprogrammesd'un certainlangageL etQ représentel'ensembledes prédicatspossiblessurdesexpressionsdéniesàl'aidedesvariablesVaretdesopérateursdeL.

SoitEnvl'ensembledescouples(VarVal)(i:eEnv=}(VarVal))dénissantlanotiond'environnement d'évaluationd'unprogrammeP etE[[P]]

e =e

0

lafonctionsémantiqued'évaluationd'unprogrammedontla signatureest: E:P !Env!Env E[[P]] e =e 0 signiequee 0

est l'environnementrésultantdel'évaluation deP danse. E

Q

:Q!Env!ftrue;falsegreprésenteune procédurededécisionpourl'ensembledesprédicatsQ. Vérierqu'unepropriétéQestvraieàlasuitedel'évaluationd'unprogrammeP dansunenvironnemente revientàvérierque:

E[[P]] e =e 0 etE Q [[Q]] e 0 =true VérierquelapropriétéQest toujoursvraie,c'estvérierque:

8e2Env E[[P]] e =e 0 etE Q [[Q]] e 0 =true

2.1.1 Interprétation abstraitede programmes

L'interprétation abstraite de programmes permet de calculer des propriétés bien choisies sur des pro-grammesinformatiques[7,17].

Ondénit uncertaindomaineabstraitVal ]

pourreprésenter l'ensembleVal desvaleurspossiblesd'une variable

4

etcedomaineest engénéralbienplussimplequece dernier 5

. 1

Cetravailfaitpartiedestravauxréalisésdanslecadred'unethèseCIFREentrelasociétéSURLOGS.A.etleLaboratoire d'InformatiquedeParis6 http ://www-spi.lip6.fr.

2

AGFL r :AnalyseurparGrapheFonctionnelduLogiciel. 3

RCSPL r RecherchedesCombinaisonsSignicativesdePannesduLogiciel. 4

Ledomainedoitrespecter descritèresbienparticulierscommeceluid'êtreuntreilliscomplet[10]. 5

(4)

00 00 00 11 11 11 00 00 00 11 11 11 000 000 000 111 111 111 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 00000000000 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111 11111111111

Y { 0, 1 ,2 }

Z { 0, 1 ,2 }

X { 0, 1 ,2 }

>

=/=

<

Fig.1Unexempledecontraintestri-parties.

Pour cela, une certaine abstraction des valeurs concrètes versles valeurs abstraitesest dénie sous la formed'unefonctiond'abstraction :Val!Val

] .

Lespropriétésetlesfonctionsd'évaluationsontaussiinterprétéessousuneformeabstraite.E ]

etE Q

]

dénotent les fonctions sémantiques d'évaluation abstraitedes programmes et des prédicats sur des environnements abstraitsEnv

] .

L'interprétationabstraiteP ]

d'unepropriétéP surValestcorrectesilavaliditédeP ]

surVal ]

implique lavaliditédeP surVal.

Le traitementdesconditionnelles s'eectue de lamanièresuivante : lecalcul est eectué pour lesdeux branchesdelaconditionnelleet unefusiondesdeuxrésultatss'eectuedemanièreàgarantirlavaliditéde lapropriétésurlesdeuxbranches.

Cettetechniquepermetdegénérerdesrésultatsvalidesquellequesoitl'exécutionpossibleduprogramme 6 (si aucuneinformation relativement àune variable n'est calculéealors sondomaine est l'ensemble des va-leurs possibles). Il est plusdicile d'obtenir de l'information lorsqueles prédicats desprogrammes oudes conditionnelles sont de laforme x < y (parexemple si x =1::100 et y = 1::100on ne sait pas dire si la conditionestvraieoufausse).

Latechniqueparcontraintesutiliseuntraitementdiérentdesconditionnelles.L'ensembledesbranches possibles issues de l'exécution du programme est intégré dans le modèle fonctionnel. La traduction des contraintes s'eectuantsur ce modèlegarantitlavaliditédes prédicatssur lesexécutionspossiblesdu pro-gramme.

2.1.2 Programmationlogique par contraintes

Laprogrammationlogiqueest unparadigmedeprogrammationdontlesfondementsontétéposésdans ledébutdesannées1970.

La programmationlogique par contraintes intègredes domaines de calculs particuliers comme les do-maines réels,les domainesnisou lesformulesbooléennes (onétendle domainedediscours), pourdénir sur cesensemblesune notionde contrainte représentéepardes clauses deHorn

7

. Résoudre unprogramme logique par contraintes c'est principalement résoudre les diérentes contraintes en utilisant des solveurs spéciquesauxdiérentsdomainesdedénition [5,6,13,15].

Exemple de technique de résolution sur les entiers Les techniques de calcul de résolution de contraintes sur les domaines entiers peuvent être basées sur la notion d'arc consistance [15] : à chaque étapeducalcul,nous essayonsde vérierl'ensemble descontraintes, entraînantla réductiondesdomaines des diérentes variables sur lesquelles portent les contraintes. Soit l'exemple de la gure1 : nous voulons satisfaire pour lestrois variablesX;Y;Z (de domaine[0::2]) les inéquationssuivantes X 6=Y X <Z et Y >Z.Un exemplederésolutiondecetexempleestlesuivant:

Y 6=X Y >Z X <Z resultat Y =0 X =1;2 Z =; impossible Y =1 X =0;2 Z =0 X =; impossible Y =2 X =0;1 Z =0;1 X =0 X=0;Y =2;Z=1 6

Onparleaussid'analysestatiquedesprogrammes. 7

(5)

Sémantiquedeslangages Résolutiondecontraintes

uncomposantlogiciel unensembledesystèmesdecontraintessurles entrées/sortiesducomposant(1)

unenvironnementd'exécution un système de contraintes sur les entrées du logiciel(2)

analyseruncomposant résoudrelessystèmesdecontraintes(1)+(2) analyser deux composants logiciels en

sé-quence

fusionnerleurs systèmesde contraintes et ré-soudre

une propriété=unprédicat un système de contraintes sur les en-trées/sortiesdulogiciel

vérierune propriété fusionnerlessystèmeset lapropriétépuis ré-soudre

Tab.1Liensentreanalyseparcontrainteset sémantiquedelangage

Dans le système CLP(BNR) [5], les auteurs utilisent des approximations et créent desfonctions de rétré-cissementset d'élargissements(widening and narrowing) descontraintespourréduire,étapeparétape,les diérentsdomainesdevaleurs.

Soit C l'ensemble de toutes les contraintes basées sur les domaines Val et les variables Var. Soit S l'ensemble des systèmes decontraintes (ce sont des collections de contraintes C). SoitÆ: S ! S !S un opérateur defusion desystèmes de contraintes. Un systèmeS 2S est dit inconsistant ouinsatisable s'il contientunecontrainteC dedomainevide

8 .

L'utilisation de contraintes permet de pouvoir parler de l'expression X < Y lorsque X 2 [1::100] et Y 2[1::100]parl'ajoutdelacontrainteX <Y auxdeuxensemblesdevaleursdénisparl'appartenancede X etY à[1::100].

Lepointprécédent,alliéauxtechniquesd'interprétationabstraitedeprogrammes,nousdonneleschéma global de l'analyse de propriétés par contraintes. Les opérateurs abstraits sont dans notre technique les opérationssurlessystèmesdecontraintes.

2.2 Méthode de la vérication de propriétés par contraintes

A partirde notre problématiqueinitiale,nous essayonsd'établir des liensentre lasémantiquedes pro-grammesetl'utilisationdecontraintes,letableau1présenteunesynthèsedesopérationsquenousaimerions dénir.

Nousessayonsdetirerprotdescontraintespourinterpréternementlesdiérentesexpressionsprésentes danslesprogrammes.C'estàdiredéniruneinterprétationdesprogrammespardessystèmesdecontraintes etutiliserlestechniquesderésolutionpourobtenirlaprocéduredevéricationdespropriétés.

Uneméthode en quatrephasesa étédénie pourtraduire et résoudredes propriétéspar utilisationde contraintes.

1. lectureduprogramme,véricationdetypeetcalcul duotdesvariables; 2. modélisationduprogrammesouslaformed'unmodèlefonctionnel; 3. traductiondumodèlefonctionnelensystèmesdecontraintes;

4. compositiondessystèmesdecontraintesprécédentsetdespropriétésàvérier.

Lagure2,commentéeci-après,montreunexempledeprogrammeécritdansunlangagedetypepascal, ladeuxièmecolonneprésentelatraductionsousformedecontraintesdesfonctionnalitésduprogramme.

Lacontrainte X 2 D exprimée par rapport à une variable X représente le domaine de valeurD que peutprendrelavariableX.Fonctionnellement,l'exempledelagure2seramèneàtroiscasparticuliers:

 lesprédicatsP etQsontvrais:lesvariablesaectéessontJ I,L 2et K K+1,

 le prédicat P est vrai et le prédicat Q n'est pasvrai, les variables aectéessontJ I, L 3 et K K+1,

(6)

if (P = true) then begin J:= I; if (Q = true) then L := 2 else L := 3; K := K+1; end else K := K+2 Cas1 8 > > < > > : P 0 inftruegQ 0 inftrueg J 1 indom(I 0 )I 0 indom(J 1 ) L 1 inf2g K 1 indom(K 0 )+1K 0 indom(K 1 ) 1 Cas2 8 > > < > > : P 0 inftruegQ 0 in:ftrueg J 1 indom(I 0 )I 0 indom(J 1 ) L 1 inf3g K 1 indom(K 0 )+1K 0 indom(K 1 ) 1 Cas3 8 > > > > < > > > > : P 0 in:ftrueg J 1 indom(J 0 )J 0 indom(J 1 ) I 1 indom(I 0 )I 0 indom(I 1 ) L 1 indom(L 0 )L 0 indom(L 1 ) K 1 indom(K 0 )+2K 0 indom(K 1 ) 2

Fig.2Exemple deprogrammeetsystèmesdecontraintesassociés

 leprédicatP n'estpasvrai:laseulevariableaectéeestK K+2.

Lessystèmesdecontraintesutilisésexprimentlesvaleursdesvariablesavantetaprèsleursaectations.Pour celaK

0 etK

1

représententlamêmevariableavantetaprèsl'évaluationduprogramme.Cettedistinctionest importantecariln'estpossiblededénirledomained'unevariablequ'enfonctiondesesvaleursprécédentes

9 . A partirdecetexemplenouscherchonsàdéterminersi,àpartirdel'environnement

[hP;ftrue;falsegihQ;falseihK ;10ihI;INihJ;INihL;INi] ilest possibled'obtenir

[hK ;12ihL;10ihP;?ihQ;?ihI;?ihJ;?i] 10

Parrapportànosdénitionsavant etaprèsdesvariables, cesdeuxassertionssetraduisentensystèmes decontraintesparS 1 =fK 0 in f10g; QinffalseggetS 2 =fK 1 in f12g; L 1

inf10gg(onremarqueraque seuleslesinformationspertinentesapparaissentdanslessystèmesdecontraintes).

Apartirdessystèmes decontraintesrelatifsànotrepropriété, lavaliditéde celle-ciseramèneàcalculersi unedestroiscompositions suivantesestpossible(ousatisable):

S 1 ÆCas1ÆS 2 ) Insatisfiable S 1 ÆCas2ÆS 2 ) Insatisfiable S 1 ÆCas3ÆS 2 ) Satisfiable

Laconclusiondelacomposition estquelapropriétévoulueestvalidesurlechemin3etquelasolutionest [hP 0 ;falseihQ 0 ;falseihK 0 ;10ihK 2 ;12ihL 0 ;10ihL 1 ;10i:::].

2.2.1 Traduction vers lemodèlefonctionnel

Latraductiondesprogrammesensystèmesdecontraintesnécessitel'obtentiond'uneformeintermédiaire appelée modèlefonctionnel.Ce modèleest constituéd'équationsoùchacuneexprimeune fonctionnalitédu programmeconsidéré(l'ensemble deséquationspourunprogrammereprésentesafonction caractéristique). L'intérêtdecemodèleestd'exprimeràplatlesrelationsentrelesdiérentesvariablesduprogrammesous laformed'unetransitionenuneétape:diérentesaectationsd'unemêmevariablesontpropagéesdansles équationspour neretenir quel'aectation naled'une variablepar rapport àunprédicat (éventuellement

9

Leproblèmeest identiqueà celui delacausalité dans les langages deotde donnéescommedans lucid-synchrone par exemplehttp ://www-spi.lip6.fr/pouze t/l ucid -syn chr one.

(7)

égalàvrai)dépendantdesexpressionsducomposantlogicielanalysé.

Pour lesbesoinsde la traductionversles systèmes de contraintes ce modèle fonctionnel est représenté par une forme équationnelle propre à l'outil fraction. Cette forme équationnelle correspond au modèle fonctionnel,résultatdel'utilisationdel'outilAGFL r,particulariséàlatraduction encontraintes.

Unetelle traductionestpossibleeneectuantdeuxtransformationsduprogrammeinitial:

 les instructions d'un programme sonttraduites en une forme SSA pour n'avoir que des occurrences diérentesdesvariablesduprogramme[1,9];

 les diérentes aectations des variables sont collectées à travers les fonctions de choix issues de la traduction desconditionnelles delaformeSSA.

Letableau2présente lemodèlefonctionneldel'exempledelagure2.

Cheminsfonctionnels conditionsurlesentrées Aectationsdessorties Cheminfonctionnel1 Q 0 =true J 1 :=I 0 P 0 =true L 1 :=2 K 1 :=K 0 +1 Cheminfonctionnel2 Q 0 <>true J 1 :=I 0 P 0 =true L 1 :=3 K 1 :=K 0 +1 cheminfonctionnel3 P 0 <>true J 1 :=J 0 L 1 :=L 0 K 1 :=K 0 +2

Tab.2Lesdiérentscheminsduprogrammedelagure2

2.2.2 Traduction vers laforme "contraintes"

Laforme"contraintes"de laforme équationnelleest obtenue àpartird'unetraduction desexpressions dulangage.Cette formeéquationnellepermet desedéfairedesdiérentes commandesdulangagede base. Il en résulte une série de relations entre variables exprimées simplement sous la forme de liens entre une pré-condition et diérentes aectations simultanées représentée sous laforme d'un chemin fonctionnel du programme.Uneconditionnécessairepourlatraductionverslescontraintesestnenepasavoird'occurrence del'opérateurNotet den'avoirquedesformesconjonctivesdanslesprédicatsd'équations(cettecondition permetd'obtenirdesapproximationsplusnesdesexpressions).

L'utilisationd'uneformeSSAàlabasedelatraductionnouspermetdes'assurerquedeuxvariablesportant lemêmenomsontbien liéesparunenotionavant-après.

Letableau3représenteune partiedelatraduction enterme decontraintes desexpressionsdelaforme équationnelle.Les systèmesdecontraintesde lagure2s'obtiennentparapplication desrèglesdutableau 3surlescheminsdutableau2.

2.2.3 Résolutiondes formes "contraintes"

Apartirdessystèmesdecontraintesprécédents,unalgorithmedetypearc-consistance[6,13,15]permet deréduireitérativementlessystèmesdecontraintes.

Si la composition des systèmesde contraintesissus du programme initialet dela propriété recherchéeest inconsistante alors la propriété n'est pas valide. Parcontre, l'interprétation des expressions étantréalisée demanièresupérieure (lorsdelatraductiond'un<parexemple),silarésolutionnousdonneunesolution, alorsiln'estpastoujourspossibled'armerquelapropriétéestvraieounon.

(8)

Expression Traductionencontraintes Remarques X =Y



X in Dom(Y) Y inDom(X)

Egalitédedeuxvariables X 6=Y



X in :Dom(Y) Y in:Dom(X)

Inégalitédedeuxvariables X Y



X in 1::Max(Y) Y inMin(X)::+1(X)

Inégalitédedeuxvariables X <Y



X in 1::(Max(Y) 1) Y in(Min(X)+1)::+1

Inégalitéstrictededeuxvariables X:=Y  X inDom(Y) Aectation X:=Y+Z 

X inDom(Y)+Dom(Z) Addition X:=Y-Z



X inDom(Y) Dom(Z) Soustraction X:=-Y



X in Dom(Y)

Opérationunaire

Tab.3Traductiondesexpressionsdeséquationsencontraintes

peutserameneràlierlesélémentssuivants: Val ]  C Q ]  S Env ]  }(S) E ]  Æ E Q ]  SatisabilitédansS

3 Réalisation d'un prototype

Constraint

Module

Constraints

Translation

Properties

Resolution

Generic

Lattice

Generic

Environment

Generic

Semantic

Flow

Lattice

Type

Lattice

Equations

Translation

Variable

Fraction

Language

Constraint

Module Int

Constraint

Module Bool

Type

Environment

Flow

Environment

Type

Semantic

Flow

Semantic

Fig.3Lesdiérentsmodulesdel'analyseurfraction L'utilisationdulangageObjective Caml

11

etdesesmodulesapermisd'obtenirunoutilmodulaireoù il est possibled'ajouterrapidement denouveaux domainesde dénition pourla résolution decontraintes. Leschémadelagure3présentel'architecturedesmodulesdel'analyseur.

(9)

Leprototypefraction abesoind'informations sur lesvariables présentes dans le programmeanalysé pour laphase de traduction versles contraintes. Il était intéressantde regrouperles techniques de calcul deces informationsdans unseulmodule souslaforme d'unesémantiquegénérique. Pour cela,l'utilisation desfoncteursde Objective Caml apermis dedénirune architecturebaséesur lesvaleurspossiblesdes variables.Cesvaleurs(pouvantêtrediérentesselonl'analysedésirée)sontregroupéesdansunseulmodule treillis.

Ladénitiond'unmodulegénéraldecontraintesfondéesurdessolveursdedomainesdiérents(Constraint module Intet constraint module Bool permet aussi une plus grande souplesse lorsde la résolution de contraintes.

3.1 Lecture et typage du programme

Lapremièrephasede latraduction verslescontraintes est delire et detyperles programmes. L'infor-mationdetypeestimportante carc'estellequi permet d'orienterlatraductionverslesdiérentsdomaines de résolution de contraintes.A partir d'un module de sémantique générique paramétré par un treillis de valeurs(voir[8])nouspouvonsévaluerlesdiérentstypesduprogrammeet calculerdel'informationsurles entrées/sortiesduprogramme.

3.1.1 Le modulede variable

LemoduleVariable_signature exprimelesopérationsnécessairesàlamanipulationdesvariablesd'un programme,sasignatureest lasuivante:

module type Variable_signature = sig

type var

val is_equal : var -> var -> bool val next_of_var : var -> var

val new_var : unit -> var ...

end

Ilestimportantdediérencierlesvariables àdroite et àgauchedesaectations,ouencoreen entréeet en sortiedeprogramme.Pourcelaladiérenceentreunevariablev etlavariablenext_of_var(v)résidedans lefaitquenext_of_var(v)désignelavaleursuivantedelavariablev

12 .

Implémentation L'implémentationdumoduleest eectuéeen dénissantletypevarcommeuncouple (stringint).Ainsilafonctionnext_of_var (s,i)serésumeàrenvoyerlecouple(s;i+1).

3.1.2 Le modulede langage

Lemodule delangageparamétréparlemodule devariable(voirgure3) représentelelangagede base de notreapplication. Ce module est importé partouslescomposantsdel'analyseuret par lesmodules de traduction. Le type le plus important de ce module est le typeexpr car c'est celui qui est la base de la traductionencontraintes.Letypeexprpermetaussidedénirdespropriétéssouslaformedeprédicatssur lesvariablesduprogramme(c'estnotrelangagedepropriété).

module type Language_fraction = sig

module V : Variable_signature type commands =

Skip

| Affect of (V.var * expr)

| Seq of (commands * commands) | While of (expr * commands) 12

(10)

| Ifthenelse_c of (expr * commands * commands) and expr =

Const of values | Ident of V.var

| Add of (expr * expr) | Sub of (expr * expr) | Equal of (expr * expr) | Inf of (expr * expr) | Or of (expr * expr) ...

and values = Int of int | Bool of bool

val fraction_true : expr val fraction_false : expr

val equationnal_simplification : expr -> expr val normalize_expr_not : expr -> expr

val commands_to_equations : commands -> (expr * ((V.var * expr) list)) list ...

Implémentation Le codage du module de langage est classique pourun langage destyleimpératif.La fonction commands_to_equationsimplémente la technique de traduction par l'intermédiaire d'une forme SSAdesprogrammesverslaformeéquationnelle.

3.1.3 Lemodulede sémantique générique

Le module de sémantique générique est basé sur une sémantique standard de type opérationnelle du langage de base [16]. Le typage du programme et la détermination du ux des variables s'eectuent par l'intermédiaire de ce module paramétré par un module treillis de valeurs et un module d'environnement abstrait.

L'évaluationduprogrammepouruntreillisdonnéest uneinterprétationabstraitesimpledesexpressionset descommandesdulangage[7, 8,17].

Le module générique des treillis Le module des treillisreprésente lesopérationsélémentaires surles éléments que nous voulons calculer. Il faut poser la traduction des valeurs de bases du langage dans le treillisdesvaleurs(ouencoreécrirelafonctiond'abstraction ),et donnerdeux fonctionsis_true_of_lat etis_false_of_latpourl'évaluationdesconditionnellesetdesboucles.L'intérêtdecesdeuxfonctionsest depouvoirvaliderounonunprédicat.Lorsquecelui-ciestindéterminablealorsnousutilisonslestechniques devaleurssupérieuresdansletreillispourgarantirlavaliditédesrésultats.

module type Lattice_algebra_signature = sig

module L : Language_fraction type lat

val bot : unit -> lat (* bottom value *) val top : unit -> lat (* top value *) val eq : lat->lat->bool (* egality test on lattice elements *) val leq : lat->lat->bool (* order function on lattice *) val lat_upper : lat -> lat -> lat (* upper bound *)

val val_of_constant : L.values -> lat

(11)

Bot

Top

Int

Bool

In Out

In

Out

Top

Bot

Init

Fig.4Letreillisdestypeset duotdedonnées

val lat_Add : lat -> lat -> lat val lat_Sub : lat -> lat -> lat val lat_Equal : lat -> lat -> lat ...

end

Le treillis des signes Le treillis des signes présenté dans la gure 4 permet de typer les variables présentes danslesexpressionset lescommandes.

Implémentation Voici unextraitdumodule implémentantletreillisdestypes.Lafonctiondevaleur supérieureutiliseletreillisdonnéàlagure4,lesopérationsarithmétiques etlogiquess'écrivent naturelle-mentselonletypededonnéeattendu.

module Lattice_algebra_signature_type (Lang : Language_fraction) : (Lattice_algebra_signature with module L = Lang) = struct

...

type lat = Bot | Int | Bool | Top let val_of_constant c = match c with Lang.Int _ -> Int | Lang.Bool _ -> Bool let lat_Add l1 l2 = match (l1,l2) with (Int,Int) -> Int | (Bot,Int) -> Int | (Int,Bot) -> Int | (Bot,Bot) -> Bot | (_,_) -> Top ... end

Letreillisdesentrées/sorties Lesentréesetsortiessontutiliséespourvérierleuxentrediérentes parties deprogramme. L'ajoutd'unenotionde procédurepermet d'utiliser leux pourlierlesvaleursdes variablesauxentréesdesprocédures:lesvariablessontnomméeset ilfautalorsmettreàjourlesnomsdes variablespourlaprocédureconsidérée.

(12)

pro-desavaleurenentrée.In_Outcorrespondàunevariablelueetécritedanslecorpsduprogramme.Initest unevaleurutiliséelorsque lavariableest simplementaectéedanslecorpsd'unprogramme.

Le module générique d'environnements A partirde ladénition d'untreillisde valeurs,unenotion génériqued'environnementest dénie.Elleassocie auxvariablesdesvaleursdutreillisparamètre.

module type Env_algebra_signature = sig

module V : Variable_signature

module Lat : Lattice_algebra_signature type env

val empty : unit -> env

val env_get : env -> V.var -> Lat.lat

val env_put : env -> V.var -> Lat.lat -> env val upper_env_put : env -> V.var -> Lat.lat -> env val upper_env : env -> env -> env

... end

Implémentation Uneliste(V.var * Lat.lat) listpermetd'utiliserlesfonctionsd'associationdu lan-gageObjectiveCaml.Onremarqueraquelafonctionupper_envpermetdefusionnerdeuxenvironnements parapplicationdel'opérateursupérieurdansletreillisdesvaleurslat.

L'environnementdeotetdetypes'obtiennentenutilisantlemoduledetreillisdesots,lemoduledetype etlemodule d'environnementgénériqued'environnement.

Le modulede sémantiquegénérique Le module desémantiquegénériqueseparamètrepartrois mo-dules : unmodule de langage Lang, un treillisde valeursLatticeet unenvironnement Env associantdes variables du langage Lang aux valeurs du treillis Lattice. A partirde la dénition du langage, et d'une sémantiquedetypeopérationnelle[16],lesprogrammessontévaluésenutilisantlesopérationsdéniesdans letreillisLat.Lasignaturedumoduledesémantiquegénériqueestlasuivante:

module type Generic_forward_semantic_signature = sig

module Lang : Language_fraction

module Lattice : (Lattice_algebra_signature with module L = Lang) module Env : (Env_algebra_signature with module V = Lang.V

and module Lat = Lattice)

val generic_forward_expr : Env.env -> Lang.expr -> (Lattice.lat * Env.env) val generic_forward_commands : Lang.commands -> Env.env -> Env.env

end

Implémentation L'implémentationdumoduleestbaséesurunesémantiquestandarddulangage.La dénitiondesfonctionsis_true_of_latetis_false_of_latdutreillisdesvaleursetlafonctionupper_env du module d'environnement permettentde s'assurer que lesrésultats obtenus sont valides quelle que soit l'évaluationduprogramme.

3.1.4 Formeéquationnelledu programme

Laformeéquationnelleduprogrammeestobtenueendeuxphasesderéécrituredescommandesdebase. Lafonctiondetraductionestprésentedanslemoduledelangageandenepasexporterlastructureinterne descommandes.

(13)

module type Language_fraction_equation_signature = sig

module Var : Variable_signature

module Lang : (Language_fraction with module V = Var) type recursive_affectation

and fraction_path

and fraction_path_program = fraction_path list val name_of_path : fraction_path -> string val precond_of_path : fraction_path -> Lang.expr

val affects_list_of_path : fraction_path -> (Var.var * Lang.expr) list val path_of_commands : Lang.commands -> fraction_path_program val normalize_path : fraction_path -> fraction_path_program

val normalized_path_of_program_path : fraction_path_program -> fraction_path_program ...

La forme équationnelle des programmes doit respecter certaines propriétés. Par exemple les expressions ne doivent pas contenir de construction not. Pour cela une série de règles de réécriture est utilisée pour normaliserlesexpressions(c'estlafonctionnormalize_expr_notdumoduledelangage[8]).

Letermechemin(path) désigneunefonctionnalitéduprogramme(c'estunebranchedel'arbre d'exécu-tiondu programme).Ilpeutexister desbranchesnon accessibles,pour celaune fonction denormalisation normalize_pathpermet deretirercesbranches(leprédicatest évaluépartiellement).

3.1.5 Traduction vers laforme "contraintes"

Apartirdelaformenormaleéquationnelle,unmodule detraductionverslessystèmesdecontraintesest déni.Ce module est basé surlatraduction d'une expressionarithmétiqueou logiquedulangage de base. L'utilisationd'uneformeatomiqueX inD decontraintes[6]permetd'exprimerdeséquationssouslaforme d'unecollectionde contraintes.Letableau 3présente desrèglesde traductiond'expressionsensystème de contraintes.

Ilest possibled'ajouterdesvariablesauxexpressionsandefaciliterlatraduction.Ainsil'expression(X+ 2)=(Y +3)peutseréécrireenU =(X+2);V =(Y +3);U =V.Cetteopérationestsemblableàunemise enformecode 3adresses desexpressions[1].

Lasignaturedumoduledetraductionutiliselemoduled'équationetlemodulederésolutiondecontraintes. module type Language_fraction_constraint =

sig

module Eqn : Language_fraction_equation_signature

module Const_module : (Constraint_signature_module with module Lang = Eqn.Lan g)

type fraction_store_path

and fraction_store_program = fraction_store_path list

val store_path_of_name_store : string -> Const_module.store -> fraction_store_path val store_of_store_path : fraction_store_path -> Const_module.store

val name_of_store_path : fraction_store_path -> string val store_of_path : Eqn.fraction_path -> Const_module.store ...

end

Apartirdestypesdesexpressions(obtenusàpartirdumoduledetypage),lessystèmesdecontraintessont générésparutilisationdelafonctiondetraductionprésentedanslemoduledecontraintes.

3.1.6 Le modulede contraintes

Le module de contraintes permet de regrouper dans une seule construction diérentes techniques de résolutionsurdesdomainesdiérents.Lasignaturedumoduledecontrainteestlasuivante:

(14)

sig

module Lang : Language_fraction

module Const_int : (Constraint_signature_type_int with module Var_int = Lang .V and module Lang_int = Lang)

module Const_bool : (Constraint_signature_type_bool with module Var_bool = La ng.V and module Lang_bool = Lang)

type contr type range type tdef type store ...

val store_from_int : Lang.expr -> store val store_from_bool : Lang.expr -> store ...

val tell : contr -> store -> store val fusionne : store -> store -> store val elim_store : store -> bool

... end

Implémentation L'implémentation du module de contraintes s'eectue en diérenciantles typesde contraintesutiliséseninternedanslemodule.Lorsdelarésolutionoulorsdelatraductionl'informationde typesurlescontraintespermet d'appelerlafonctioncorrespondantaudomainedéniparletype.

3.2 Conclusion sur l'implémentation du prototype

L'implémentation du prototype a été facilitée par l'utilisation des lexers et parsers fournis avec Ob-jective Caml.Le prototypefractionobtenu permetl'analyse deprogrammesimpératifsécritsdansun langageprochedulangagepascal.D'autresanalysesontétédéniesàpartirdumoduledesémantique géné-rique(commel'analyseparintervalles)etdiérentestechniquesderésolutiondecontraintesontétéutilisées parimplémentationdemodulesspéciquesderésolution.

Untravailencoursestd'augmenterlapuissanced'expressiondulangagedebasepourintégrerdes construc-tions"procédures"et"fonctions"ainsiqued'ajouterdestypesénuméréssurlesvariablesdesprogrammes.

4 Conclusion

Nousavonsprésentéuneméthodedevalidationdepropriétésparutilisationdetechniquesliéesàla réso-lutiondecontraintes.Cettetechniqueal'avantagedeseservirdelapuissancederésolutiondesalgorithmes de contraintes,et peut parl'intermédiaire d'unmodule contraintess'interfaceravecdes outilsexistantsde résolutiondecontraintes.

L'utilisationdulangageObjective Camlapermisdedénirrapidementunearchitecturecompilateur de notre outil de vérication depropriétés parcontraintes. La facilité pour les langages de lafamille ML de traiterlesstructures dedonnéesdénies récursivementest unatout essentielpourl'implémentationdu prototype.Deplusl'utilisationdesmodulesdulangageapermisdeparamétrerlarésolutionetlatraduction desexpressionsverslessystèmesdecontraintes.

Laformeéquationnellepeutêtreétenduelorsquelelangagedebasecontientdesprocéduresoufonctions. Le programme est alors décomposé en diérents sous-programmes sur lesquels s'applique latechnique de traductionparcontraintes.Cettedécomposition permet deréduirelatailledelaformeéquationnelle(ilest plussimpledetraiterdeuxcheminssuivisdedeuxcheminsquequatrecheminssimultanément).

Latraductiondescontraintesn'aétéeectuéepourl'instantquepourunsousensembledulangagedebase necontenantpasdeconstruction(while). Unepistede rechercheestd'utiliser lestechniques semblablesà

(15)

ensortiedeboucle.Celapeutmodierlestechniquesdecontraintesparajoutd'uneconstructionpointxesur larésolutiondecontraintes.L'implémentationduprototypedevraalorsintégrercesdiérentesmodications parajoutdeconstructionsdanslelangagedeséquationsetlorsdelaphasederésolutiondecontraintes.

L'analyseuraétéutilisépourvaliderlespropriétésd'unrégulateurdevitesse[2].L'apportdescontraintes permetaussidemieuxcaractériserlesdiérentesopérationsréaliséesdansunsystèmelogicielparrapportà uneinterprétationparintervalledesdomainesdevaleurs.

L'intégrationde techniquesde contraintes dansl'outil RCSPL r permettraainsiune modélisation ne des composantslogiciels.L'apportdel'outilfractionestaussidedonneruneformenormaliséedesprogrammes, facilitantainsiletravaillorsdesanalysesdesûretédulogiciel.

Références

[1] Aho,A.,Sethi,R.,Ullman,JCompilersPrinciples,techniquesandtools.Addison-WesleyPublishing Compagny,Inc, 1986.

[2] Joanne M.Atlee and John Gannon, State-Based Model Checking of Event-Driven System Require-ment.IEEETransactiononSoftwareEngineering,1993.

[3] P. Ayrault T. Hardin M. Guesdon Méthodologie de développement d'un outil d'évaluation de la sûretédulogiciel en langageOCaml,JFLA2000.

[4] B.LeTrungM-C.Monégier duSorbier ,B.Soubiès, O.Elsensohn,Logiciels de sécurité,Veille technologique,1995.

[5] Frédéric. Benhamou, William J. Older,Applying Interval Arithmetic to Real, Integer, and Boolean Constraints, ournalofLogicProgramming,Volume32,1997.

[6] PhilippeCodognetandDanielDiaz,CompilingConstraintsinclp(FD).J.LogicProgramming,1996. [7] PatrickCousotandRadhiaCousot,Staticdeterminationofdynamic propertiesofprograms.

Procee-dingsoftheSecondInternationalSymposium onProgramming,1976.

[8] Patrick Cousot,The Calculational Design of aGeneric Abstract Interpreter. M. Broyand R. Stein-brüggen(eds.),CalculationalSystemDesignNATOASISeriesF.Amsterdam:IOSPress,1999. [9] RonCytron Jeanne Ferrante BarryK. Rosen MarkN. Wegman and F.Kenneth Zadeck,An ecient

methodofcomputingstaticsingleassignmentform.16thACMSymposiumonPrinciplesofProgramming Languages,1989.

[10] B.A.DaveyandH.A.Priestley,IntroductiontoLatticesandOrder.CambridgeMathematical Text-books,Cambridgeuniversitypress,1990.

[11] GiorgioDelzanno,AndreasPodelskiModel Checking inCLP.TACAS1999.

[12] Arnaud Gotlieb, Bernard Botella, Michel Rueher, Automatic Test Data Generation using ConstraintSolving Techniques.InternationalSymposiumonSoftwareTestingandAnalysis,1998. [13] JoxanJaffar andMichaelMaher,ConstraintLogic Programming: ASurvey.Journal ofLogic

Pro-gramming,1994.

[14] Xavier Leroy, The Objective Caml system (release 3.00) Documentation and user's manual. http ://caml.inria.fr/ocaml/htmlman2000.

[15] AlanK.Mackworth,ConsistencyinNetworksof Relations.ArticialIntelligence,1977. [16] G.D. Plotkin,A structural approachtooperational semantics.AarhusUniversity,1981.

[17] DavidA.Schmidt,AbstractInterpretationofSmall-StepSemantics.5thLOMAPSWorkshopon Ana-lysisandVericationof Multiple-AgentLanguages,LNCS1192,1997.

[18] PierreWeiset XavierLeroy,Le langageCaml(2 e

Figure

Tab. 1  Liens entre analyse par contraintes et sémantique de langage
Fig. 2  Exemple de programme et systèmes de contraintes associés
Tab. 2  Les diérents chemins du programme de la gure 2
Fig. 3  Les diérents modules de l'analyseur fraction
+2

Références

Documents relatifs

D’apr`es le principe du minimum de l’´ energie, la position d’´equilibre des noeuds est, parmi toutes les positions admissibles, celle pour laquelle le centre de gravit´e du

Remarquer que si on remplace la sph`ere de rayon 1 par la boule de mˆeme rayon on a un probl`eme d’optimisation d’une fonction lin´eaire sur un convexe, son minimum est donc atteint

D’après le principe du minimum de l’énergie, la position d’équilibre des noeuds est, parmi toutes les positions admissibles, celle pour laquelle le centre de gravité du système

Remarquer que, si on remplace la sphère de rayon 1 par la boule de même rayon, on a un problème d’optimisation d’une fonction linéaire sur un convexe, son minimum est donc atteint

La méthode la plus efficace pour résoudre ce problème consiste à utiliser un algorithme de recherche mettant en œuvre d’une part la méthode de fermeture par faible composition

Elles se situent en partie en amont avec la prise en compte des paramètres situationnels et le respect du choix des mots du texte original en ce qu'ils constituent des

Pour approfondir l’´etude des contraintes de forme en utilisant les B-splines `a nœuds variables, nous proposons dans le chapitre suivant une ´etude en d´etails de

En particulier, on montre que l’estimateur bay´ esien peut ˆ etre calcul´ e ` a partir d’un algorithme de type recuit simul´ e et qu’il est possible de g´ en´ erer suivant la