Notes d'informatique théorique.
L'interprétation abstraite est une théorie qui s'intéresse notamment à l'analyse de programmes informatiques au moyen d'approximations de leur comportement. Certes. Pourquoi est-ce qu'on se ferait chier avec ça ?
D'abord, pourquoi aurions-nous besoin d'analyser des programmes informatiques ?
Parmi les nombreux systèmes (partiellement) informatisés, il en existe une certaine classe pour lesquels
il est important de donner des garanties de sureté. Ce sont les systèmes critiques, que l'on croise
dans les contextes qui mettent des vies en jeu : l'aviation, l'éarospatiale, les systèmes de défense
militaires, les projets liés aux énergies, comme les centrales nucléaires, les systèmes pour le médical...
Le but est alors de trouver un moyen de savoir décrire avec précision le comportement de tels systèmes et
de garantir à un certain niveau qu'ils répondent à des critères de sureté qu'on leur impose.
Mais pourquoi aurions-nous besoin d'approximer le comportement de tels systèmes ?
La réponse originelle se trouve dans l'énoncé du théorème de Rice. On peut en trouver de
plusieurs versions, qui correspondent à différents usages.
Une première version qui parle essentiellement de machines de Turing, que l'on trouve couramment dans
un cours de calculabilité ou sur wikipédia :
Pour toute propriété non triviale $P$ sur les langages récursivement énumérables, le problème de savoir si le langage $\mathcal{L}(\mathcal{M})$ d'une machine de Turing $\mathcal{M}$ vérifie $P$ ou non est indécidable.
Une autre version, orientée génie logiciel, provenant du cours de sémantique de l'ENS qui attire particulièrement notre attention :
Considering a Turing complete language, any non trivial semantic specification is not computable.
Désobfusquons ces énoncés :
Ce théorème est une véritable barrière aux barreaux d'aciers pour les tentatives d'analyse de programmes informatiques, puisqu'il établit l'impossibilité de trouver une méthode qui montre qu'un programme vérifie une propriété P non triviale, et qui soit à la fois :
Mais comme toute barrière, elle n'est pas complètement opaque. Nous distinguons certaines allures au travers de ses barreaux.
Ne pourrions nous pas tenter de déployer notre force de réflexion, sans pour autant passer la barrière ?
Nos chercheurs et nos ingénieurs ont construit et exploré de nombreuses méthodes d'analyse partielle qui ont chacunes leurs avantages et leurs faiblesses. Les trois grandes méthodes de vérification formelle qui sont encore de nos jours étudiées par les chercheurs sont les suivantes :