Procédures de décision
Une histoire de mots !
Lorsqu’on travaille avec LTL, 𝐒 est vu comme un ensemble d’exécutions étiquetées:
ρ : q0 → q1 → … + ℓ: Q → 2AP 𝐒 = (Q, →, q0, ℓ)
∈ Qω
{
En fait, on n’utilise les noms des états que pour utiliser la fonction d’étiquetage L et obtenir les propositions atomiques associées à chaque état de ρ.
ρ + ℓ peuvent être vues comme une « trace », un mot infini sur l’alphabet 2AP.
Ex:
ρ: q0 → q1 → q0 → q1 → q0 → q1 → … et L(q0)={a}, L(q1)={b,c}
La trace est le mot {a}{b,c}{a}{b,c}{a}{b,c}{a}{b,c}{a}{b,c}{a}{b,c}…
Et les formules de LTL s’interprète presque de la même manière:
ρ ⊨ P ⟺ P ∈ ρ(0) remplace ρ ⊨ P ⟺ P ∈ L(ρ(0))
Une histoire de mots !
Donc 𝐒 est vu un ensemble de mots.
Donc 𝐒 est vu comme un langage → Traces(𝐒)
Exec: q0.q1ω ∪ q0.q2ω ∪ q0.q2+.q1ω
Langage des traces:
{a,b}.{b}ω ∪ {a,b}.{a}ω ∪ {a,b}.{a}+.{b}ω
q0
{a,b}
{b}
{a}
q1
q2
𝐒
Traces(𝐒) = 𝓛(𝒜𝐒)
{a,b} {b}
{a}
{a,b}
{a}
Un automate de mots infinis 𝒜𝐒: 𝐒 = (Q, →, q0, ℓ)
Une histoire de mots !
Une formule φ de LTL décrit une propriété le long d’un mot infini sur l’alphabet 2AP.
Les modèles de φ de LTL sont l’ensemble des mots où φ est vraie.
On note mod(φ) les modèles de φ de LTL.
mod(φ) est donc aussi un langage !
Donc mod(φ) = les mots infinis sur l’alphabet 2AP vérifiant φ.
Problèmes de vérification
Model-checking:
input: un modèle (STE) 𝐒 et une formule φ output: oui ssi 𝐒 ⊨ φ.
Satisfaisabilité:
input: une formule φ
output: oui ssi il existe un modèle 𝐒 t.q. 𝐒 ⊨ φ.
(+ 𝐒 si il existe !))
Synthèse de contrôleur:input: un modèle partiel 𝐒 une formule φ output: un « controleur » 𝑪 t.q. 𝐒x𝑪 ⊨ φ.
Problèmes de vérification pour LTL
Quel lien entre Traces(𝐒) et mod(φ) ? 1) Traces(𝐒) ⊆ mod(φ)
2) Traces(𝐒) ∩ mod(φ) = ∅ 3) sinon
𝐒 ⊨ φ 𝐒 ⊨ ¬ φ
𝐒 ⊭ φ , 𝐒 ⊭ ¬φ
Rappel: 𝐒 ⊨ φ ⟺ ( ρ ⊨ φ ∀ ρ ∈ Exec(𝐒) ) mod(¬φ) = (2
AP)
ω\ mod(φ)
(2AP)ω = ens. de tous les mots infinis sur l’alphabet 2AP.
Construire les modèles de φ
Etant donnée φ, on sait construire un automate 𝒜φ qui reconnait les modèles de φ !
mod(φ) = 𝓛(𝒜φ)
Pourquoi chercher des automates ? Parce que nous disposons de nombreux outils pour les manipuler (union, intersection,
complément, inclusion, etc.) !
Satisfaisabilité de LTL
Comment tester si il existe un modèle pour φ ?
→ Tester mod(φ) est non vide.
C’est-à-dire tester si 𝓛(𝒜φ) ≠ ∅ ?
Model-checking de LTL
Comment tester si 𝐒 ⊨ φ ? Tester Traces(𝐒) ⊆ mod(φ) ?
Ou plutôt tester Traces(𝐒) ∩ mod(¬φ) = ∅ (donc tester si 𝓛(𝒜𝐒) ∩ 𝓛(𝒜¬φ) = ∅ )
car tester le vide est plus simple que tester l‘inclusion de deux langages, et faire l’intersection est facile.
C’est-à-dire tester si 𝓛(𝒜𝐒) ⊆ 𝓛(𝒜φ) ?
Satisfaisabilité et Model-checking de LTL
Les deux problèmes se ramènent donc aux deux questions suivantes:
- 𝓛(𝒜
φ) ≠ ∅
- 𝓛(𝒜
𝐒) ∩ 𝓛(𝒜
¬φ) = ∅ ?
Tout repose sur les deux automates 𝒜
𝐒et 𝒜
φ(ou 𝒜
¬φ).
𝒜
𝐒ne pose pas de problème: il est facile à construire à partir de 𝐒.
Et 𝒜
φ?
Construction de 𝒜
φ- exemple φ = G (a F b)
{a,b}(a,b}{a,¬b}{a,¬b}{a,¬b}{¬a,¬b}{¬a,b}…
{¬a,-}
{-,b}
{a,¬b}
{-,¬b}
q
s
{-,b}
Objectif !
{ } {a,b} {b}
{a}
{a}, { }
q
s
{a,b}
{b}
ou
Construction de 𝒜
φ- 1
Etant donnée une formule de LTL φ, on veut construire un automate 𝒜
φqui reconnait le langage mod(φ).
𝒜φ = (Q,q0,→,𝓕) sera un automate de Büchi généralisé.
kesako ?
Un automate de Büchi reconnait des mots infinis: un mot w est accepté si il existe un chemin dans l’automate dont l’étiquetage correspond à w et si le chemin passe infiniment souvent par un des états acceptants (un sous-ensemble de Q).
Dans un automate de Büchi généralisé, les états acceptants sont donnés par un ensemble de sou-ensemble 𝓕={𝓕1,…,𝓕k}: un
« bon » chemin doit passer infiniment souvent par un des états de chaque 𝓕i…
Construction de 𝒜
φ- 2
𝒜
φ= (Q,Q
0,→,𝓕)
Chaque état de Q sera associé (défini) par un sous-ensemble de sous-formules de φ.
idée de la construction: depuis un état associé à l’ensemble de sous-formules {𝜓1,…,𝜓n}, on reconnait des mots vérifiants chacune de ses sous-formules.
Comme 𝒜φ doit reconnaître les modèles de φ, l’ensemble des états initiaux Q0 contiendra tous les états de Q contenant la sous-formule φ…
Construction de 𝒜
φ- 3
𝒜
φ= (Q,Q
0,→,𝓕)
Comment définir les états Q ? Quels ensembles de sous-formules de φ choisir ?
On va choisir des sous-ensembles cohérents (logiquement), maximaux et conforme à la sémantique de LTL.
Soit Sφ l’ensemble des sous-formules de φ et leur négation.
Exemple:
φ = a U (X b)
Sφ = {a, ¬a, b, ¬b, X b, ¬X b, a U (X b), ¬(a U (X b)) }
Construction de 𝒜
φ- 4
𝒜
φ= (Q,Q
0,→,𝓕)
Comment définir les états Q ?
Les états q sont des sous-ensembles cohérents, maximaux et conforme à la sémantique de LTL…
‣Cohérents:
Si 𝜓1∧𝜓2 ∈ q, alors 𝜓1 et 𝜓2 sont dans q, si 𝜓1∨𝜓2 ∈ q, alors 𝜓1 ou 𝜓2
sont dans q, si 𝜓∈ q, alors ¬𝜓∉q.
‣Maximaux:
Dans tout état, pour chaque sous-formule 𝜓, on met soit 𝜓, soit ¬𝜓.
‣Conforme à la sémantique de LTL:
Dans tout état q, si la sous-formule 𝜓1U𝜓2 est présente, alors on a soit 𝜓1, soit 𝜓2 dans l’état q.
Si 𝜓1U𝜓2 ∈ Sφ, alors si 𝜓2 est dans un état q, 𝜓1U𝜓2 ∈ q Et les états initiaux sont ceux contenant φ.
Construction de 𝒜
φ- 5
𝒜
φ= (Q,Q
0,→,𝓕)
Comment définir les états Q ?
Ce sont des sous-ensembles cohérents, maximaux et conforme à la sémantique de LTL…
Exemple:
φ = a U (b ∧ c)
Sφ = {a, ¬a, b, ¬b, c, ¬c, b∧c,¬(b∧c), a U (b∧c), ¬(a U (b∧c)) } q={a,¬b,c,¬(b∧ c),a U (b∧c)} ou
q’={a,¬b,c,¬(b∧ c),¬ (a U (b∧c))} sont ok ! Mais r={a,b,¬b,c,¬(b∧ c),a U (b∧c)}, r’= {a,b,c,¬(b∧c),a U (b∧c)} ou
r’’= {a,b,c,(b∧c),¬(a U (b∧c))} ne sont pas bien formés !
Construction de 𝒜
φ- 6
𝒜
φ= (Q,Q
0,→,𝓕)
Comment définir les transitions de l’automate 𝒜φ ?
Exemple:
φ = a U (b ∧ c)
Sφ = {a, ¬a, b, ¬b, c, ¬c, b∧c,¬(b∧c), a U (b∧c), ¬(a U (b∧c)) } q={a,¬b,c,¬(b∧ c),a U (b∧c)}
q’={¬a,b,c,(b∧ c),(a U (b∧c))}
On a : q —- {a,c} ——> q’
On met une transition (q,σ,q’) ∈ Qx2APxQ si et seulement si:
-
σ = q ∩ AP (ie les prop. atomiques de q)-
∀ X𝜓 ∈ Sφ, X𝜓 ∈ q ⟺ 𝜓 ∈ q’-
∀ 𝜓1 U 𝜓2 ∈ Sφ, 𝜓1 U 𝜓2 ∈q ⟺ ( 𝜓2 ∈q ∨ (𝜓1 ∈q ∧ 𝜓1 U 𝜓2 ∈q’))Construction de 𝒜
φ- 7
𝒜
φ= (Q,Q
0,→,𝓕)
Comment définir les conditions d’acceptation 𝓕 ?
Pour chaque sous-formule 𝜓1U𝜓2, on a un ensemble 𝓕𝜓1U𝜓2 défini par:
𝓕
𝜓1U𝜓2= { q ∈ Q | 𝜓
1U𝜓
2∉ q ∨ 𝜓
2∈ q }
idée: un état contenant 𝜓1U𝜓2 doit reconnaître les modèles de 𝜓1U𝜓2 et donc visiter un jour un état contenant 𝜓2.
Pour en être sûr, on impose de visiter infiniment souvent des états contenant 𝜓2… ou infiniment souvent des états contenant ¬ 𝜓1U𝜓2… Dans les deux cas, on est sûr de ne pas attendre indéfiniment la satisfaction de 𝜓2.
𝒜
φet les modèles de φ
𝒜
φ= (Q,Q
0,→,𝓕)
Prenons un chemin dans 𝒜φ q1 → q2 → q3 → q4 → … étiqueté par le mot σ1 σ2 σ3 σ4 … de (2AP)ω
Alors on a:
∀ 𝜓∈q
i, σ
iσ
i+1σ
i+2… ⊨ 𝜓
Construction de 𝒜
φ- exemple
𝒜
φ= (Q,Q
0,→,𝓕) φ = X a
S
φ= {a, ¬a, Xa, ¬Xa } q
1= {a,Xa},
q
2= {a,¬Xa}
q
3= {¬a,Xa}
q
4= {¬a,¬Xa}
{a}{a}{¬a}… {¬a}{a}{a}… {a}{a}{a}…
{a,¬Xa}
{¬a,Xa} {¬a,¬Xa}
a
¬a a
¬a a
¬a a
¬a
{a,Xa}
Construction de 𝒜
φ- exemple
𝒜
φ= (Q,Q
0,→,𝓕) φ = a U b
S
φ= {a, ¬a, b, ¬b, aUb, ¬aUb } q
1= {a,b,aUb},
q
2= {¬a, b,aUb}
q
3= {a,¬b, aUb}
q
4= {¬a,¬b,¬aUb } q
5= {a,¬b,¬aUb }
{a,¬b}{a,¬b}{a,b}…
état acceptant
a,b
a,¬b
¬a,¬b a,¬b
¬a,b
{a,b,aUb}
{¬a,b,aUb}
{a,¬b,aUb}
{¬a,¬b,¬aUb}{a,¬b,¬aUb }
Construction de 𝒜
φ- exemple
𝒜
φ= (Q,Q
0,→,𝓕) φ = G (a F b)
S
φ= {a, ¬a, b, ¬b, Fb, ¬Fb, ¬a∨Fb, a∧¬Fb, φ,¬φ}
q
1= {a,b,Fb,a
Fb,φ},q
2= {a,b,Fb,a
Fb,¬φ},q
3= {a,¬b,Fb,a
Fb,φ},q
4= {a,¬b,Fb,a
Fb,¬φ},q
5= {a,¬b,¬Fb,¬(a
Fb),¬φ},q
6= {¬a,b,Fb,a
Fb,φ},q
7= {¬a,b,Fb,a
Fb,¬φ},q
8= {¬a,¬b,Fb,a
Fb,φ},q
9= {¬a,¬b,Fb,a
Fb,¬φ},q
10= {¬a,¬b,¬Fb,a
Fb,φ},q
11= {¬a,¬b,¬Fb,a
Fb,¬φ}.i : états initiaux f : états acceptant if
if
if f
f f
f i
i
Construction de 𝒜
φ- exemple
𝒜
φ= (Q,Q
0,→,𝓕) φ = G (a F b)
On remarque ici que on ne peut jamais aller d’un état contenant φ à un état contenant ¬φ…
q
1q
2q
3q
4q
5q
6q
7q
8q
9q
10q
11?
Construction de 𝒜
φ- exemple
𝒜
φ= (Q,Q
0,→,𝓕) φ = G (a F b)
q1 = {a,b,Fb,a Fb,φ}, q3 = {a,¬b,Fb,a Fb,φ}, q6 = {¬a,b,Fb,a Fb,φ}, q8 = {¬a,¬b,Fb,a Fb,φ}, q10 = {¬a,¬b,¬Fb,a Fb,φ},
q
8q
3q
1q
6q
10{a,b} {a,¬b}
{¬a,¬b}
{¬a,b} {¬a,¬b}
attente d’un b
état acceptant{a,b}{a,b}{a,¬b}{a,¬b}{a,¬b}{¬a,¬b}{¬a,b}…
Construction de 𝒜
φ- exemple φ = G (a F b)
{a,b}(a,b}{a,¬b}{a,¬b}{a,¬b}{¬a,¬b}{¬a,b}…
{¬a,-}
{-,b}
{¬a,¬b}
{a,¬b}
{-,¬b}
{¬a,¬b} q
s
r {-,b}
(version simplifiée)
Problèmes de vérification pour LTL
1)
𝐒 ⊨ φ ? Traces(𝐒) ⊆ mod(φ)𝓛(𝒜
𝐒) ∩ 𝓛(𝒜
¬φ) = ∅ ?
2) 𝐒 ⊨ ¬ φ ? Traces(𝐒) ∩ mod(φ) = ∅
𝓛(𝒜
𝐒) ∩ 𝓛(𝒜
φ) = ∅ ?
3) Est-ce que φ est satisfaisable ?
𝓛(𝒜
φ) ≠ ∅
Problèmes de vérification pour LTL
→