0% ont trouvé ce document utile (0 vote)
37 vues31 pages

Notions de Logique et Preuves en Informatique

Transféré par

ahmedleo10010
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
37 vues31 pages

Notions de Logique et Preuves en Informatique

Transféré par

ahmedleo10010
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Preuve de programmes

Notions de Logique
E. CHABBAR

1 SMI-ALGOII
Logique
2

La logique a joué un rôle décisif dans le


développement de l’informatique, notamment en
informatique théorique:
- Définition d’un modèle théorique des premiers
ordinateurs (Machine de Turing)
- Calcul booléen pour la conception et l’étude des
circuits.
- La récursivité pour définir la calculabilité.
- la décidabilité et la complexité pour étudier la limite
de la machine.
- La programmation fonctionnelle.

SMI-ALGOII
Logique
3

Actuellement l’informatique a envahi tous les


domaines de la vie. Le problème le plus important
qui se pose dans la conception d’une application
informatique est de prouver qu’elle est exempte
d’erreurs et qu’elle résout le problème pour
laquelle elle a été conçue. Pour cela, on définit une
tache par une formule de logique et on montre
qu’elle est satisfaite par un modèle de cette
application. Ce type de preuve est appelé «
Vérification Formelle ».

SMI-ALGOII
Logique
4

Une logique, par définition, est un ensemble de formules.


Une formule est construite, sur un alphabet, suivant certaines
règles (Syntaxe).
La sémantique d’une formule est une valuation (ou
interprétation dans un modèle) qui détermine la valeur de
vérité de la formule.
Il y a plusieurs types de logiques:
- Logique des propositions (d’ordre 0)
- Logique du premier ordre (les prédicats en font partie)
- logique du second ordre et logique d’ordre supérieur.

SMI-ALGOII
Logique des propositions
5

- On note P = {p, q, …} l’ensemble des propositions


atomiques. Chaque proposition atomique est une
variable qui ne peut prendre que « vrai » ou « faux ».
- {¬ , ∧, ∨, ⇒, ⇔} l’ensemble des connecteurs (ou
opérateurs) logique plus les parenthèses.
- On note F(P) l’ensemble des formules déduit de P.
F(P) est le plus petit ensemble qui contient P et qui est
stable par les connecteurs.
En d’autres termes:
Une formule est une suite de symboles de P ∪ {¬ , ∧,
∨, ⇒, ⇔, (, )} construite selon les règles suivantes:

SMI-ALGOII
Logique des propositions
6

- Toute proposition atomique est une formule.


- si f est une formule alors ¬f est aussi une formule.
- si f1 et f2 sont des formules alors :
- f1 ∧ f2 est une formule
- f1 ∨ f2 « « «
- f1 ⇒ f2
- f1 ⇔ f2 « « «
Exemple: (¬p ⇒ q) ∨ (p ∧ q) est une formule.

SMI-ALGOII
Logique des propositions
7

La sémantique des opérateurs logiques est donnée


par des tables de vérité.

p q ¬p ¬q p∨q p∧q p⇒q (¬p∨q)


0 0 1 1 0 0 1
0 1 1 0 1 0 1
1 0 0 1 1 0 0
1 1 0 0 1 1 1

SMI-ALGOII
Prédicats
8

Les prédicats sont construits avec :


- les constantes (0,1,2,….)
- les variables (x, y, ….)
- les fonctions (f, g, +, *, …)
- des connecteurs logiques (¬ , ∧, ∨, ⇒, ⇔)
- des parenthèses
- des quantificateurs (∀, ∃)
Un prédicat atomique est un prédicat qui ne contient ni
connecteur ni quantificateur.
- Exemples: x < y ; pair(2 x) ;

SMI-ALGOII
Prédicats
9

Règles de formations des formules de prédicats:


