./55,
./63: je voulais signifier par là qu'une suite de tests ne permet de trouver que ce qui ne fonctionnerait pas, mais absolument pas de prouver qu'un programme est correct (ou complet, d'ailleurs)

On m'apprend en classe que vérifier la conformité à une spec en utilisant des tests, ce qui est nécessaire, mais:
* à cause notamment de l'explosion combinatoire, la suite de tests ne peut en général pas avoir une couverture de 100% du critère le plus restrictif (j'ai encore oublié son nom...);
* une spec n'a à peu près aucune chance d'être complète, ou bien elle peut contenir des âneries, etc.
Les langages formels, associés à des compilos certifiés, ont plus de chances de donner du code correct - mais encore faut-il avoir spécifié correctement. [EDIT: et puis ça coûte plus cher de faire du formel... ce qui rend encore moins populaire cette façon de faire]
> mais rien de prouvé à ma connaissance pour une utilisation dans la vraie vie
Si tu parles des machines de vote, les travaux des chercheurs de Princeton, Felten et Halderman, sont convaincants: un individu laissé tout seul avec la machine Diebold pendant 3 minutes, sans surveillance, peut l'ouvrir avec une clé type "hotel minibar" (et on pouvait, jusqu'à ce que l'affaire soit signalée, trouver un screenshot de l'empreinte de la clé sur le site de Diebold !!), mettre un chip contenant un code non signé (et potentiellement malicieux) qui prend le pas sur le code d'élection normal.
Or, les chercheurs écrivent que les "election workers" qu'ils ont interviewés ont à peu près tous été laissés 3 minutes tous seuls sans surveillance avec la machine...
C'est donc utilisable dans la vraie vie.