Taking architecture and compiler into account in formal proofs of numerical programs

Sur des architectures récentes, un programme numérique peut donner des réponses différentes en fonction du hardware et du compilateur. Ces incohérences des résultats viennent du fait que chaque calcul en virgule flottante est effectué avec des précisions différentes. Le but de cette thèse est de pro...

Full description

Bibliographic Details
Main Author: Nguyen, Thi Minh Tuyen
Other Authors: Paris 11
Language:en
Published: 2012
Subjects:
Online Access:http://www.theses.fr/2012PA112090/document
id ndltd-theses.fr-2012PA112090
record_format oai_dc
spelling ndltd-theses.fr-2012PA1120902019-06-26T04:23:56Z Taking architecture and compiler into account in formal proofs of numerical programs Preuves formelles de programmes numériques en prenant en compte l'architecture et le compilateur Arithmétique en virgule flottante Programmes numériques Analyse statique Optimisations à la compilation Plate-forme Why Plate-forme Frama-C Floating-point arithmetic Numerical programs Static analysis Compile-time optimizations The Why platform The Frama-C platform Sur des architectures récentes, un programme numérique peut donner des réponses différentes en fonction du hardware et du compilateur. Ces incohérences des résultats viennent du fait que chaque calcul en virgule flottante est effectué avec des précisions différentes. Le but de cette thèse est de prouver formellement des propriétés des programmes opérant sur des nombres flottants en prenant en compte l’architecture et le compilateur. Pour le faire, nous avons proposé deux approches différentes. La première approche est de prouver des propriétés des programmes en virgule flottante qui sont vraies sur plusieurs architectures et compilateurs. Cette approche ne considère que les erreurs d’arrondi qui doivent être validées quels que soient l’environnement matériel et le choix du compilateur. Elle est implantée dans la plate-forme Frama-C pour l’analyse statique de code C. La deuxième approche consiste à prouver des propriétés des programmes en analysant leur code assembleur. Nous nous concentrons sur des problèmes et des pièges qui apparaissent sur des calculs en virgule flottante. L’analyse directe du code assembleur nous permet de considérer des caratéristiques dépendant de l’architecture ou du compilateur telle que l’utilisation des registres en précision étendue. Cette approche est implantée comme une sur-couche de la plate-forme Why pour la vérification déductive. On some recently developed architectures, a numerical program may give different answers depending on the execution hardware and the compilation. These discrepancies of the results come from the fact that each floating-point computation is calculated with different precisions. The goal of this thesis is to formally prove properties about numerical programs while taking the architecture and the compiler into account. In order to do that, we propose two different approaches. The first approach is to prove properties of floating-point programs that are true for multiple architectures and compilers. This approach states the rounding error of each floating-point computation whatever the environment and the compiler choices. It is implemented in the Frama-C platform for static analysis of C code. The second approach is to prove behavioral properties of numerical programs by analyzing their compiled assembly code. We focus on the issues and traps that may arise on floating-point computations. Direct analysis of the assembly code allows us to take into account architecture- or compiler-dependent features such as the possible use of extended precision registers. It is implemented above the Why platform for deductive verification Electronic Thesis or Dissertation Text Image en http://www.theses.fr/2012PA112090/document Nguyen, Thi Minh Tuyen 2012-06-11 Paris 11 Marché, Claude Boldo, Sylvie
collection NDLTD
language en
sources NDLTD
topic Arithmétique en virgule flottante
Programmes numériques
Analyse statique
Optimisations à la compilation
Plate-forme Why
Plate-forme Frama-C
Floating-point arithmetic
Numerical programs
Static analysis
Compile-time optimizations
The Why platform
The Frama-C platform

spellingShingle Arithmétique en virgule flottante
Programmes numériques
Analyse statique
Optimisations à la compilation
Plate-forme Why
Plate-forme Frama-C
Floating-point arithmetic
Numerical programs
Static analysis
Compile-time optimizations
The Why platform
The Frama-C platform

Nguyen, Thi Minh Tuyen
Taking architecture and compiler into account in formal proofs of numerical programs
description Sur des architectures récentes, un programme numérique peut donner des réponses différentes en fonction du hardware et du compilateur. Ces incohérences des résultats viennent du fait que chaque calcul en virgule flottante est effectué avec des précisions différentes. Le but de cette thèse est de prouver formellement des propriétés des programmes opérant sur des nombres flottants en prenant en compte l’architecture et le compilateur. Pour le faire, nous avons proposé deux approches différentes. La première approche est de prouver des propriétés des programmes en virgule flottante qui sont vraies sur plusieurs architectures et compilateurs. Cette approche ne considère que les erreurs d’arrondi qui doivent être validées quels que soient l’environnement matériel et le choix du compilateur. Elle est implantée dans la plate-forme Frama-C pour l’analyse statique de code C. La deuxième approche consiste à prouver des propriétés des programmes en analysant leur code assembleur. Nous nous concentrons sur des problèmes et des pièges qui apparaissent sur des calculs en virgule flottante. L’analyse directe du code assembleur nous permet de considérer des caratéristiques dépendant de l’architecture ou du compilateur telle que l’utilisation des registres en précision étendue. Cette approche est implantée comme une sur-couche de la plate-forme Why pour la vérification déductive. === On some recently developed architectures, a numerical program may give different answers depending on the execution hardware and the compilation. These discrepancies of the results come from the fact that each floating-point computation is calculated with different precisions. The goal of this thesis is to formally prove properties about numerical programs while taking the architecture and the compiler into account. In order to do that, we propose two different approaches. The first approach is to prove properties of floating-point programs that are true for multiple architectures and compilers. This approach states the rounding error of each floating-point computation whatever the environment and the compiler choices. It is implemented in the Frama-C platform for static analysis of C code. The second approach is to prove behavioral properties of numerical programs by analyzing their compiled assembly code. We focus on the issues and traps that may arise on floating-point computations. Direct analysis of the assembly code allows us to take into account architecture- or compiler-dependent features such as the possible use of extended precision registers. It is implemented above the Why platform for deductive verification
author2 Paris 11
author_facet Paris 11
Nguyen, Thi Minh Tuyen
author Nguyen, Thi Minh Tuyen
author_sort Nguyen, Thi Minh Tuyen
title Taking architecture and compiler into account in formal proofs of numerical programs
title_short Taking architecture and compiler into account in formal proofs of numerical programs
title_full Taking architecture and compiler into account in formal proofs of numerical programs
title_fullStr Taking architecture and compiler into account in formal proofs of numerical programs
title_full_unstemmed Taking architecture and compiler into account in formal proofs of numerical programs
title_sort taking architecture and compiler into account in formal proofs of numerical programs
publishDate 2012
url http://www.theses.fr/2012PA112090/document
work_keys_str_mv AT nguyenthiminhtuyen takingarchitectureandcompilerintoaccountinformalproofsofnumericalprograms
AT nguyenthiminhtuyen preuvesformellesdeprogrammesnumeriquesenprenantencomptelarchitectureetlecompilateur
_version_ 1719209328317038592