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.

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

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

DeAlgorithmes, machines et langages - Gérard Berry


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

DeAlgorithmes, machines et langages - Gérard Berry

évaluations:
Longueur:
70 minutes
Sortie:
1 avr. 2015
Format:
Épisode de podcast

Description

Gérard BerryAlgorithmes, machines et langagesAnnée 2014-2015Prouver les programmes : pourquoi, quand, comment ?Sixième leçon : Vérification et optimisation booléennes d'automates et circuitsCe dernier cours de 2014-2015 introduit les méthodes implicites de manipulation de systèmes de transitions, à travers les méthodes de calcul booléen utilisées à la fois pour la vérification formelles et pour l'optimisation de circuits électroniques et de programmes qui peuvent se réduire au calcul booléen.Ces méthodes ont révolutionné le domaine en permettant des vérifications formelles de systèmes dont le calcul explicite des états et transitions est impossible, car la taille des formules manipulées par les méthodes implicites est largement indépendante de celle des systèmes qu'ils décrivent. Nous expliquons d'abord les codages booléens d'ensembles, de relations et de fonctions, et montrons comment calculer l'image directe et l'image inverse de sous-ensembles par des fonctions. Nous étudions ensuite les codages booléens d'automates déterministes et non-déterministes, ainsi que leurs implémentations en circuits électroniques. Nous rappelons le fait que le circuit canoniquement associé à un automate non-déterministe est lui déterministe comme tous les circuits combinatoirement acycliques, ce qui montre clairement que le qualificatif « non-déterminisme » est particulièrement mal choisi : en vérification booléenne comme en optimisation de circuits, il est inutile de déterminiser les automates, et c'est souvent nuisible à cause de l'explosion exponentielle que la déterminisation peut produire. Nous montrons comment la vérification formelle de propriétés de sûreté définies par des observateurs se réduit au calcul des états accessibles, et comment effectuer ce calcul de manière implicite. Nous introduisons la première structure fondamentale du calcul booléen, les Binary Decision Diagrams, développés par R. Bryant au milieu des années 1980 (et indépendamment par J-P. Billion chez Bull en France), et expliquons pourquoi ils permettent de faire les calculs nécessaires au passage à la grande échelle; nous mentionnons leurs limitations, qui sont inévitables car le calcul booléen est NP-complet. Les BDDs seront étudiés beaucoup plus en profondeur dans le cours 2015-2015.Pour terminer, nous montrons que le codage booléen permet de réaliser des optimisations très efficaces des circuits engendrés par les programmes Esterel. Nous insistons sur le fait que la structure du langage source et la façon d'y programmer les applications sont essentiels pour la qualité de l'optimisation finale : c'est grâce à l'interaction de la séquence, du parallélisme et de la préemption hiérarchique des comportements que les circuits engendrés par Esterel sont systématiquement meilleurs que ceux programmés et optimisés par les méthodes classiques, au moins en ce qui concerne leurs parties contrôle.
Sortie:
1 avr. 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.