← Retour

Introduction aux Méthodes Formelles

par: M Mezghiche
Disponible
Pages 102
Dimensions 16*23.5
Publication 2023-03-05
Éditeur —
Papier : 950.00 DA Numérique: 475.00 DA

LE développement de programmes sûrs exempts d’erreurs s’avère, depuis quelques années, incontournable. Par exemple, les programmes embarqués dans des avions, fusées, dans les voitures ou même dans des appareils domestiques peuvent, s’ils ont des bogues, être la cause de perte de vies humaines, compromettre les objectifs d’un projet important ou conduire à des faillites financières d’entreprises. Tous ces problèmes ont poussé à mettre au point et proposer des approches qui garantissent la construction des programmes répondant rigoureusement aux spécifica- tions imposées et validées ensuite par des méthodes mathématiques. Les méthodes formelles de validation des programmes ont constituées une des approches la plus appropriée pour la validation des propriétés des programmes. L’idée, qui s’est révèlée particulièrement fructueuse, a été celle de considérer que l’activité de programmer ne diffère pas de celle de prouver formellement des propriétés. Construire un programme revient, alors, tout simplement à prouver la cohérence de sa spécification. La garantie de sûreté sera donc assurée par la preuve mathématique de la spécification de l’application à développer. L’etude du λ -calcul et de la théorie des types a permis de construire des systèmes et des assistants de preuve qui offrent la possibilité d’une part, de valider de façon rigoureuse des spécifications et des propriétés de programmes et d’autre part, permettre l’extraction automatique de programme à partir de la preuve de sa spécification. L’objectif de ce cours, prodigué aux étudiants de Master 2 informatique, est de les initier à ces techniques fort utiles pour ceux qui souhaitent approfondir leurs connaissances de ce domaine qui suscite de plus en plus d’interêts chez les chercheurs et aussi les industriels (voir [10]). Nous avons aussi estimé utile, après avoir introduit le λ -calcul et les différents systèmes de types, de présenter une introduction succincte de l’assistant de preuve Coq. Deux exemples illustrent aussi comment utiliser ce système pour les spécifications et l’extraction des programmes. Aucun prérequis n’est exigé pour aborder les notions abordées dans ce cours, excepté des connaissances élémentaires en logique. Il est accessible aux étudiants de licence informatique ou de mathématiques. Il peut aussi intéresser les enseignants curieux ou souhaitant s’initier aux assistants de preuve qui prennent,actuellement, une place très importante dans les domaines de l’informatique et aussi des mathématiques.

Afficher la table des matières
1 Une brève introduction au λ-calcul (5)
1.1 Syntaxe, β-réduction, β-conversion (5)
1.2 βη-réduction (8)
1.3 La logique combinatoire (9)
1.3.1 Réduction faible, égalité faible (10)
1.4 Abstraction (Complétude fonctionnelle) (11)
1.5 Cβη-réduction et extensionnalité (12)
1.6 Calculabilité et λ-calcul (13)
1.7 Programmes = λ-termes (16)
1.8 Implémentation de la réduction (17)
1.9 Exercices (19)
2 λ-calcul simplement typé (21)
2.1 Langage des types (21)
2.2 Système de Type simple : λ→ ou Système de Curry (22)
2.3 Réduction dans le lambda-calcul typé (25)
2.4 Exercices (27)
3 Logique constructive (29)
3.1 Logique constructive, Déduction naturelle (29)
3.1.1 Sémantique des propositions (30)
3.1.2 Déduction naturelle (31)
3.2 Exercices (34)
4 Système de types polymorphes (35)
4.1 Système polymorphe du second ordre : λ2 (35)
4.1.1 Les connecteurs logiques : les types simples (37)
4.1.2 Les types inductifs (40)
4.1.3 Représentation des structures de données : les listes (43)
4.1.4 Exercices (45)
5 Extension du système polymorphe de type (47)
5.1 Théorie Fω (47)
5.2 Le système λω (48)
5.3 Définition formelle de Fω (49)
5.3.1 Les types inductifs dans Fω (51)
5.3.2 Représentation des listes dans Fω (52)
5.3.3 Exercices (53)
6 Types dépendants (55)
6.1 λP (55)
6.1.1 Exercices (58)
7 Théorie des constructions (59)
7.1 Théorie des constructions (59)
7.2 Représentation de la logique (61)
7.2.1 Représentation de l'arithmétique (63)
7.2.2 Les listes (66)
7.3 Calcul des constructions inductives (67)
7.4 Les définitions inductives (69)
8 Introduction à l'assistant de preuve Coq (71)
8.1 Introduction (71)
8.2 Le système Coq (72)
8.2.1 L'interface CoqIDE (72)
8.3 Les composants essentiels de Coq (75)
8.4 Le langage de spécification Gallina (75)
8.4.1 Syntaxe (76)
8.4.2 Les définitions de types inductifs (77)
8.4.3 Les propriétés à démontrer (78)
8.4.4 Exemples de commandes (79)
8.5 La démonstration des propriétés par des tactiques (79)
8.6 Exemples de spécification dans Coq (82)
8.6.1 Spécification de la division euclidienne (82)
8.6.2 Spécification de la fonction de traduction des λ-termes en CL-termes (86)
8.6.3 Sa spécification dans l'assistant de preuve Coq (87)
9 Réponses aux exercices proposés (93)
9.1 Chapitre 1 (93)
9.2 Chapitre 2 (94)
9.3 Chapitre 3 (95)
9.4 Chapitre 4 (page number missing in the text)
9.5 Chapitre 5 (page number missing in the text)

Avis des lecteurs

Aucun avis pour le moment.