Modalité de contrôle : 1 partiel (sur Moodle) + 1 examen
Documents autorisés
21 novembre le partiel
Second partiel pour le dernier ou avant dernier cours
19/12/2024 examen final à 11 h 45, durée : 1h ; amphi 4C
Pas de seconde session ancien cours
Plan
2 parties :
Modélisation : STE (Systèmes réseaux étiquetés), Réseaux de Petri
Spécification : Logique temporelle
Un système informatique doit répondre à des exigences.
Comment garantir que le système répond aux exigences ? En faisant des tests
Comment faire des tests parfaits ? Impossible
Exemple : Toyota UA (Unattendented Acceleration)
Il faut donc une contrepartie mathématique pour
Système Informatique
⇒ modèle mathématiques M (STE, Réseau de Petri, …)
Exigences
⇒ Propriétés P (Logiques)
⇒∀P∈P:M⊨P “Model Checking” (technique de vérification formelle)
Systèmes de transition étiquetés (STE)
Exemple de l’ascenseur :
Exemple du distributeur de boissons : q0 est vide :
Valeur de vérité de conjonction sur un ensemble vide : ∀e∈E: vrai (toujours vrai)
Valeur de vérité de disjonction sur un ensemble vide : ∃e∈E: faux (toujours faux)
Les STE peuvent être infinis.
Etats infini
Branchements finis (nombre de manières de quitter un état)
Par exemple :
Etats infinis
Branchements infinis
Disgression
Relation binaire des ensembles/domaines X et Y : R⊆X×Y avec R la relation de X à Y.
Fonction : relation binaire, mais avec :
Tous les éléments doivent être couverts (sinon c’est une fonction partielle)
Un élément ne peux être lié qu’à un seul élément
Définition formelle
Un STE S est un tuple S=<Q,q0,Act,→,AP,L> tel que :
Q est un ensemble d’états
q0∈Q est l’état initial
Act est un ensemble fini d’actions
→ est un triplet (état, action état) : ⊆Q×Act×Q
Si j’ai (q,a,q′)∈→, on écrit qaq′
AP est un ensemble de propositions atomiques
L:Q↦P(AP) (relation binaire de Q à P(AP)) (P est un powerset, aka toutes les étiquettes possibles)
Exemple
QAq0AActA→AAPL(q0)={q0,QA}=q0={aller en bas,aller en haut}={(q0,aller en bas,q1),(q1,aller en haut,q0)}={haut,bas}={haut},L(qA)={bas}
Communication
Porte P et utilisateur U :
Pour obtenir un STE de système global, on fait un produit. Pour ce faire, on définit une table de synchronisation TuP (par abus de notation : T).
Le système global S=Su∥TSP
Su
Sp
S
press_button
button_push
button
pass
detect
D_P
-
O
O
-
Close
Close
relation binaire avec chaque antécédent a au plus une image : une fonction partielle
Définition formelle
Soient S1=<Q1,q01,Act1,→1,AP1,L1> et S2=<Q2,q02,Act2,→2,AP1,L2>
Composition S=S1∥TS2 est un tuple S=<Q,Q0,Act1,→,AP,L> avec T:Act1∪{−}×Act2∪⇁ActU{τ}
où :
Q⊆Q1×Q2
q0=(q01,q02)
Act c’est un ensemble d’actions
→⊆Q×Act{τ}×Q tel que (q1,q2)α∈Act∪{τ}(q1′,q2′) si et seulement si :
q1α1∈Act1q1 et q2α2∈Act2q′ et T(α1,α2)=α
q1α1∈Act1q1 et q2=q2′ et T(α1,−)=α
q1=q1′ et q2α2∈Act2q2′ et T(−,α2)=α
AP=AP1∪AP2
L=L1(q1)∪L2(q2) pour tout q1∈Q1 et q2∈Q2
Buffer à une place
Buffer à 2 places : B=B1∥TB2
T:Act1∪{−}×Act2∪{−}⇁Act∪{τ}
B1
B2
B
get
-
get
put
get
τ
-
put
put
Buffer à trois places : B∥TB3
(B1∥TB2)∥TB3≡B1∥TB2∥TB3
Modélisation : modèle mathématique d’un système de manière formelle.
Il faut vérifier une exclusion mutuelle quand on veut accéder à la section critique. (Nécessite)
Absence de famine : raisonnement sur le futur, le programme peut accéder à la section critique (possibilité)
Temporalité
Ordre d’événements ⇒ Logiques temporelles
Dans ce cours, on verra LTL et CTL. (sans le passé).
LTL
Linear-time Temporal Logic
Propriétés évaluées sur des traces d’exécution infinies.
Syntaxe
φ,Ψ==P∣¬φ∣φ∧Ψ∣φ∨Ψ∣Xφ∣Fφ∣Gφ∣φUΨ
X : next
F : eventually (soit maintenant, soit dans le futur)
G : globally (toujours)
U : until (jusqu’à)
Sémantique
Interprétation sur des traces infinies (ω word)
Soit S=<Q,q0,Act,→,AP,L> un STE.
Une trace infinie de S à partir d’un état s1∈Q est de la forme ρ=s0,s1,s2...tqsi?∈ActSi+1 pour tout i.
Notations : ρ(i)=Si, ρi=Si,Si+1,…ρi=…,Si−1,Si Exeq(q) toutes les traces infinies commençant à l’état q.
La sémantique est positionnelle.
ρi⊨P ssi ρ(i)⊨P(?)P∈L(ρ) (Rho i satisfait P si et seulement si l’état de départ satisfait P)
S⊨?φ : Quand est-ce que S satisfait φ ?
ssi ∀ρ∈Exeq(q0):ρ,0⊨φ
Exemple
On reprend l’exemple du Buffer à la fin du cours précédent. B⊨v1∧v2B⊭G(v1∧v2) B⊨P1⇒v2B⊭G(P1⇒v2)
Gφ formule de sûreté (safety, good things always happen, bad thing never happen) G(¬bug) Fφ formule de liveness (a good thing eventually happen)
Exercice
Quelle est la relation entre ces trois propriétés ?
Ψ1=F(P∧P′)
Ψ2=FP∧FP′
Ψ3=F(P∧FP′)
Il y a-t-il une équivalence ? Non aucune. ρi⊨Ψ2 et ρi⊨Ψ3 mais ρi⊭Ψ1
ρi⊨Ψ2 mais ρi⊭Ψ1 et ρi⊭Ψ3
ρi⊨Ψ1, ρi⊨Ψ2, ρi⊭Ψ3
Exercice
Vous atterrissez sur une planète N où : s’il pleut un jour, alors il pleuvra le lendemain.
Situation : il pleut
Que peut-on conclure ?
Il pleut tous les jours sur la planète N.
Il pleuvra demain sur la planète N.
Il a plu hier sur la planète N.
Il pleuvra tous les jours sur la planète N.
P proposition démontrant “il pleut sur la planète N” : (i le jour d’arrivée) N⊨G(P⊨XP), Ni⊨P
φ∧Ψ⇒GP donc faux
φ∧Ψ⇒(Ni+1⊨P) donc vrai
φ∧Ψ⇏(Ni+1⊨P) donc faux
φ∧Ψ⇒(Ni⊨GP) donc vrai
Globally c’est sur la propriété, pas sur la trace
Modélisation
Exemple
S=(P1∥P2∥B)T
Table de synchronisation
ActB∪ {-}
ActP1∪ {-}
ActP2∪ {-}
ActS∪ {τ}
isTrue
-
isTrue
τ
isFalse
isFalse
-
τ
setTrue
setTrue
-
τ
setFalse
-
setFalse
τ
-
wr
-
ω
-
-
rd
r
LTE
S⊨ written ⇒ (XX read)
S⊭ G (written ⇒ (XX read))
S⊨ G (written ⇒ F read) : propriété de réponse (propriété importante dans les systèmes réactifs)
On recherche de la fairness (càd un équilibre entre les lectures et écritures) ; ces propriétés ne spécifient pas la fairness.
Graphes de programmes
Définition
Syntaxe
Un graphe de programme est un tuple <L,l0,⟷, Val0> sur un ensemble de variables
Var = EVar ∪ BVar
EVar ensemble fini de variables entières
BVar ensemble fini de variable booléennes
L ensemble d’états de contrôle (locationss)
l0∈L initial location (location d’états de contrôle initial)
↪⊆L×C(Var)×Op(Var)×L (C les conditions et Op les opérations)
Val0 (définition formelle) : …
EVal (évaluation d’une variable entière) : Evar →Z
BVal (évaluation d’un booléen) : BVar →B
Val(x)=⎩⎨⎧Eval(x)Bval(x)si x∈EVarsi x∈BVar
Val0(x) est Val(x) à l’état initial
Sémantique
Rappel : ∧ = ET
La sémantique d’un graphe de programme <L,l0,⟷, Val0> sur Var est donné par un STE <Q,q0, Act,→, AP,L> tel que :
Q=L× Val
q0 = (l0, Val0)
Act = {τ}
→ : (l,v)τ(l′,v′) ssi l↪l′∧v⊨c∧v′= Op(v)
(propositions atomiques) AP =L×C(Var)
L:Q→ AP tel que q:q=(l,v)→L(q)=(l,C)∧v⊨C (avec C la condition)
Produit
g1=<L1,l01,↪1, Val01> sur Var1c
g2=<L2,l02,↪2, Val02> sur Var1c
Le produit P(g1,g2)=g1∣∣∣g2 (∣∣∣ = interleaving, aka pas de synchronisation, chacun fait un pas après le tour de l’autre)
Syntaxe de P(g1,g2)=<L1×L2,(l01,l02),↪, Val0> sur Var1∪ Var2 P(g1,g2) est défini ssi ∀x∈ Var1∩ Var2: Val01(x)= Val02(x)
Propriété pour write : G((written∧X(¬written))⇒X(¬writtenUread))
Si on a un written suivi d’un written, je ne peux pas encore written s’il n’y a pas un read.
Propriété pour read :
On peut faire deux lectures consécutives
à faire……..
En LTL
Vision d’un système comme l’ensemble des traces infinies à partir de son état initial.
CTL : Computational Tree Logic
Logique incomparable avec LTL, CTL n’est pas meilleur que LTL, juste différent (permet de comparer s’il y a pas de bissimilarité entre deux systèmes)
Syntaxe minimale
φ,Ψ::=P∣¬φ∣φ∧Ψ∣EXφ∣AXφ∣EφUΨ∣AφUΨ
avec parfois :
EφUΨ≡φEUΨ
AφUΨ≡φAUΨ
Equivalence LTL/CTL
Fφ=TUφ
aussi AFφ
aussi EFφ Gφ=¬F¬φ
aussi AGφ
aussi EGφ
Opérateur CTL
QT
Q : quantificateur sur les chemins
T : Opérateur Temporel
Sémantique
Rappel x⊨y = x satisfait y.
Rappel x:y = x tel que y
Système de transitions étiquetées : S=<Q,q0,Act,→,AP,L>
Exeq(q) : l’ensemble des exécutions infinies à partir de q∈Q.
∀π∈ Exec(q). π=q0q1 avec q0=q et (qi,qi+1)→ (aussi écrit (qi→qi+1)
π(i)=qi
On raisonne sur les états dans Q soit q∈Q.
q⊨P ssi P∈L(q)
q⊨φ ssi q⊭φ
q⊨φ∧Ψ ssi q⊨φetq⊨Φ
q⊨EXφ ssi ∃(q,q′)∈→:q′⊨φ
q⊨AXφ ssi ∀(q,q′)∈→:q′⊢q
q⊨φEUΨ ssi ∃π∈ Exec(q),(∃i≥0:qi⊨Ψ∧∀j<i:qj⊨φ)
q⊨φAUΨ ssi ∀π∈ Exec(q),∃i≥0:(qi⊨Ψ∧∀0≤j:qj⊨φ
S⊨φ ssi q0⊨φ
Exemple 1
AGP
En LTL, ça correspond à GP.
EGp
En LTL, il n’y a pas d’équivalent.
EFP
En LTL, cette propriété est inexplicable : c’est la reachability (inatteignable).
Exemple 2
AFP
En LTL, c’est FP
AFEGP
Rappel : U = Until
pAUq
Question du partiel de l’année dernière
QCM
EGAXP : il existe un chemin maximal tel que tous les successeurs satisfont P
EFAXP : il existe un chemin tel que j’ai un état qui satisfait tous les successeurs satisfont P
EGEXP : il existe un successeurs ou tous les successeurs satisfont P
EXP : Un sucesseur satisfait P
EF : je peux atteindre un état (reachability)
Exemple : Évaluer une formule CTL
φ=AG(a⇒((EXc)EUb))
C
a
b
c
EXc
Ψ=(EX)EUb
a⇒Ψ
q0
⊤
⊥
⊥
⊤
⊤
⊤
q1
⊥
-
-
-
-
⊤
q2
⊥
-
-
-
-
⊤
q3
⊥
-
-
-
-
⊤
q4
⊤
⊤
⊥
⊥
⊤
⊤
q5
-
-
-
-
-
-
EXc : il existe un chemin quelque soit satisfait c
S⊨AG(a⇒Ψ)φ
Exemples de propriétés
AGφ : Safety (Gφ en LTL)
AG(φ⇒AFΨ) : Response (G(φ⇒FΨ) en LTL)
AGEFφ : Vivacité forte (Impossible en LTL )
CTL vs LTL
Expressivité
EFp
EFp n’est pas exprimable en LTL. (= je peux trouver un chemin qui peut satisfaire p à un certain état) mais sa négation est exprimable : ¬EFp est G¬p(= quel que soit le chemin, j’ai ¬p).
La négation de G¬p est Fp qui est plus forte que EFp.
⇒ la négation du chemin est différente dans CTL que dans LTL.
AGEFp
AGEFp n’est pas exprimable en LTL. (= pour tout les chemins, pour tout les états, j’ai un chemin à partir duquel je peux faire p) avec (AG = tous les chemins et tous les états)
Exemple
S⊨Fp
S⊭AGEFp
donc (AGEFp)CTL⇒(FP)CTL(avec ⇒ = implique)
FGp (propriété de stabilité)
(pour tous les chemins, je vais trouver un chemin sur lequel p est vrai et restera toujours vrai
Tentative 1 de transformation : AFAGp
Pour tous les chemins, je trouverais un état à partir duquel tous les états satisfont p S⊨FGp, en dépliant : S⊭AFAGp
Donc : (AFAGp)CTL⇒(FGp)CTL
Tentative 2 de transformation : AFEGp
S′⊨AFEGp S′⊭FGp
Donc : (FGp)LTL⇒(AFEGp)CTL
Conclusion
En terme d’expressivité, LTL et CTL sont incomparables !
Pouvoir de distinction
Propriété LTL : FXp : S1 et S2 indistinguable, car S1⊨FXp et S2⊨FXp
Propriété CTL : AFAXp(pour tous les chemins, j’ai un état sur lequel tous les successeurs satisfont p): S1 et S2 deviennent distinguables, parce que S1⊨AFAXp mais S2⊭AFAXp
Théorème
CTL distingue tous systèmes non bisimillaires.
CTL a un pouvoir de distinction plus fort que celui de LTL.
Systèmes différents mais indistinguable par CTL
ils sont bissimilaires
Réseaux de Petri
Pre(P4,t3) = 1
Pre(P7,t3) = 0
Définition formelle 1
Syntaxe d’un réseau de Petri
Un réseau de Petri R est un typle R=<P,T, Pre, Post> où :
P est un ensemble fini de places
T est un ensemble fini de transitions avec P∩T=∅
Pre : P×T→N
Post : T×P→N
Un réseau de Petri marqué est un tuple <R,M> où :
R est un réseau de Petri
M : P→N(fonction qui est définie pour toutes les places, qui renvoie un entier) avec comme notation : M∈N∣P∣∼NP
Sémantique
Une transition T est dîte sensibilisée (ou franchissable) ssi : ∀p:M(p)≥Pre(p,t)
On écrit alors M[t>
Le tir (franchissement) d’une transition correspond à l’obtention d’un nouveau marquage M′ : ∀p:M′(p)=M(p)−Pre(p,t)+Post(t,p)
On note alors M[t>M′
Définition formelle 2
Syntaxe d’un réseau de Petri
R=<P,T> où :
P est un ensemble fini de places
T⊂NP×NP est un ensemble fini de transitions
Notation
On note t=∙t,t∙∈T avec ∙t l’incidence arrière et t∙ l’incidence avant
Sémantique
t∈T M[t> ssi M≤∙t(comparaison de vecteurs éléments à éléments) M[t>M′⇒M′=M−∙t+t∙
Graphe de marquages
Soit <R,M> un réseau de Petri marqué et M0 son marquage initial.
Le graphe de marquages accessibles depuis M0:A(R,M0) est donné par l’algorithme suivant : A0={M0} Ai={M∈NP∣∃M′∈Ai−1∃t∈T:M′[t>M} A(R,M0)=∪i≥0Ai
[0]t[1]t[2]t[3]t… R1 est non-borné ⇒ graphe de marquages infini
Définition
Un réseau de Petri marqué <R,M0> est borné ssi ∀p∈P. p est bornée.
Une place p est bornée : ∃k∈N∀M∈A(R,M0) : Mp≤k
On a quatre personnes qui veulent traverser un pont
La capacité du pont est de deux personnes.
Les personnes ont une lampe torche.
Il faut une lampe pour traverser le pont.
Il faut y aller à deux et l’un doit revenir avec la torche pour faire passer les suivants.
La personne A traverse en 10 minutes.
La personne B traverse en cinq minutes.
La personne C traverse en deux minutes.
La personne D traverse en une minute.
Quel est le temps minimal de la traversée ?
Modéliser le temps par des jetons, aka 1 minutes = 1 jeton, 5 minutes = 5 jetons.
C et D traversent : 2 minutes C revient avec la lampe : 4 minutes A et B traversent : 14 minutes D revient avec la lampe : 15 minutes C et D traversent : 17 minutes
Ensemble des marquages accessibles A(R,M0)
Pour l’instant, on a juste défini les sommets, on doit définir désormais les transitions
Définition (1) : Graphe de marquages (accessible)
Pour un réseau de Petri marqué <R,M0>, le graphe des marquages accessibles G(R,M0)=<A(R,M0,→,L)>
A(R,M0) est l’ensemble des états
L est un ensemble de labels (noms) des transitions
→⊆A(R,M0)×L×A(R,M0) tel que ∀M1M2 et ∀t∈L∈A(R,M0):M1tM2⇔M1[tM2
Définition (2)
G(R,M0) est un STE : <Q,q0, Act,→, AP,L>
Q=A(R,M0)
Q0=M0
Act = T (noms de transitions)
→⊆Q× Act ×Q tel que qtq′ ssi q=M1 et q′=M2 et celle de la définition (1)
AP (propositions atomiques) : Cond(M),M∈Np
L:Q→ AP
Les “bonnes” propriétés d’un réseau de Petri
Dans <R,M0>.
La vivacité
Transition vivace
Quel que soit mon marquage actuel, j’ai une manière de tirer la transition t maintenant ou dans le futur.
“Possibilité de sensibilisé depuis n’importe quelle transition.”
Une transition t est vivante si et seulement si ∀M∈G(R,M0)∃σ∈L∗ tel que MσM′∧M′[t⟩
⇒ Un réseau qui ne se bloque pas = un réseau vivant
Un réseau est vivant ssi toutes ses transitions sont vivantes.
Non-blocage
<R,M0> est sans blocage ssi si ∀M∈G−R,M0∃t∈L:M[t⟩
Un non-blocage n’implique pas une vivacité.
Sans blocage et non vivant : Réseau zombie : vivant, mais bloquant (mort-vivant) : ⇒ il faut qu’il y ait au moins une transition.
Quasi-vivacité
Je peux sensibiliser ma transition au moins une fois.
Une transition quasi vivante t est quasi-vivante ssi ∃M∈G(R,M0):M[t⟩
Un réseau de Petri est quasi vivant ssi toutes ses transitions le sont.
Quasi vivant et bloquant :
Réinitialisibilité
Quel que soit le marquage accessible, il y a possibilité dans le marquage initiale M0
Réseau de Petri : R,M0 est réinitialisable si et seulement si :
Définition faible
∀M∈G(R,M0)∃σ∈L∗:MσM0
Dans ce cas, un réseau réinitialisable peut être bloqué sur son marquage initiale.
Définition forte
L+ : Sigma non-vide
∀M∈G(R,M0)∃σ∈L+:MσM0
Dans ce cas, un réseau réinitialisable est non bloquant.
Réseau borné
Place bornée
Une place p est bornée ssi ∃k∈N tel que ∀M∈G(R,M0):M(p)≤k
Un réseau de Petri est borné ssi toutes ses places le sont.
Réseau non borné, mais réinitialisable :
Réseau borné ? Oui
Réseau réinitialisable ? Oui
Réseau vivant ? Non
Tina
Relations entre les propriétés
Vivant?sans-blocage
(?) Sous hypothèse
Réinitialisable⇒sans blocage
Fausse avec la définition faible
Vraie avec la définition forte
Réinitialisable et vivant
Sans rapport
Bornée et vivant
Sans rapport
Quand non borné, alors pas de graphe de marquage
Borné et réinitialisable
Sans rapport
Non bornée et bloquant
Réinitialisibilité en LTL (définition faible)
GFGF(∀p:M(p)=M(0))(M=M0)
Analyse en Composantes fortement connexe (CFC)
Définition
Soit pour un graphe G=<S,→> un graphe orienté et C⊆S est appelée une composante fortement connexe (CFC, SCC - “Strongly Component Connexe” en anglais) ssi ∀s,s′∈C,∃σ,σ′→∗sσs′∧s′σ′s (avec σ des séquences)
Les CFC nous permettent de partionner un graphe de marquages modulo une relation d’équivalence G/∼CFC:M∼CGCM′ ssi M et M′ appartiennt à la même CFC.
Pendante : on ne peut pas en sortir
Triviale : Contient un seul sommet sans boucle
Analyse en CFC
Soit <R,M0> un réseau de Petri marqué borné.
<R,M0> est vivant ssi toute CFC pendante dans le G(R,M0)/∼CFC contient toutes les transitions.
<R,M0> est réinitialisable ssi G(R,M0)/∼CFC contient une seule CFC (+ non triviale pour la définition forte).
<R,M0> est bloquant ssi G(R,M0)/∼CFC contient une CFC pendante et triviale.
R est vivant, non réinitialisable et non bloquant.
Correction partielle
Question 1
Acc = EFp (CTL)
Safe = G(¬p) (LTL)
Si ⊭ Acc ⇒S⊨ Safe : vrai
Question 2
R,M0, T=∅
R,M0 vivant ⇒(R,M0) réinitialisable : faux
R,M0 vivant ⇒(R,M0) sans blocage : vrai
R,M0 réinitialisable ⇒(R,M0) borné : faux
Question 3
Pour toute exécution infinie π de S, il existe un état s satisfaisant p et tous les états suivants s dans π satisfait p
Quantifier sur les traces (“Pour toute exécution infinie”), donc exprimable en LTL.
en LTL : FGp
en CTL : non exprimable
Question 4
Question 5
pEUq : p jusqu’à ce que j’ai q : vrai
pAUq : pour tous les chemins, tout va bien : vrai
EFEGp : il existe un chemin tel que dans ce chemin je trouve un état, tel que dans ce chemin je trouve un état à partir duquel je satisfais toujours p : vrai
EFAFp : il existe un chemin dans lequel j’ai qu’un seul chemin et à partir de celui-ci je vais pouvoir toujours satisfaire p dans le futur : vrai
AFEFp : pour tous les chemins, il existe un état qui peut satisfait p dans le futur : vrai
Exercices
Question 1
le réseau est borné (oui, car graphe de marquage)
le réseau est vivant (non, on ne connait pas les transitions, uniquement le graphe)
le réseau est quasi vivant (on ne connait toujours pas les transitions)
le réseau est sans blocage (on n’a pas de CFC pendante et triviale)
le réseau est pas réinitialisable (car 2 CFC, et non 1)
Question 2
Quelque soit l’état accessible de S, il existe une manière de satisfaire la proposition p à partir de cet état (maintenant ou dans le futur).
Indice : quantification sur les états, donc CTL faisable.
En CTL : AGEFp
En LTL : pas exprimable
Question 3
S⊨AFAGp (CTL)
S⊨?FGp (LTL)
Question 4
FM(P2)≥2
Question 5
est-il borné ? Non, P3 ne l’est pas. Supposons ∃k∈N tel que ∀M∈A(k,M0),M(P2)≤k
est-il réinitialisable ? (si on tire P3 vers t3 autant qu’il faut, on peut revenir au marquage initial)
M(P3)>0⇒XM(P3)=0 (parce que au marquage initiale, la propriété initiale est fausse)
G(M(P3)=0⇒X(M(P4)=1∨M(P1)=1))
G(M(P3)=0⇒X(M(P4)=1∨M(P2)=1))
Algorithmes de Model Checking pour LTL
LTL : Propriété φ∈ LTL
Idée : Construire un automate qui reconnait tous les ω mots appartenant à la sémantique de φ : [[φ]]
On a besoin d’un automate capable de reconnaître les mots infinis !
Automate de Büchi généralisé (ABG) : <Q,q0,→,F>
F={F1,…,Fk} ensemble d’ensembles d’états acceptants.
Un “bon” mot, c’est un mot correspondant à un chemin qui passe infiniment souvent par un état de chaque Fi.
Construire un ABG Aφ
L’ensemble d’états Q.
Chaque q∈Q sera associé à un ensemble de sous-formule dans Sfφ q0⊆Q contient tous les états associés où φ apparaît.
Comment choisir les sous-ensembles de Sfφ associés aux états dans Q ?
Cohérence logique
Maximalité
Conformité (par rapport à la sémantique de LTL)
États
Cohérence logique
ψ1∧ψ2∈q⇒¬(ψ1∧ψ2)∈q⇒ψ1∨ψ2∈q⇒¬(ψ1∨ψ2)∈q⇒ψ∈q⇒ψ1,ψ2∈q¬ψ1∈q ou ¬ψ2∈qψ1∈/q ou ψ2∈/qψ1∈q ou ψ2∈qψ1∈/q et ψ2∈/q¬ψ∈/q
Maximalité
Pour chaque ψ∈Sfφ, chaque état contient ψ ou ¬ψ
Conformité
ψ1Uψ2∈q alors ψ1∈q ou ψ2∈q
ψ1Uψ2∈Sfφ alors pour tout état q∈Q. ψ2∈q⇒ψ1Uψ2∈q
Exemple pU(r∨s)
Sfφ={p,¬p,r,¬r,s,¬s,r∨s,¬(r∨s),pU(r∨s),¬()}
q1={p,r,¬s,¬(r∨s),pU(r∨s)} : maximale, conforme, mais pas cohérent
q2={¬p¬r,¬s,¬(r∨s),pU(r∨s)} cohérent, maximale, mais pas conforme
q3={p,r,¬s,r∨s,pU(r∨s)} cohérent, maximale et conforme
Transitions
On met une transition (q,σ,q′)∈Q×2AP×QP(AP)↪eˊtendue avec les neˊgations des proprieˊteˊs ssi :
Pour toute sous-formule ψ1Uψ2∈Sfφ Fψ1Uψ2∈F:Fψ1Uψ2={q∈Q∣ψ2∈q∨ψ1Uψ2∈/q}
Exemple φ=Xp
Sfφ={p,¬p,Xp,¬Xp}
q1={p,Xp}q2={¬p,Xp}
q3={p,¬Xp}q4={¬p,¬Xp}
Tous les états sont acceptants parce que c’est XpU true et tous les états satisfont true.
La complexité est exponentielle sur les sous-systèmes de φ.
φ=pUr Q={{p,r,pUr},{p,¬r,pUr},{¬p,r,pUr},{¬p,¬r,pUr},{p,r,¬(pUr)},{p,¬r,¬(pUr)},{¬p,r,¬(pUr)},{¬p,¬r,¬(pUr)}}
On retire ceux qui sont non-conforme : Q={{p,r,pUr},{p,¬r,pUr},{¬p,r,pUr},{p,¬r,¬(pUr)},{¬p,¬r,¬(pUr)}}
En pratique : S⊨?φ
Construire A¬φ
L(S)∩A¬ϕ=?∅ avec A¬ϕ : Q de taille exponentielle à ∣φ∣ et ∩ le produit des STEs.
Complexité d’algo : PSPACE-Complet
¬(PUR)¬(PUR)⇎¬PU¬R=G(¬r)∨¬rU(¬p∧¬r)
Algorithmes de model checking pour CTL
Pour chaque état q∈Q, dédier un champ qφ∈B(∈{⊤,⊥})
Procédure marquage (φ) : Cas φ=P:Pour q∈Qq.φ←P∈L(q)
Cas φ=¬ψ:Pour q∈Qq.φ←¬q.ψ Cas φ=ψ1∧ψ2:Marquage(ψ1), Marquage(ψ2)Pour q∈Qq.φ←q.ψ1∧q.ψ2 Cas φ=ψ1∧ψ2:Marquage(ψ)Pour q∈Qq.φ←⊥Pour q→q′∈→Si q′ψ=⊤q.φ←⊤ Cas φ=AX.ψ¬EX¬φ:Cas φ=ψ1EUψ2Marquage(ψ1), Marquage(ψ2)Pour q∈Qq.φ←⊥QU←∅Pour q∈QSi q.ϕ2=⊤QU←QU U{q}q.φ←⊤Tant que QU¬∅Piocher q∈QUPour q′→q∈→Si q′.ψ1=⊤∧q′.φ=⊥QU←QU U{q′}q′.ψ←⊤QU←QU\{q}