Vérification de bout en bout d'une fonction de bibliothèque mathématique
Résumé
Il est difficile de trouver des approximations flottantes de fonctions mathématiques qui soient à la fois efficaces et précises. Le code d'une telle fonction est souvent complexe et sujet à l'erreur, ce qui incite à l'utilisation de méthodes formelles, en particulier la preuve formelle, pour augmenter le niveau de confiance. Malheureusement, le manque d'automatisation ou le manque d'articulation entre l'automatisation et la partie manuelle de la preuve font que ce procédé est trop coûteux en pratique. Dans cet article, qui résume deux publications antérieures, nous revisitons ce problème en proposant une méthodologie et une automatisation dédiée, que nous appliquons à la preuve d'une approximation de l'exponentielle sur les flottants en double précision. La particularité de cet exemple est qu'il ne s'agit pas d'une simple modélisation d'un code externe, mais d'une véritable fonction flottante, définie dans la logique de Coq, que nous pouvons utiliser dans les preuves une fois que sa correction a été formellement vérifiée. Cette fonction présente toutes les caractéristiques d'une fonction de l'état de l'art : manipulation de bits, tableaux de constantes, exploitation des subtilités de l'arithmétique flottante, valeurs exceptionnelles, etc. Cette fonction a été intégrée aux stratégies de preuve de la bibliothèque CoqInterval et est vingt fois plus rapide que la précédente version.
1. Cette preuve a été écrite par Laurence Rideau et Laurent Théry et est disponible au lien suivant : https://github.com/thery/ExpFloat/blob/master/algoP1.v 2. Pour un flottant fini x, nous désignons également par x la valeur réelle correspondante.
Domaines
Informatique [cs]Origine | Fichiers produits par l'(les) auteur(s) |
---|