Outils de preuve et v´
erification
Pierre Courtieu
26 mars 2013
1
2
Table des mati`
eres
1 Pr´
eambule 5
1.1 Rappelsdelogique ....................................... 5
I Preuve de programmes fonctionnels (NFP119)7
2 Introduction 9
2.1 Motivations ........................................... 9
2.2 Rappels de programmation fonctionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Ordre sup´
erieure : Les fonctions sont des valeurs comme les autres ........ 11
2.2.2 Polymorphisme : Ne pas restreindre les type des fonctions inutilement ...... 12
2.3 Propri´
et´
es sur les programmes fonctionnels . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Valeurs d´
efinies, valeurs ind´
enies............................... 13
2.5 ´
Equationdeprogramme..................................... 14
2.6 Premi`
erespreuvesdeprogrammes ............................... 14
3 Ensembles, relations, fonctions, ordres 17
3.1 Notationslogiques ....................................... 17
3.2 Ensembles............................................ 17
3.3 Relations ............................................ 18
3.4 Fonctions ............................................ 18
3.5 Ordres.............................................. 19
3.5.1 D´
enitions ....................................... 19
3.5.2 Ordres bien fond´
es ................................... 20
4 R´
ecurrence et induction 23
4.1 R´
ecurrence faible...................................... 23
4.2 R´
ecurrence forte....................................... 23
4.3 Induction ............................................ 24
4.3.1 Ensemble d´
efini par induction - intuition . . . . . . . . . . . . . . . . . . . . . . . 24
4.3.2 Ensemble d´
efini par induction - d´
enition....................... 25
4.3.3 Raisonnement par induction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.3.4 Raisonnement par induction bien fond´
ee........................ 27
5 S´
emantique des programmes fonctionnels 29
3
TABLE DES MATI `
ERES TABLE DES MATI `
ERES
6 Preuves de programmes fonctionnels 31
6.1 Exemple............................................. 31
6.2 Exercices ............................................ 31
II Preuve de programmes imp´
eratifs (NFP209)37
7 Introduction 39
8 Syst`
emes logiques 41
8.1 Les r`
egles d’inf´
erence...................................... 41
8.2 Arbre de d´
eduction ....................................... 42
9 S´
emantique des programmes imp´
eratifs 45
10 La logique de Hoare 47
10.1LestripletsdeHoare ...................................... 47
10.2 Correction d’un triplet de Hoare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
10.3Lesinstructions......................................... 48
10.4Lesassertions.......................................... 49
10.5 Les r`
eglesdeHoare....................................... 49
10.5.1 Affectation ....................................... 50
10.5.2 S´
equence ........................................ 51
10.5.3 Cons´
equence ...................................... 52
10.5.4 Conditionnelle ..................................... 53
10.5.5 While.......................................... 53
10.5.6 While avec variant (correction totale) . . . . . . . . . . . . . . . . . . . . . . . . . 54
10.5.7 Lestableaux ...................................... 55
11 Conclusion 57
11.1 Les difficult´
es.......................................... 57
11.2 Programme annot´
e ....................................... 57
11.3exercices............................................. 58
12 Caduceus 59
12.1 max ............................................... 59
12.2 swap .............................................. 59
12.3 divide ............................................. 60
12.4Autresexemples......................................... 60
Bibliographie 63
III Solutions des exercices 65
4
Chapitre 1
Pr´
eambule
Ce polycopi´
e concerne les deux unit´
es d’enseignement (UE) suivantes du CNAM : NFP119 (program-
mation fonctionnelle, niveau Licence 2) et NFP209 (programmation rigoureuse, niveau master 1). Plus
exactement il traite de la partie de ces deux cours qui concerne la preuve de programme. Le polycopi´
e
est divis´
e en deux parties correspondant `
a ces deux UE : preuve de programmes fonctionnels et preuve de
programmes imp´
eratifs.
Il n´
ecessite, pour une lecture sereine, d’avoir des notions de base en logique qui peuvent ˆ
etre acquises
en suivant au pr´
ealable l’UE NFP108 (logique niveau Licence 2). En particulier dans la deuxi`
eme partie
le chapitre 1.1 Rappels de logique est un rapide survol du contenu de NFP108. Bien entendu il est
´
egalement indispensable d’avoir des notions solides en programmation pour suivre ces deux cours.
Pri`
ere d’envoyer vos remarques `
a l’adresse suivante : Pierre(pt)Courtieu(at)cnam(pt)fr.
1.1 Rappels de logique
Rappels de logique
Itrue, false
I¬pnon p
Ipqpet q
Ipqpou q
Ipqpimplique q.
Ix,Ppour tout x,P(x)est vrai .
Ix,Psignifie il existe au moins un xtel que P(x)est
vraie .
pqAttention !
pqpimplique q.
Attention pi`
ege !
Isoit pest fausse,
Isoit pet qsont toutes les deux vraies.
Nous ferons appel `
a des notations logiques simples et usuelles, dont voici un r´
ecapitulatif :
true est la propri´
et´
e vraie
false est la propri´
et´
e fausse
¬psignifie non p
pqsignifie pet q
pqsignifie pou q
5
1 / 73 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !