Concours de recrutement du second degré Rapport de jury
Exemples de démarches et de raisonnements prouvant la terminaison et la correction d'un algorithme. 14. Représentation binaire des nombres : formats
Concours de recrutement du second degré Rapport de jury
Exemples de démarches et de raisonnements prouvant la terminaison et la correction d'un algorithme. 14. Représentation binaire des nombres : formats
Concours : CAPES externe Section : mathématiques Session 2019
Exemples de démarches et de raisonnements prouvant la terminaison et la correction d'un algorithme. 13. Représentation binaire des nombres : formats
Rapport de jury Session 2016 CONCOURS EXTERNE DU CAPES
Exemples de démarches et de raisonnements prouvant la terminaison et la correction d'un algorithme. 14. Représentation binaire des nombres : formats
Etude de la démarche expérimentale dans les situations de
7 déc. 2011 VI.15 Une correction de l'exercice de la figure VI.12. . . . . . . . . 98 ... Exemples de parties ou le chercheur utilise l'algorithme 2.
Un Coq apprend à un bébé Colibri à flotter
31 mars 2022 intuitives rendent l'écriture d'algorithmes manipulant les nombres ... preuve de correction de propagateurs de contraintes en utilisant ...
Concours : CAPES externe Section : mathématiques Session 2019
Exemples de démarches et de raisonnements prouvant la terminaison et la correction d'un algorithme. 13. Représentation binaire des nombres : formats
Spécification et vérification de systèmes paramétrés
30 sept. 2019 sa spécification” est devenue la “correction du programme annoté avec ... de progression et de terminaison d'un algorithme de synthèse de.
ANNALES PASSERELLE ESC
centralisée des candidats qui a pour but de faciliter la démarche d'inscription gold n'hésite pas à citer en exemple les déviants du cyberespace ...
Département de Formation en Informatique
raisonnements rigoureux pour analyser la cohérence sémantique d'algorithmes. La partie Théorie des Langages présente un ensemble de connaissances qui
[PDF] Exemples de preuves dalgorithmes : correction et terminaison
Un exemple de raisonnement type pour prouver la correction des algorithmes gloutons pourra éventuellement faire l'objet d'un développe- ment Introduction
[PDF] Conception dalgorithmes Principes et 150 exercices non corrigés
CONCEPTION D'ALGORITHMES – PRINCIPES ET EXERCICES CORRIGÉS les introductions les exercices et les corrections pour montrer à leurs apprenants comment
[PDF] Master MEEF CAPES Maths Option Informatique - CNRS
Exemples de démarches et de raisonnements prouvant la terminaison et la correction d'un algorithme • Modélisation et utilisation de l'informatique en sciences
[PDF] Terminaison et Correction - IREM Clermont-Ferrand
Terminaison C'est un « algorithme-calcul » Il se termine simplement quand toutes les instructions sont effectuées Correction L'algorithme correspond à
[PDF] capes mathématiques option informatique
dans le pire des cas) d'un algorithme • 13 Exemples de démarches et de raisonnements prouvant la terminaison et la correction d'un algorithme
[PDF] Liste des leçons dinformatique - Optimal Sup Spé
Exemples de démarches et de raisonnements prouvant la terminaison et la correction d'un algorithme 13 Représentation binaire des nombres : formats
[PDF] Département de Formation en Informatique
raisonnements rigoureux pour analyser la cohérence sémantique d'algorithmes La partie Théorie des Langages présente un ensemble de connaissances qui
[PDF] Liste des leçons dinformatique - CAPES de Mathématiques/Rennes1
Exemples de démarches et de raisonnements prouvant la terminaison et la correction d'un algorithme 14 Représentation binaire des nombres : formats
Leçon 927 (2019) : Exemples de preuve dalgorithme - Agreg-Maths
Leçon 927 : Exemples de preuve d'algorithme : correction terminaisons Un exemple de raisonnement type pour prouver la correction des algorithmes
[PDF] Concours : CAPES externe Section : mathématiques Session 2019
Exemples de démarches et de raisonnements prouvant la terminaison et la correction d'un algorithme 13 Représentation binaire des nombres : formats
Comment prouver la correction d'un algorithme ?
Pour prouver qu'un algorithme termine, il suffit de montrer qu'il ne boucle pas à l'infini.Comment écrire un algorithme exemple ?
Comment écrire un algorithme « standard »
1I. Introduction.2Étape 1 : Poser clairement le problème.3Étape 2 : Essayer d'éviter tout travail.4Étape 3 : Définir l'interface. Étape 3-a : Déterminer le nom de la fonction. 5Étape 4 : ?rire les tests.6Étape 5 : ?rire l'algorithme.7Étape facultative 6 : Optimiser.8II. RésuméQuelles sont les étapes de résolution d'un algorithme ?
Ce problème posé par la couturière on l'appelle l'instigateur du problème.
1- Première étape : Pré-analyse.2- Deuxième étape : Analyse.3 - Troisième Etape : Elaboration de l'algorithme.4- Quatrième étape : Programme.5- Cinquième étape : Tests et exécution.- La moyenne est calculée en faisant la somme de toutes les notes lues. Utiliser une boucle Tant que qui nous permet de. Lire 100 fois la même variable X. A chaque fois qu'on lit une nouvelle valeur de X, on la rajoute à une variable S.
![Spécification et vérification de systèmes paramétrés Spécification et vérification de systèmes paramétrés](https://pdfprof.com/Listes/17/22512-17document.pdf.jpg)
Arthur Correnson
1and François Bobot2
1ENS de Rennes, Rennes, Bretagne, France
arthur.correnson@ens-rennes.fr2CEA, Gif-sur-Yvette, France
francois.bobot@cea.frRésumé
L"arithmétique flottante est connue pour être un sujet difficile. Ses propriétés contre- intuitives rendent l"écriture d"algorithmes manipulant les nombres flottants propice à de nombreuses erreurs. Des outils automatiques pour la vérification de programmes flottants existent mais ces outils faisant eux-mêmes usage de calculs en arithmétique flottante, onpeut se poser la question de leur propre fiabilité. Dans cet article, nous proposons de vérifier
formellement l"implémentation de raisonnements sur les nombres flottants dans le solveur de contraintes Colibri2. En particulier, nous présentons une méthodologie pour mener la preuve de correction de propagateurs de contraintes en utilisant l"assistant de preuve Coq.Nous discutons également de l"intégration des raisonnements prouvés à un développement
logiciel complet en OCaml.1 Introduction
1.1 Solveurs et résolution de contraintes
Les outils de raisonnement automatique sont de plus en plus utilisés dans le contexte de lavérification formelle des logiciels. Parmi ces outils, les solveurs dits Satisfiabilité Modulo Théorie
(SMT) sont certainement les plus utilisés car ils permettent d"effectuer de manière automatisée
des preuves mobilisant plusieurs théories typiques des problèmes de vérification (théorie des
tableaux, théorie des flottants, ...). Le standard SMT-LIB [ 4 ] propose un language commun pour interroger les solveur SMT ainsi qu"un ensemble de théories usuelles dans lesquelles les solveurs SMT peuvent raisonner. Si le standard SMT-LIB définit un langage commun pour lessolveurs, il laisse en revanche complètement libre le choix des méthodes de résolution. Le solveur
Colibri2, nouveau successeur de COLIBRI, propose d"utiliser des méthodes de programmationpar contrainte (CP) pour la résolution de problème SMT. Un tel solveur interprète les problèmes
SMT comme des ensembles de contraintes reliant plusieurs variables. On cherche ensuite une affectation de chaque variable satisfaisant l"ensemble des contraintes. Les algorithmes utiliséspour la résolution reposent sur l"idée de tenir compte de chacune des contraintes du problème
pour restreindre progressivement l"espace de recherche associé à chaque variable. On parle alors
de propagation de contraintes. Informellement, un propagateur de contrainte est une fonctionqui pour toute contrainte répond à la question suivante : " si la contrainte est satisfaite, que
puis-je en déduire sur la valeur de ses variables ». La correction d"un solveur CP est donc directement conditionnée par la correction des propagateurs de contraintes.Après une présentation rapide de quelques difficultés notables liées à l"écriture correcte de
propagateurs flottants, nous proposons une méthodologie pour la preuve de tels propagateurs à l"aide de l"assistant de preuve Coq. Nous détaillerons également comment extraire le code Coq vers du code OCaml fiable et prêt à être intégré aux sources de Colibri2. Preuve formelle de propagateurs flottants A. Correnson, F. Bobot1.2 L"arithmétique flottante et ses défauts
Représenter de manière exacte les nombres réels est impossible dans la mémoire finie d"un
ordinateur. Les nombres flottants répondent à ce problème et propose une approximation finie
des nombres réels permettant d"effectuer des calculs efficaces. De manière simplifiée, un nombre
flottant peut-être vu comme un réel que l"on peut écrire sous la formem2eavec(m;e)2Z. On contraint ensuite la taille demetepour assurer que tous les flottants ont une représentation finie. En imposant une précision (p) et des bornes sur l"exposant (eminetemax), on peut alors décrire un ensemble des nombres flottants comme F p;emin;emax=fm2ej jmj<2p^emineemaxg Notons qu"en fonction du choix des constantesp,eminetemaxil existe plusieurs ensembles deflottants. D"une manière générale, une configuration(p;emin;emax)est appelée un format flot-
tant. Cette représentation est une vue très mathématique et ne convient pas à l"implémentation
de calculs effectifs sur les nombres flottants. Le standard IEEE-754 définit une représentation
binaire des nombres flottants sur 16, 32 et 64 bits (cela revient à fixer un format) et formalise le comportement attendu des nombres flottants en machine. En particulier, ce standard définitla notion d"opérateur d"arrondi : des opérateurs permettant le passage d"un réel arbitraire au
flottant le plus proche dans un format donné. Plusieurs opérateurs d"arrondi sont définis par
le standard, le plus commun étant l"arrondi "au plus proche" aussi appelé RNE (round to nea- rest, ties to even). Pour simplifier la présentation dans la suite, on notera toujourso:R!F l"opérateur d"arrondi au plus proche.Le standard IEEE-754 définit précisément les différentes opérations arithmétiques sur les
flottants ainsi que leur spécification. Dans la suite on noteramfpour l"addition flottante dans un mode d"arrondi donné (ou simplementfsi le mode d"arrondi n"a pas d"importance) etf, f,=fpour les relations binaires. Nous noterons les opérations réelles en suivant les notations conventionnelles des mathématiques. Une propriété fondamentale du standard IEEE-754 est qu"il impose que les opérations arithmétiques correspondent exactement à l"arrondi de leur pendant réel. Par exemple pour deux flottantsxetyon axfy=o(x+y). L"introduction de la notion d"arrondi entraîne des comportements tout à fait singuliers del"arithmétique flottante qui la rendent fondamentalement plus difficile que l"arithmétique réelle.
En particulier, selon l"ordre dans lequel les opérations binaires sont faites, on accumule leserreurs d"arrondis et on perd de ce fait l"associativité de l"addition et de la multiplication par
exemple.En plus des propriétés déjà soulignées, l"arithmétique des nombres flottants présente une
autre difficulté de taille : la présence des valeurs spéciales et des zéros signés. Dans les nombres
flottants, on s"autorise à manipuler les infinis comme des valeurs usuelles ce qui permet en particulier de donner un sens à la division par zéro. On admettra donc que1=0 =1dansles nombres flottants. L"introduction des infinis comme valeurs oblige à étendre l"arithmétique
usuelle et à donner un sens à des expressions telles que+1 f1. On introduit donc unevaleur spéciale notéeNaNpour désigner le résultat de toute opération résultant en une valeur
non déterminée. Enfin, la présence d"un bit de signe dans la représentation mémoire des nombres
flottants tels que décrits dans le standard IEEE-754 différencie un zéro positif noté0+et un
zéro négatif noté0. L"égalité sur les flottants confond les deux zéros, mais1=0+=f+1alors
que1=0=f1. Ces singularités engendrées par l"introduction des valeurs spéciales doiventêtre l"objet d"une attention toute particulière lorsque l"on écrit des algorithmes sur les nombres
flottants. 2 Preuve formelle de propagateurs flottants A. Correnson, F. Bobot1.3 Raisonnements corrects sur les programmes flottants
Nous venons d"énumérer quelques-unes des nombreuses difficultés de l"arithmétique flot-tante. Ces dernières rendent l"écriture d"algorithmes flottants particulièrement propices à des
erreurs de programmation pouvant avoir des conséquences désastreuses (l"accumulation d"er- reurs d"arrondis dans un calcul numérique de trajectoire de missile par exemple). Des outils de vérification formelle existent et permettent de valider la correction de programmes manipulant les nombres flottants [ 6 10 7 ]. Cependant, ces outils faisant eux mêmes l"usage de l"arithmétique flottante, on peut alors se demander ce qu"il en est de leur propre correction. Si ces derniersproduisent des résultats incorrects, la sûreté des programmes vérifiés par leur intermédiaire
peut-être compromise. L"effet est d"autant plus pervers que la confiance que nous donnons aux outils de vérification est grande.Des initiatives pour prouver la correction des outils de vérification eux-mêmes ont déjà été
initiées [ 11 12 ]. Suivant cette idée, le solveur Colibri2 (développé en langage OCaml [ 2 ]) propose d"intégrer au sein même de son processus de développement la preuve formelle des composants les plus sensibles. Nous proposons dans cet article d"ajouter au solveur Colibri2 un support pour la théorie des nombres flottants. Cette extension consiste essentiellement en l"ajout de nouveaux propagateurs de contraintes spécifiques aux nombres flottants. Nous utiliserons l"assistant de preuve Coq [ 1 ] pour programmer et prouver ces propagateurs avant de les extraire pour les intégrer au solveur.2 Résolution de contraintes, domaines et propagateurs
L"objectif final des travaux présentés dans cet article est l"intégration de raisonnements sur
les flottants prouvés corrects dans un solveur CP. Si on se concentre uniquement sur des pro-blèmes simples de contraintes numériques (arithmétique entière, réelle ou flottante par exemple),
les solveurs CP raisonnent sur un ensemble de contraintes liantnvariablesx1;:::;xnau moyens des relations binaires et opérateurs arithmétiques usuels (=,,<,+,). En fonction de l"arith- métique considérée, les variables prennent leurs valeurs dans un ensembleE2 fZ;R;F32;:::get les contraintes peuvent être vues comme des fonctionsc:En!bool. Dans ce contexte, décider de la satisfiabilité d"une formule'revient à chercher une affectation2Endes variables telle que pour toute contraintecdans',c() =true. L"ensemble de toutes les affectations possibles E nest appelé l"espace de recherche et son sous-ensembleS'=f2Enj 8c2';c() =trueg est appelé espace des solutions. SiS'=;, il n"existe aucune solution et on dit que'est insa- tisfiable, dans le cas inverse'est satisfiable et toute affectation deS'est appelée modèle de Pour résoudre un ensemble de contraintes numériques', les solveurs analysent et combinent les contraintes pour collecter des informations sur les valeurs que peuvent prendre chaque va- riable et ainsi calculer une sur-approximationS'S'de l"espace des solutions. Pour chaque contraintec, on élimine dansSles affectations qui invalide trivialement la contraintec. On dit que l"on propage la contraintec. Initialement, on prendS=En, puis on propage toutes les contraintes dans'jusqu"à stabilisation deS'. Si au cours du processus,S'devient;alors' est insatisfiable. Si le processus converge vers une approximationS'6=;, on essaye d"extraire deSun modèle en choisissant une valeur pour chaque variable dans l"ordre (d"abord pourx1 puis pourx2, etc.). À mesure que des choix de la formexi=vsont faits, on peut propager ces décisions comme des contraintes. Si une décision provoque une contradiction, on l"annule ainsi que toutes les propagations qu"elle a engendré pour en faire une nouvelle : on parle debacktracking. On alterne les phases de décision, propagation,backtrackingjusqu"à avoir affecté
3 Preuve formelle de propagateurs flottants A. Correnson, F. Bobotune valeur à toutes les variables ou bien avoir testé toutes les décisions possibles sans succès.
En pratique on représente
Scomme une table qui associe à chaque expressioneapparaissant dans'des informations caractérisant une sur-approximation de son domaine d"appartenance. Ces informations peuvent être très simples (par exemple un intervalle d"appartenance) ou plus abstraites (par exemple une information de signe, un majorant, un bit connu, etc.) Intuitive-ment, toute donnée décrivant un ensemble de valeurs peut être utilisée. Toutefois, on souhaite
a minimapouvoir propager ces informations à l"aide de propagateurs de contraintes. Les travaux de Marie Pelleau et ses collaborateurs [ 13 ] ont déjà mis en avant un lien fort entre cette notion de domaine dans le contexte des solveurs CP et la notion de domaine abstrait issue de la discipline de l"interprétation abstraite [ 9 ]. Ce rapprochement donne un cadre théorique utile pour exprimer le comportement attendu des propagateurs de contraintes et ainsi élaborerleur preuve de correction. Nous rappelons à présent quelques définitions inspirées par ces travaux
et qui nous serviront par la suite de support pour la preuve de propagateurs flottants. Définition 2.1(Domaine abstrait sur un ensembleE).On appelle domaine abstrait sur l"en- sembleEla donnée d"un quadruplet(D;>;?; )où : -Dest un ensemble et :D! P(E)est une interprétation des éléments deDcomme des parties deE. -? 2Dreprésente l"ensemble vide ( (?) =;) et permet de caractériser les contradictions. -> 2DreprésenteE( (>) =E) et permet d"initialiser l"espace de recherche.Dans le contexte de la résolution de contraintes, on équipe également les domaines abstraits
avec les opérateurs suivants : Un op érateurd"in tersectionu:DD!Dqui permet de combiner deux informations connues sur une expression. P ourc haqueop érateurarithmétique :EE!E, un opérateur abstrait]:DD! Dqui permet d"assigner un domaine aux expressions arithmétiques. P ourc haquerelation binaire EE, un propagateur de contrainte:DD! DD. Il permet de raffiner les informations connues sur deux expressionse1ete2sous l"hypothèse quee1e2. Pour garantir la correction des solveurs, on impose que ces nouveaux opérateurs aient cer- taines propriétés. Hypothèse 2.1(Correction deu).Soientd1etd2deux éléments deDetxun élément deE, on impose que (d1)\ (d2) (d1ud2). Hypothèse 2.2(Correction des opérateurs).Soit:EE!Eet soientd1etd2deuxéléments deD, on impose quefxyjx2
(d1)^y2 (d2)g (d1]d2). Hypothèse 2.3(Correction des propagateurs).Soit EEune relation binaire, soient d1etd2deux éléments deD, soit(d01;d02) =(d1;d2)et soientxetydeux éléments deE, on
impose deux propriétés : -améliored1etd2: (d01) (d1)^ (d02) (d2) -respecte: Sixyalorsx2 (d01)^y2 (d02) Les propriétés de correction des propagateurs et des opérateurs abstraits assurent que leur utilisation permet toujours de calculer une sur-approximation de l"espace de recherche. Le fait que les propagateurs améliorent les domaines permet de garantir la convergence des solveurs : on ne fait jamais grossir l"espace de recherche en propageant une contrainte. 4 Preuve formelle de propagateurs flottants A. Correnson, F. Bobot2.1 Domaine d"intervalles
Pour illustrer la démarche adoptée pour le développement et la preuve d"un domaine abstrait,
nous prenons l"exemple des intervalles flottants. En présence de contraintes d"inégalités, ce
domaine abstrait s"avère très utile car il permet d"identifier rapidement des bornes inférieures
et supérieures pour chaque variable du problème à résoudre. Par exemple pour le problème
':=fx3^x4g, l"utilisation d"un domaine d"intervalles révèle immédiatement que'est insatisfiable après deux propagations : 1. On note dxle domaine dexet on initialisedx:=>=f1;+1g 2. On propage la con traintex3:dxdevientfst((dx;f3;3g)) =f1;3g 3. On propage la con traintex4:dxdevientfst((dx;f4;4g)) =?4.dx=?, sans possibilité debacktrackingla résolution prend fin et'est insatisfiable.
Dans les réels, il est d"usage de définir les intervalles comme des pairs(a;b)2R2. L"ensemble dénoté par l"intervalle(a;b)est ensuite défini commefx2Rjaxbg. Pour permettre unmeilleur découpage deRen intervalles, on prolonge généralement cette définition en autorisant
des bornes dansR:=R[ f1;+1get on distingue les bornes d"intervalles strictes et nonstrictes. Dans les flottants, les infinis sont des valeurs usuelles et peuvent donc être traitées
indistinctement des autres. De plus, la finitude des nombres flottants permet de définir lesopérateurs unairepredetsuccqui à tout flottant associe respectivement son prédécesseur et
son successeur autorisant ainsi à ramener les tests d"inégalités strictes à des tests d"inégalités
larges. Les notions de bornes strictes et non strictes peuvent donc être ignorées dans le cas flottant. La présence duNaNperturbe la définition des intervalles flottants. Rappelons que la valeur NaNn"est pas comparable, c"est à dire que8x2F;:(xNaN_NaNx)(avec 2 ff;f f;>f;=fg). Tout intervalle flottant ayant une borneNaNreprésente donc un intervalle vide et par conséquent il n"existe pas d"intervalle contenantNaN. Néanmoins, dans le contexte d"unsolveur, modéliser la possibilité qu"une expression puisse prendre la valeurNaNest utile. En effet
prendre en compte la valeurNaNpeut permettre de détecter des contradictions supplémentaireset donc d"accroître les capacités de résolution des solveurs. Par exemple, toute contrainte de la
formexNaNest insatisfiable et il est souhaitable qu"un domaine d"intervalle soit en mesure decapturer cette propriété. Pour prendre en compteNaN, nous étendons la définition des intervalles
flottants commeI(F) =F2bool. Un triplet(a;b;nan)2F2booldénote l"ensemblefx2Fjafxfb_(x=NaN^nan)g.
Nous définissons à présent les opérateursu,+]etassociés au domaine abstrait des intervalles et tels que spécifiés précédemment.Définition 2.2(Concrétisation).Les éléments deI(F)peuvent être interprétés comme des
parties deFpar la fonction de concrétisation définie comme : ((a;b;nan)):=fx2Fjaxb_(x=NaN^nan)g Définition 2.3(Intersection).L"intersection peut se définir de la façon suivante : (a;b;nan)u(a0;b0;nan"):= (max(a;a0);min(b;b0);nan^nan") Théorème 2.1(Correction et précision de l"intersection).Soientd1;d2deux intervalles deI(F), alors :
correction : 8x2F;x2 (d1)^x2 (d2))x2 (d1ud2) précision : 8x2 (d1ud2);x2 (d1)^x2 (d2) 5 Preuve formelle de propagateurs flottants A. Correnson, F. BobotDémonstration.Par analyse de cas sur les valeurs nan et nan", et à l"aide des propriétés dumax
et duminon obtient la précision et la correction deu.Définition 2.4(Opérateurs abstraits).Les opérateurs abstraits]s"obtiennent à partir des
opérateurs binaires. Nous prenons l"exemple de l"addition : (a;b;n) +](a0;b0;n0):= (afa0;bfb0;n_n0__ x2fa;a0g y2fb;b0gsum-to-nan(x;y)) avec sum-to-nan(x;y)si et seulement sixfy=NaNc"est à dire sixetysont deux infinis opposés ou si l"une des deux valeurs estNaN. Théorème 2.2(Correction de l"addition abstraite).Soientd1;d2deux intervalles deI(F), alors8(x;y)2F2;x2
(d1)^y2 (d2) =)xfy2 (d1+]d2) Démonstration.Soientd1= (a;b;nan)etd2= (a0;b0;nan"), on raisonne par analyse de cas selon que les bornesa,a0,b,b0et la sommexfysoientNaN,1, ou des valeurs finies. Dans les cas où les trois sommesafa0,xfyetbfb0sont différentes deNaN, la monotonie de l"addition flottante s"applique (voir 3.2 ) et on peut déduire des hypothèses queafa0fxfyfbfb0 et donc quexfy2 (d1+]d2). Dans les autres cas, les règles de l"arithmétique flottante pourles valeurs spéciales s"appliquent et la preuve s"achève par simple calcul.Les propagateurs de contraintespeuvent être définis en deux temps. Dans un premier
temps nous définissons un opérateur:D!Dqui calcule le domaine des candidats à la satisfaction de la relationpar rapport à un domaine donné. Formellement on souhaite que (d) fy2Fj 9x2 (d);yxg. Par exemple pour les comparaisons flottantesfetfon a : (a;b;nan):=ifbdomaines flottants de Verasco sont développés dans le contexte de la vérification par interpré-
tation abstraite et ne traitent que des flottants de format32ou64bits. L"implémentation que nous proposons est générique pour tout format flottant.2.2 Correction complète d"un solveur CP
La correction des propagateurs ne suffit pas à assurer la correction complète d"un solveurCP. En effet, d"autres paramètres sont à considérer dont notamment la terminaison. De même,
il faut s"assurer que l"algorithme qui orchestre la résolution fait une utilisation raisonnable des
propagateurs. La démarche de prouver formellement l"algorithme de résolution de Colibri2 adéjà été amorcée mais nous ne détaillerons pas ici ces aspects. Notons toutefois que la preuve
de correction et de terminaison d"un algorithme de résolution de contraintes requiert que lespropagateurs utilisés soient corrects et, à ce titre, notre démarche constitue déjà une étape
importante dans l"élaboration d"une telle preuve. Prouver formellement un algorithme de résolution de contraintes dans un assistant à la démonstration ou tout autre outil de vérification formelle (comme Why3 par exemple [ 5 ]) re-présente un coût de développement conséquent. De ce fait, les fragments entièrement prouvés
de Colibri2 sont modestes et fournissent un moteur de résolution correct mais peu puissant. Enprouvant les propagateurs séparément, les mêmes propagateurs prouvés peuvent-être utilisés
aussi bien dans un algorithme de résolution entièrement formalisé (auquel cas, les preuves de
correction des propagateurs jouent un rôle dans la preuve de correction du solveur entier), quedans un algorithme de résolution plus avancé pour lequel on tolère l"absence d"une preuve de
correction complète (dans ce cas, la simple correction des propagateurs donne déjà des garanties
fortes).3 Formalisation Coq des nombres flottants
3.1 La bibliothèque Flocq
Nous souhaitons intégrer au solveur Colibri2 un support minimal pour la théorie des nombresflottants. Nous proposons à cet effet une implémentation Coq du domaine d"intervalles flottants
présenté dans la partie 2.1 . Cette implémentation est ensuite traduite en code exécutable afind"être intégrée dans les sources du solveur. Pour atteindre ces objectifs, nous avons besoin
d"une modélisation des nombres flottants au sein de l"assistant de preuve Coq. Cette mêmemodélisation sera utilisée dans les preuves mais également comme implémentation de référence
de l"arithmétique flottante. Utiliser la même modélisation des flottants pour la preuve et pour
le calcul permet d"assurer que les propriétés établies en Coq sont préservées après extraction
(sous l"hypothèse que le mécanisme d"extraction vers OCaml de Coq est correcte). Une modélisation des flottants.Le standard IEEE-754 donne une définition très com- plète des nombres flottants qui convient parfaitement comme guide pour l"implémentation d"unearithmétique flottante en machine. Néanmoins une représentation binaire est assez peu adaptée
7 Preuve formelle de propagateurs flottants A. Correnson, F. Bobot pour formaliser la notion de nombre flottant dans un assistant à la démonstration. Pour per- mettre à la fois des raisonnements formels plus simples sur les nombres flottants et des calculs effectifs au sein d"un assistant à la démonstration, la bibliothèque Coq Flocq [ 8 ] propose un compromis et fournit une implémentation des flottants comme des nombres de la formem2e.Cette modélisation des nombres flottants est prouvée correcte vis à vis du standard IEEE-754
et peut être extraite vers un module OCaml fiable pour le calcul flottant. Ces propriétés font
donc de Flocq un outil de choix pour la suite des travaux présentés dans cet article. Opérateurs flottants.Flocq fournit un type flottantbinary_floatparamétré par une pré- cision et un exposant maximal (l"exposant minimal est déduit à partir de l"exposant maximal et de la précision tel que décrit dans le standard IEEE-754). Le typebinary_floatest défini comme un type algébrique avec un constructeur pour chacune des valeurs spéciales (NaN,0,1) et un constructeur pour tous les flottants finis de la formem2e. Cette modélisation permet
de réduire les démonstrations en arithmétique flottante à une analyse de cas sur la forme des
flottants considérés.Les opérateurs usuels paramétrés par un mode d"arrondi sont également fournis. Par soucis
de simplicité, nous omettrons les paramètres correspondant au format dans les échantillons de
code Coq et nous noterons simplementfloatpour désigner le type des flottants dans un format fixé. En suivant cette convention, on considère les opérateurs suivants : relations binairesBeqb, Bleb, Bltb : float -> float -> bool addition flottanteBplus : mode -> float -> float -> float constanteNaN NaN : float constantes infiniesB754_infinity : bool -> float projection dans les réelsB2R : float -> R opérateur d"arrondi générique1round : mode -> R -> R
3.2 Monotonie : un réel problème de sémantique
Établir la preuve formelle d"un théorème en Coq est souvent une tâche longue et difficile, en
particulier lorsque les preuves impliquent de mobiliser des résultats d"arithmétique eta fortiori
d"arithmétique flottante. La preuve de correction d"opérateurs sur les domaine abstraits est très
consommatrice de ce type de résultats et en particulier de théorèmes de monotonie qui assurent
la préservation de la relationBlebà travers les opérations arithmétiques. Ces théorèmes sont
triviaux dansRmais plus difficiles à formuler voire même faux dans les flottants. La monotonie de l"addition réelle par exemple assure que8(x;y;z)2R3;xy!x+zy+z, mais la valeurNaNne pouvant être comparée, il s"ensuit que ce résultat est faux dans les flottants. En effet, pour
x=1,y= +1,z= +1, on a bienxfymaisxfz=NaNet donc:(xfzfyfz).Pour des raisons similaires, la plupart des résultats d"arithmétique flottante sont conditionnés
par des hypothèses spécifiques sur les opérandes. Ainsi la monotonie de l"addition dansFse ré-exprime de la façon suivante : Théorème 3.1(Monotonie de l"addition flottante).Soitmun mode d"arrondi etx;y;x0;y0quatre flottants. Sixmfx06=NaN,ymfy06=NaN,xfyetx0fy0alorsxmfx0fymfy0.1. On pourrait s"attendre à ce qu"un opérateur d"arrondi soit de signatureR!F, mais une telle définition
ne serait pas calculable car les réels ne sont pas représentables en machine. En revanche, une axiomatisation des
réels suffit pour l"écriture de spécifications.quotesdbs_dbs28.pdfusesText_34[PDF] complexité algorithmique cours
[PDF] système de congruence exercice
[PDF] résoudre équation congruence
[PDF] exercice congruence
[PDF] théorème chinois pdf
[PDF] resoudre systeme congruence
[PDF] calcul consommation ampoule 100w
[PDF] consommation ampoule 60w
[PDF] combien coute une ampoule allumée
[PDF] calcul consommation ampoule led
[PDF] lumiere allumée toute la nuit consommation
[PDF] calcul de consommation électrique d'un appareil
[PDF] consommation ventilateur 40w
[PDF] consommation congelateur ancien