- Tout prédicat atomique est une formule
- si f1 et f2 sont des formules alors
¬ f1, f1 ∨ f2, f1 ∧ f2, f1 ⇒ f2, f1⇔ f2
sont des formules.
- si f est une formule alors
∀ x f est une formule
∃ x f est une formule

SMI-ALGOII
Prédicats
10

Exemples:
1) ∀x pair(x + x)
2) ∃x premier(x) ∧ x < succ(succ(0))
3) ∀x (oiseau(x) ⇒ vole(x)) (tous les oiseaux volent)
4) ∃x (oiseau(x) ∧ ¬ vole(x)) (4 ≡ ¬ 3)
5) ∀i ∀j (1≤i ≤j≤n ⇒ T[i] ≤ T[j]) (spécification d’un tableau trié)
Remarques
¬ (∀x P) ≡ ∃x ¬P
¬ (∃x P) ≡ ∀x ¬P
SMI-ALGOII
Déduction logique
11

Démonstrations logiques

Un séquent est un couple de la forme (ℐ ,f), où f


est une formule et ℐ un ensemble fini de
formules . L’ensemble ℐ est l’ensemble
des prémisses du séquent, la formule f sa
conclusion.

SMI-ALGOII
12

• Séquents prouvables
• Un séquent (ℐ,f) est prouvable, ce que l’on notera
ℐ ├ f, s’il peut être construit en utilisant un nombre fini
de fois les 6 règles suivantes :
1. si f∈ℐ, alors ℐ├f (Hypothèse)

2. si g ∉ ℐ et ℐ ├ f, alors ℐ, g├ f
3. si ℐ ├ (f ⇒ f’) et ℐ ├ f, alors ℐ ├ f’ (Modus Ponens)
4. si ℐ , f├ f’, alors ℐ ├(f ⇒ f’) (Synthèse)
5. ℐ ├ f ssi ℐ ├ ¬¬f
6. si ℐ ,f├ f’ ℐ,f├ ¬f’ alors ℐ├¬f (Raisonnement par l’absurde)
(Contradiction)
SMI-ALGOII
13

• Démonstrations logiques
• Une démonstration d’un séquent prouvable ℐ ├ f est
une suite finie de séquents prouvables ℐi├ fi,
i = 1,...,n, telle que :
• ℐn = ℐ et fn = f
• chaque séquent de la suite est obtenu à partir des
séquents qui le précède en appliquant l’une des 6 règles
• Remarque : le premier séquent de la suite est
nécessairement obtenu par utilisation d’une hypothèse

SMI-ALGOII
14

• Démonstrations logiques - Exemple


• Tous les hommes sont mortels, et
• les Grecs sont des hommes, donc les
Grecs sont mortels
h = « être un homme »
m= « être mortel »
g = « être Grec »
(h ⇒ m), (g ⇒ h)├ (g ⇒ m)
SMI-ALGOII
15

• Démonstrations Logiques - Exemple


• Tous les hommes sont mortels, et
• les Grecs sont des hommes, donc les Grecs
sont mortels
• 1. (h ⇒ m), (g ⇒ h), g├ g hypothèse
• 2. (h ⇒ m), (g ⇒ h), g├ (g ⇒ h) hypothèse
• 3. (h ⇒ m), (g ⇒ h), g├ h MP (1&2)
• 4. (h ⇒ m), (g ⇒ h), g├ (h ⇒ m) hypothèse
• 5. (h ⇒ m), (g ⇒ h), g├ m MP (3&4)
• 6. (h ⇒ m), (g ⇒ h)├ (g ⇒ m) synthèse
SMI-ALGOII
16 Preuve de programmes
Logique de Hoare

SMI-ALGOII
Correction de programmes /
17
Spécification
un programme est correct s’il effectue la
tâche qui lui est confiée dans tous les cas
permis possibles

nécessité de disposer d’un langage de


spécification permettant de décrire
formellement la tâche confiée à un
programme.

