Vous êtes sur la page 1sur 6

Nom :……………………………..

Prénom :……………………… CIN :……………………… Salle :………

Année universitaire 2019-2020


Correction Examen Vérification et Spécification Formelles - Final
Enseignantes : E. Menif & M. Fourati Date : 04/01/2020 Nbre. de pages :9
Filière / Classe : 3ème Ing. Inf. Calculatrices et documents : non autorisés Durée : 1h30
Vérification formelle : (10 points)
Exercice 1 : Question de cours (1 point)
1. Les deux formules 𝑨𝑭𝑬𝑮𝑝 et 𝑭𝑮𝑝 sont-elles équivalentes ? Justifiez.
Correction
Non elles ne sont pas équivalentes puisqu’il existe un modèle M tel que 𝑀 ⊨ 𝐴𝐹𝐸𝐺𝑝 𝑒𝑡 𝑀 ⊭ 𝐹𝐺𝑝
(0.25). Voici M :

0.25

p p p

2. Définir la sémantique formelle de 𝑮𝑿𝑝.


Correction

𝜎, 𝑖 ⊨ 𝑮𝑿𝑝 ssi ∀𝑗|𝑖 ≤ 𝑗 ≤ |𝜎| ∶ 𝜎, 𝑗 + 1 ⊨ 𝑝 (0.5).

Exercice 2 : (Traduction en CTL et LTL : 2 points)


Exprimez, lorsque c’est possible, les propriétés suivantes en CTL et LTL. Lorsque la traduction n’est pas
possible, dites qu’elle n’est pas exprimable.
Correction

1. Il existe un chemin où p est faux et ce jusqu’à ce que q devienne vrai.


LTL : Non exprimable (0,25 point)
CTL : pEUq (0,25 point)

2. Si p est infiniment souvent vrai, alors q reste toujours faux


LTL : GFp  Gq (ou GFp  Fq) (0,25 point)
CTL : AGAFp  AGq (ou AGAFp  EFq) (0,25 point)

3. q et r ne peuvent pas devenir vrai avant que p devienne faux


LTL : ((qr)Up) (0,25 point)
CTL : (qr)AUp (0,25 point)

4. L’une des variables p ou q deviendra toujours vrai tout au long de l’exécution.


LTL : FG(pq) (0,25 point)
CTL: Non exprimable (0,25 point)

Exercice 3 Model Checking LTL et Automate de Büchi (2.25 points) :


(Réellement sur 2,75 points donc +0.5 bonus)
Correction
1. Transformez la propriété de chemin 𝜑 = 𝑮𝑭¬𝑝 en automates de Büchi minimal. Rappelons qu’on
dispose des règles d’expansions : U=(X(U)), G=X(G), F=X(F).

(0,25 point)
𝑮𝑭¬𝑝 = 𝑭¬𝑝 ∧ 𝑿𝜑 = (¬𝑝 ∨ 𝑿𝑭¬𝑝) ∧ 𝑿𝜑 = (¬𝑝 ∧ 𝑿𝜑) ∨ (𝑿𝑭¬𝑝 ∧ 𝑿𝜑)
= (¬𝑝 ∧ 𝑿𝜑) ∨ (𝑇 ∧ 𝑿(𝐹¬𝑝 ∧ 𝜑))

Pour 𝐹¬𝑝 ∧ 𝜑 (0,25 point)

𝐹¬𝑝 ∧ 𝜑 = (¬𝑝 ∨ 𝑿𝑭¬𝑝) ∧ 𝑮𝑭¬𝑝 = (¬𝑝 ∨ 𝑿𝑭¬𝑝) ∧ (¬𝑝 ∨ 𝑿𝑭¬𝑝) ∧ 𝑿𝜑) ∧ ((¬𝑝 ∨ 𝑿𝑭¬𝑝) ∧ 𝑿𝜑))
= (¬𝑝 ∨ 𝑿𝑭¬𝑝) ∧ (¬𝑝 ∨ 𝑿𝑭¬𝑝) ∧ 𝑿𝜑) = (¬𝑝 ∨ 𝑿𝑭¬𝑝) ∧ 𝑿𝜑) =
= (¬𝑝 ∧ 𝑿𝜑) ∨ (𝑿𝑭¬𝑝 ∧ 𝑿𝜑) = (¬𝑝 ∧ 𝑿𝜑) ∨ (𝑇 ∧ 𝑿(𝐹¬𝑝 ∧ 𝜑))

Automate (2 point)
0,25
Chaque état final : (0,25 point)
Toute transition : (0,25 point)
T,X
0,25
p 0,25 0,25 T
p T 0,25

0,25 T
p,X T, X(Fp)

0,25
p 0,25

Automate minimal : (0,25 point)


p
T
T
1 2

p

Exercice 4 : (Model-Checking CTL 4.75 points)


1. Normalisez la formule =AG(AFq) (l’écrire en terme de AU, EU, EX, , et T). Rappelons que AX =
EX, AF = TAU, AG = EF, EF = TEU, EG = AF.

Correction
𝑨𝑮(𝑨𝑭𝑞) = ¬𝑬𝑭¬(𝑨𝑭𝑞) = ¬𝑇𝑬𝑼¬(𝑇𝑨𝑼𝑞) (0,5 point)

2. Soit la structure de Kripke K suivante :

s0

r
s3

s1 p,t,r p,q

