PROUVER QU’UN PROGRAMME EST CORRECT???
PREUVE FORMELLE?
Elle peut ˆ
etre:
IManuelle
IAutomatique – donc limit´
ee (cf dernier cours)
IInteractive comme par exemple avec Coq. ACM d´
ebut
2014:
Coq Selected As Recipient Of The 2013 Software System
Award Coq is a software tool for the interactive
development of formal proofs, which is a key enabling
technology for certified software. It provides a formal
language to write mathematical definitions, executable
algorithms and theorems together with an environment for
semi-interactive development of machine-checked proofs.
Coq a par exemple permis la r´
ealisation du compilateur
certifi´
e CompCert.
PROUVER QU’UN PROGRAMME EST CORRECT???
PREUVE FORMELLE?
”One does not need to give a formal proof of an obviously correct
program; but one needs a thorough understanding of formal proof
methods to know when correctness is obvious.” John C. Reynolds
PROUVER LA CORRECTION D’UN PROGRAMME,
c’est prouver qu’il correspond `
a la sp´
ecification donn´
ee.
La Logique de Hoare-Floyd a ´
et´
e introduite `
a la fin des ann´
ees
60 pour formaliser la relation entre langage de programmation
(imp´
eratif) et langage de sp´
ecification.
Elle se base sur la notion de triplet de Hoare, de la forme
{P}A{Q};
Pest la pr´
econdition,
Qla postcondition,
Aune expression du langage de programmation.
SP´
ECIFICATION
{P}A{Q};
Pet Qsont des assertions, i.e. des formules du langage de
sp´
ecification d´
ecrivant les valeurs des variables, l’´
etat de la
m´
emoire ou du syst`
eme.
En toute rigueur, le langage de sp´
ecification devrait ˆ
etre un
langage math´
ematique comme la logique des pr´
edicats, mais
dans un objectif de documentation plus que de preuve de
programmes, le langage de sp´
ecification peut ˆ
etre le langage
naturel (en ´
evitant les ambiguit´
es!).