SMI-ALGOII
Correction de programmes /
18
Spécification
description des propriétés que doit
satisfaire un programme pour répondre au
problème posé
- relation entre les entrées et les sorties
du programme

Entrée E Programme Sortie S


Précondition : P(E) Postcondition : Q(E, S)

SMI-ALGOII
Correction de programmes /
Spécification
19

Exemple
une spécification pour le problème du
calcul de la racine carrée entière par
défaut :
Données n : entier ;
Résultat r : entier ;

Pré condition : n ≥ 0
Algorithme: r := 0; tantque (n ≥(r +1)2) faire r := r + 1 ftantque

Post condition : (r2 ≤ n) ∧ (n < (r+1)2)

SMI-ALGOII
Test vs Vérification
20

. Les couples (n, r) de l’ensemble suivant {(0, 0), (1, 1), (2, ), (3, 1), (4, 2), …}
sont des tests qui réussissent

• Hoare propose une exécution de l’algorithme sur une valeur


symbolique qui est un ensemble de valeurs défini par une expression
logique (ou prédicat).
• L’ensemble {(0, 0), (1, 1), (2, 1), (3, 1), (4, 2), …} est
défini par {(n,r) / n≥0 ∧ r ≥0 ∧ r2 ≤ n ∧ (n < (r+1)2}

• On note {n≥0 ∧ r ≥0 ∧ r2 ≤ n ∧ (n < (r+1)2} la valeur symbolique des


variables n et r.

• L’exécution d’un algorithme A sur une valeur symbolique de données


définies par l’expression { p} qui donne une valeur symbolique résultat
définie par l’expression { q} est notée {p} A {q} . {p} A {q} est appelé triplet
de Hoare (p : précondition, q : postcondition).
SMI-ALGOII
Système formel
21

. Interpretation d’un triplet de Hoare


{p} A {q} signifie :
Si la propriété p est vraie avant l’exécution de A ET si l’exécution de A
se termine, ALORS la propriété q est vraie après l’exécution de A.
(Correction partielle)

• Un système formel est un triplet <L, Ax, R> où :


- L est un langage définissant un ensemble de formules,
- Ax est un sous-ensemble de L ; chaque formule de Ax est appelée axiome,
R est un ensemble de règles de déduction de formules à partir d’autres formules ;

SMI-ALGOII
Langage algorithmique
22 Langage algorithmique
• Instructions :
- Affectation (:= symbole d’affectation et = pour la comparaison)
- Contrôle :
Si <cond> alors instruction fsi
ou Si <cond> alors instruction
sinon instruction fsi
- Boucle :
Tantque <cond> faire instruction ftantque

• Restriction :
- Pas de fonction (ou procédure)
- ni de variable pointeur
- pas de désignation de la forme t[i] où i fait référence à un autre
tableau.
SMI-ALGOII
Logique de Hoare
23 Logique de Hoare
• Définition de la logique de Hoare : La logique de
HOARE est un triplet <L, Ax, R> avec :
- L est l’ensemble des formules { p} A { q} où p
et q sont des prédicats et A est un fragment
d’algorithme(ou de programme)
- Ax est l’ensemble des axiomes de la forme
suivante : { p[ x / e] } x := e { p(x)}
(p(x) est obtenu de p[x/e] en substituant toute
occurrence de e par x)
- R est l’ensemble de règles de déduction
suivant :
SMI-ALGOII
Logique de hoare
24

(Séq) si {p} A1 {r} ; {r} A2 {q} alors


{p} A1 ; A2 {q}
(consg) si p ⇒ p’, {p’} A {q} alors
{p} A {q}
(consd) si {p} A {p’}, p’ ⇒ q alors
{p} A {q}
(cond1) si {p ∧ c} A {q} , (p ∧ ¬c) ⇒ q alors
{p} si c alors A fsi {q}
(cond2) si {p ∧ c} A1 {q} , {p ∧ ¬c} A2 {q} alors
{p} si c alors A1 sinon A2 fsi {q}
(tantque) si {I ∧ C} A {I} alors
{ I} tantque C faire A ftantque {I ∧ ¬C}

(I doit être un invariant de la boucle)


SMI-ALGOII
Exemple : règles d’affectation
25
et conséquence
.
• { p[ x / e] } x := e { p(x)}
1. {n+1> 0} n:= n+1 {n>0} (x=n, e = n+1)
2. {k > 0} n :=0 {k > n} (x=n, e =0)
3. {x = 4} x := x+1 {x=5} en écrivant:
{(x+1) -1 =4} x := x+1 { x - 1 =4} ⇒ {x = 5}

4. {x ≥ 0} x := x + 1 {x ≥ 1}
{x ≥ 0} ⇒ {x + 1 ≥ 1}
x := x + 1
{x ≥ 1} SMI-ALGOII
Exemple : règles de condition
26

5. {vrai}
si x ≥ 0 alors
{vrai ∧ x ≥ 0} ⇒ {x ≥ 0} ⇒{x+1≥1}
x := x + 1;
{x ≥ 1}
sinon
{vrai ∧ x < 0} ⇒ {x < 0} ⇒ {-x > 0}
x := - x;
{x > 0} ⇒ {x ≥ 1}
fsi
{x ≥ 1}

SMI-ALGOII
Schéma de preuve d’un algorithme itératif
Tant que
27

Soit l’algorithme suivant:

début
{pré}
init;
{I}
tantque C faire
{I ∧ C}
A
{I}
ftantque
{I ∧ ¬ C} ⇒
{post}

SMI-ALGOII
Exemple: calcul de la racine carrée
28
par défaut
Algorithme A:
donnée : n : entier;
résultat : r : entier;
début
r := 0;
tantque n ≥ (r + 1)2 faire
r := r + 1;
ftantque
fin

Spécification:
précondition : {n ≥ 0}
postcondition : { (r2 ≤ n ∧ n < (r + 1)2) }
invariant de la boucle: I = {r2 ≤ n} (évident, sinon on le déduit de la postcondition)

SMI-ALGOII
Algorithme A annoté et prouvé
29

Algorithme A:
donnée : n : entier;
résultat : r : entier;
Début
{n ≥ 0} ⇒ {n ≥ 0*0}
r := 0;
{n ≥ r*r}
tantque n ≥ (r + 1)2 faire
{n ≥ r2 ∧ n ≥ (r + 1)2}
r := r + 1;
{n ≥ r2}
ftantque
{r2 ≤ n ∧ n < (r + 1)2}
fin

SMI-ALGOII
Exemple: calcul de n!
30

Algorithme B:
donnée : n : entier
résultat : y : entier
début
x := n;
y := 1;
tantque x > 1 faire
y := y * x;
x := x – 1;
ftantque
fin

Spécification:
précondition : {n ≥ 0}
postcondition : {y = n!}
Invariant: I = { n! = y x! ∧ x ≥ 0}
SMI-ALGOII
Algorithme B annoté et prouvé
31

Algorithme B:
donnée: n : entier;
résultat: y : entier;
début
{n ≥ 0}
x := n;
{x ≥ 0 ∧ x = n}
y := 1;
{n! = y x! ∧ x ≥ 0}
tantque x > 1 faire
{n! = y x! ∧ x ≥ 0 ∧ x > 1} ⇒ {n! = (y x)(x-1)! ∧ x > 1}
y := y * x;
{n! = y (x-1)! ∧ x-1 > 0}
x := x – 1;
{n! = y x! ∧ x > 0} ⇒ {n! = y x! ∧ x ≥ 0}
ftantque
{n! = y x! ∧ x ≥ 0 ∧ x ≤ 1} ⇒ { y = n!}

Exercice: Faites la preuve de l’algo. de n! en faisant une boucle qui va de 1 à n


SMI-ALGOII

Vous aimerez peut-être aussi