1
Chapitre 11 : Vérification d’un algorithme
Problème général:
Supposons qu’un algorithme Aeffectue un certain
traitement sur des données, il faut prouver
mathématiquement que
étant donné les hypothèses sur ces données
Acalcule effectivement le bon résultat
Pour faire une preuve mathématique il faut:
Pouvoir formaliser
•les hypothèses,
•le résultat escomp
Et de façon plus générale l’état d’un programme n’importe où lors
de l’exécution
Avoir une démarche mathématique pour faire la preuve.
2
Le problème de la preuve de programmes
Pour cela,
on s’aide de la logique des prédicats (ou logique du premier
ordre).
un programme sera vu comme un « transformateur » de
formules logiques.
Exemple: le « formule » suivante : {x=3} x=x+2 {x=5}
Etat avant
l’exécution Etat après
l’exécution
se lit: si x vaut 3 avant l’instruction x=x+2,
alors après l’instruction x vaut 5
Attention ici x=3 est
une formule logique
vraie si x vaut 3; ce n’est
pas une assignation C++ !!
3
Le problème de la preuve de programmes
Attention: toute formule logique peut a priori être vrai ou fausse; ainsi
on peut voir que
{x=3} x=x+2 {x=5} est vraie
{x=0} x=x+2 {x=5} est fausse
Le problème de la preuve de programme sera de vérifier si la
«formul:
{hypothèses de départ} Algorithme {résultat}
est bien vraie
4
Rappel de logique: le calcul des propositions
• Syntaxe:
Soit un ensemble Pde propositions p, q, r, …
L’ensemble des formules fpossibles en logique
des propositions est :
f ::= p (pour n’importe quelle proposition p)
f ::=
!
f
f ::= f op f
f ::= ( f )
avec op ::=
v
|
|
f
|
a
|
j
ou
inclusif et
implications
• vers le droite
• vers la gauche
• double
}
négation
::=
signifie
peut être
réécrit en
|
signifie ou
5
Exemples de formules du calcul des propositions
p
(q
f
r)
p
j!
r
1 / 24 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 !