Découvrez ce podcast, et bien plus encore

Profitez gratuitement des podcasts sans abonnement. Nous offrons également des livres électroniques, des livres audio et bien plus encore, pour seulement $11.99/mois.

05 - Prouver les programmes : pourquoi, quand, comment ?

05 - Prouver les programmes : pourquoi, quand, comment ?

DeAlgorithmes, machines et langages - Gérard Berry


05 - Prouver les programmes : pourquoi, quand, comment ?

DeAlgorithmes, machines et langages - Gérard Berry

évaluations:
Longueur:
63 minutes
Sortie:
25 mars 2015
Format:
Épisode de podcast

Description

Gérard BerryAlgorithmes, machines et langagesAnnée 2014-2015Prouver les programmes : pourquoi, quand, comment ?Cinquième leçon : La vérification de modèles (model-checking)Ce cours termine la présentation générale des méthodes de vérification formelle par la vérification de modèles, plus connue sous son nom anglais original de model-checking. Cette méthode est bien différente des précédentes car elle s'intéresse essentiellement aux programmes d'états finis, ceux dont on peut au moins conceptuellement dérouler complètement toutes les exécutions possibles en temps et espace fini. De plus, contrairement aux méthodes précédemment décrites, le model-checking s'intéresse principalement aux programmes parallèles. Le parallélisme peut y être synchrone comme dans les circuits ou les langages synchrones présentés les années précédentes, ou asynchrones comme dans les protocoles de communication, les réseaux et les algorithmes distribués. Le model-checking est né au début des années 1980, quasi-simultanément en deux endroits : Grenoble avec J-P. Queille et J. Sifakis, qui ont développé le système CESAR et sa logique temporelle, et les USA avec E. Clarke et E. Emerson qui ont développé la logique temporelle CTL et le système EMV. Ces travaux ont donné le prix Turing 2007 à Clarke, Emerson et Sifakis. Ils s'appuyaient eux-mêmes sur les travaux d'Amir Pnueli (prix Turing en 1996) sur la logique temporelle. Le model-checking s'est considérablement développé ensuite, et constitue certainement la méthode formelle la plus utilisée dans l'industrie, en particulier dans la CAO de circuits.L'idée de base est de construire le graphe de toutes les exécutions possibles d'un programme, qu'on appelle son modèle. Ce modèle peut prendre la forme d'une structure de Kripke (logicien et philosophe de la logique modale), c'est-à-dire d'un graphe où les états sont étiquetés par des prédicats élémentaires, ou encore d'une structure de transitions, où les étiquettes sont portées par les transitions entre états. Une fois construit, le modèle devient indépendant du langage qui l'a engendré. Pour raisonner sur un modèle, un moyen très répandu est l'utilisation de logiques temporelles, définissent les propriétés temporelles à l'aide de propriétés élémentaires des états ou transitions et de quantificateurs sur les états ou les chemins de son graphe. On peut ainsi exprimer et vérifier des propriétés de sûreté (absence de bugs), comme « à aucun moment l'ascenseur ne peut voyager la porte ouverte », d'absence de blocages de l'exécution, ou de vivacité, comme « l'ascenseur finira par répondre à toutes les demandes des passagers » ou encore « chaque processus obtiendra infiniment souvent la ressource partagée s'il la demande infiniment souvent ».Nous présenterons d'abord la logique CTL*, la plus générale, qui permet d'imbriquer arbitrairement les quantifications d'états et de chemin sur les structures de Kripke. Mais cette logique très expressive est difficile à utiliser et les calculs y sont d'un coût prohibitif. Deux sous-logiques différentes sont utilisées : LTL (Linear Temporal Logic), qui ne quantifie pas sur les états et considère donc seulement des traces linéaires, et CTL, logique arborescente qui permet de quantifier sur les chemins mais avec des restrictions par rapport à CTL*. Ces deux logiques sont d'expressivités différentes et ont chacune des avantages et des inconvénients que nous discuterons brièvement. LTL est la logique la mieux adaptées pour la vérification de propriétés de vivacité, comme le montre L. Lamport (prix Turing 2014) avec son système TLA+. Mais, au contraire, elle ne permet pas d'exprimer des prédicats sur l'existence de calculs particuliers.La modélisation par systèmes de transitions, systématisée par R. Milner (prix Turing 1992) dans l'étude des calculs de processus communicants, permet de bien mieux composer les exécutions de ces processus parallèles. Une notion fondamentale introduite par Milner est la bisimulation, équivalence comportem
Sortie:
25 mars 2015
Format:
Épisode de podcast

Titres dans cette série (30)

Ancien élève de l'École polytechnique, ingénieur général du Corps des mines, membre de l'Académie des science, de l'Académie des technologies et de l'Academia Europaea, chercheur à l'École des mines de Paris et à l'INRIA de 1970 à 2000, Directeur scientifique d'Esterel Technologies de 2001 à 2009, Gérard Berry est actuellement chercheur à l'Institut National de Recherche en Informatique et Automatique (INRIA) et président de la commission d'évaluation de cet institut. Sa contribution scientifique concerne trois principaux sujets : le lambda calcul et la sémantique formelle des langages de programmation, la programmation parallèle et temps réel, et la conception assistée par ordinateur de circuits intégrés. Il est le créateur du langage de programmation Esterel.