q,r s2
A l’aide de l’algorithme de marquage vu en cours (et présenté ci-bas), vérifiez la validité de la formule  pour
chaque état du modèle. Détaillez les itérations (précisez les valeurs de L,nb (degré de chaque état) et déjà vu
pour toutes les variables si ainsi que les valeurs des sous formules i pour chaque état). Toutes les itérations
doivent être détaillées. Ensuite, remplissez la table ci-dessous (par les valeurs de vérité adéquates) pour chaque
sous formule de . Le tableau ne sera pas noté si l’itération correspondante n’est pas explicitée.

Correction
 =AG(AF q) = EF(TAUq) = TEU(TAUq)

Voici le tableau à remplir :


s0 s1 s2 s3
T
q
 = TAUq
 = 
’ = TEU
 = ’

Pour TAUq,
Marquage de T et q, initialisation de  à faux et initialisation de nb. (Initialisation 0.25)
s0 s1 s2 s3
T Vrai vrai vrai vrai
Q Faux faux vrai vrai
 = TAUq Faux faux faux faux
Nb 3 1 1 1

Initialisation de L=.

L={s2, s3} (s2.q=vrai et s3.q=vrai)

1) Traitement de s2, L={s3} 1 point


s2. ∶=vrai
a. s1→ s2
s1.nb∶= s1.nb -1=0, avec s1.T=vrai et s1.=faux donc L=L{s1}={s1, s3}

b. s3→ s2
s3.nb∶= s3.nb -1=0, avec s3.T=vrai et s3.=faux donc L=L{s3}={s1, s3}
Après mise à jour de nb et de .
s0 s1 s2 s3
Nb 3 0 1 0
 = TAUq Faux faux vrai faux

2) Traitement de s1, L={s3} 0.5 point


s1. ∶=vrai
a. s0→ s1
s0.nb∶= s0.nb -1=2  0 rien à faire

b. s2→ s1
s2.nb∶= s2.nb -1=0, avec s2.T=vrai mais s2.=vrai donc rien à faire.
Après mise à jour de nb et de .
s0 s1 s2 s3
nb 2 0 0 0
 = TAUq Faux vrai Vrai faux

3) Traitement de s3, L={ } 0.25 point


s3. ∶=vrai
c. s0→ s3
s0.nb∶=s0.nb -1=1  0 rien à faire

Après mise à jour de nb et de .


s0 s1 s2 s3
Nb 1 0 0 0
 = TAUq Faux vrai vrai vrai

L={ } arrêt
D’où après le marquage de  et de  =  :
s0 s1 s2 s3
T Vrai Vrai vrai vrai
Q Faux Faux vrai vrai
 = TAUq Faux Vrai vrai vrai
 =  Vrai Faux faux Faux
’ = TEU
 = ’

’ = TEU
Marquage de T, initialisation de ’ à faux et initialisation de déjà vu (dv) à faux. (0.25 point)

s0 s1 s2 s3
T Vrai Vrai vrai vrai
Q Faux Faux vrai vrai
 = TAUq Faux Vrai vrai vrai
 =  Vrai Faux faux faux
’ = TEU Faux Faux faux faux
Dv Faux faux faux faux
Initialisation de L=.
L={s0} (s0. = vrai)

1) Traitement de s0, L={ } 0.5 point


s0.’ ∶=vrai
a. s0→ s0
s0.dv=faux, donc s0.dv∶=vrai avec s0.T=vrai donc L=L{s0}={s0}

Mise à jour de dv et de ’.


s0 s1 s2 s3
T vrai vrai vrai vrai
Q faux faux vrai vrai
TAUq faux Vrai vrai vrai
 = TAUq vrai Faux faux faux
’ = TEU vrai Faux faux faux
 = ’
dv vrai Faux faux faux
2) Traitement de s0, L={ }
s0.’ ∶=vrai
a. s0→ s0
s0.dv=vrai, donc rien à faire. 0.25 point

Arrêt de l’algorithme puisque L est vide. Mise à jour de ’ et calcul de  = ’.


s0 s1 s2 s3
T Vrai Vrai vrai vrai 0.25
q Faux Faux vrai vrai 0.25
TAUq Faux Vrai vrai vrai
 = TAUq Vrai Faux faux faux 0.25
’ = TEU Vrai Faux faux faux
 = ’ faux Vrai vrai vrai 0.25

3. Dites si 𝐾 ⊨ 𝜑 en justifiant votre réponse.


Comme K, s0 ⊭ donc K ⊭ (0.25 point)

Entrées : formule CTL , M= (Q,q0,E,T,Prop,l) Entrées : formule CTL , M= (Q,q0,E,T,Prop,l)


Cas 5 : = 1EU2 Cas 6 : = 1AU2
faire marquage(1,M) ; marquage(2,M) ; faire marquage(1,M) ; marquage(2,M) ;
pour tout qQ faire L:=
q.:=faux; pour tout qQ faire
q.dejavu:=faux; q.nb:=degre(q) ; q.:=faux ;
fin pour tout si q.2=vrai alors L:=L{q} fin si
L:= fin pour tout
pour tout qQ faire tant que L faire
si q.2=vrai alors L:=L{q} fin si prendre un q  L;
fin pour tout L:=L\{q};
tant que L faire q.:=vrai;
prendre un q  L; pour tout (q’,q) Tfaire
L:=L\{q}; q’.nb:=q’.nb-1
q.:=vrai; si (q’.nb=0) et (q’.1=vrai) et
pour tout (q’,q) T faire (q’.  =faux) alors L:=L {q’}
si q’.dejavu=faux alors fin si
q’.dejavu := vrai; fin pour tout
si q’.1=vrai alors L:=L{q’} fin tant que
finsi
fin si
fin pour tout
fin tant que

Vous aimerez peut-être aussi