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 :

Un système informatique doit répondre à des exigences.

Il faut donc une contrepartie mathématique pour

\RA PP:MP\forall P \in \mathcal{P} : M \models P “Model Checking” (technique de vérification formelle)

Systèmes de transition étiquetés (STE)

Exemple de l’ascenseur :
ascenseur
Exemple du distributeur de boissons :
distrib_boissons
q0q_{0} est vide :
Valeur de vérité de conjonction sur un ensemble vide : eE:\forall e \in E : vrai (toujours vrai)
Valeur de vérité de disjonction sur un ensemble vide : eE:\exists e \in E : faux (toujours faux)

Les STE peuvent être infinis.

Par exemple :
exemple_ste

Disgression

Relation binaire des ensembles/domaines XX et YY : RX×Y\mathcal{R} \subseteq X \times Y avec R\mathcal{R} la relation de XX à YY.
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
    disgression

Définition formelle

Un STE SS est un tuple S=<Q,q0,Act,,AP,L>S = <Q, q_{0}, \text{Act}, \ra, AP, \mathcal{L}> tel que :

Exemple

ascenseur_ex

QA={q0,QA}q0A=q0ActA={aller en bas,aller en haut}A={(q0,aller en bas,q1),(q1,aller en haut,q0)}AP={haut,bas}L(q0)={haut},L(qA)={bas} \begin{aligned} Q_{A} &= \{q_{0}, Q_{A}\} \\\\ q^{A}_{0} &= q_{0} \\\\ \text{Act}_{A} &= \{\text{aller en bas}, \text{aller en haut}\} \\\\ \ra_{A} &= \{(q_{0}, \text{aller en bas}, q_{1}), (q_{1}, \text{aller en haut}, q_{0})\} \\\\ AP &= \{\text{haut}, \text{bas}\} \\\\ \mathcal{L}(q_{0}) &= \{\text{haut}\}, \mathcal{L}(q_{A}) = \{\text{bas}\} \\\\ \end{aligned}

Communication

Pour obtenir un STE de système global, on fait un produit. Pour ce faire, on définit une table de synchronisation TuPT^{P}_{u} (par abus de notation : TT).
Le système global S=SuTSPS = S_{u} \|_{T} S_{P}

SuS_{u} SpS_{p} SS
press_button button_push button
pass detect D_P
- O O
- Close Close

Définition formelle

Soient S1=<Q1,q01,Act1,1,AP1,L1>S_{1} = <Q_{1}, q_{0}^{1}, \text{Act}_{1}, \ra_{1}, AP_{1}, \mathcal{L}_{1}> et S2=<Q2,q02,Act2,2,AP1,L2>S_{2} = <Q_{2}, q_{0}^{2}, \text{Act}_{2}, \ra_{2}, AP_{1}, \mathcal{L}_{2}>

Composition S=S1TS2S = S_{1} \|_{T} S_{2} est un tuple S=<Q,Q0,Act1,,AP,L>S = <Q, Q_{0}, \text{Act}_{1}, \rightarrow, AP, \mathcal{L}> avec T:Act1{}×Act2ActU{τ}T : \text{Act}_{1} \cup \{-\} \times \text{Act}_{2} \cup \rightharpoondown \text{Act}_{U}\{\tau\}
où :

Buffer à une place

buffer

Buffer à 2 places : B=B1TB2B = B_{1} \|_{T} B_{2}

T:Act1{}×Act2{}Act{τ}T : \text{Act}_{1} \cup \{-\} \times \text{Act}_{2} \cup \{-\} \rightharpoondown \text{Act} \cup \{\tau\}

B1B_{1} B2B_{2} BB
get - get
put get τ\tau
- put put

buffer-sync

Buffer à trois places : BTB3B \|_{T} B_{3}

(B1TB2)TB3B1TB2TB3 (B_{1} \|_{T} B_{2}) \|_{T} B_{3} \equiv B_{1} \|_{T} B_{2} \|_{T} B_{3}

Modélisation : modèle mathématique d’un système de manière formelle.

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 Ψ \varphi, \Psi == P | \neg \varphi | \varphi \wedge \Psi | \varphi \vee \Psi | X \varphi | F \varphi | G \varphi | \varphi\ U\ \Psi

Sémantique

Interprétation sur des traces infinies (ω\omega word)
Soit S=<Q,q0,Act,,AP,L>S = <Q, q_{0}, \text{Act}, \ra, AP, \mathcal{L}> un STE.
Une trace infinie de SS à partir d’un état s1Qs_{1} \in Q est de la forme
ρ=s0,s1,s2...\rho = s_{0}, s_{1}, s_{2}... tqt_{q} si?ActSi+1s_{i} \xrightarrow{? \in \text{Act}} S_{i+1} pour tout ii.

Notations : ρ(i)=Si\rho(i) = S_{i}, ρi=Si,Si+1,\rho^{i} = S_{i}, S_{i+1}, \dots ρi=,Si1,Si\rho_{i} = \dots, S_{i-1}, S_{i}
Exeq(q)\text{Exeq}(q) toutes les traces infinies commençant à l’état qq.

La sémantique est positionnelle.

Syntaxe minimale

φ,Ψ==P¬φφΨXφφ U Ψ \varphi, \Psi == P | \neg \varphi | \varphi \wedge \Psi | X \varphi | \varphi\ U\ \Psi
Fφ=T U φ F\varphi = T\ U\ \varphi
Gφ=¬F¬φ G\varphi = \neg F \neg \varphi

Remarques

  1. On insiste sur les traces infinies

Exemple

Ψ=¬Xφ\Psi = \neg X \varphi Ψ=X¬φ\Psi = X \neg \varphi
Traces infinies ΨΨ\Psi \Leftrightarrow \Psi'
Traces finies ΨΨ\Psi' \RA \Psi

  1. S?φS \vDash^{?} \varphi : Quand est-ce que SS satisfait φ\varphi ?
    ssi ρExeq(q0):ρ,0φ\forall \rho \in \text{Exeq}(q_{0}) : \rho, 0 \vDash \varphi

Exemple

On reprend l’exemple du Buffer à la fin du cours précédent.
Bv1v2B \vDash v_{1} \wedge v_{2} BG(v1v2)B \nvDash G(v_{1} \wedge v_{2})
BP1v2B \vDash P_{1} \RA v_{2} BG(P1v2)B \nvDash G(P_{1} \RA v_{2})

  1. GφG\varphi formule de sûreté (safety, good things always happen, bad thing never happen)
    G(¬bug)G(\neg\text{bug})
    FφF \varphi formule de liveness (a good thing eventually happen)

Exercice

Quelle est la relation entre ces trois propriétés ?

exo_2
ρiΨ2\rho_{i} \vDash \Psi_{2} mais ρiΨ1\rho_{i} \nvDash \Psi_{1} et ρiΨ3\rho_{i} \nvDash \Psi_{3}

exo_3
ρiΨ1\rho_{i} \vDash \Psi_{1}, ρiΨ2\rho_{i} \vDash \Psi_{2}, ρiΨ3\rho_{i} \nvDash \Psi_{3}

Exercice

Vous atterrissez sur une planète NN où : s’il pleut un jour, alors il pleuvra le lendemain.
Situation : il pleut
Que peut-on conclure ?

  1. Il pleut tous les jours sur la planète NN.
  2. Il pleuvra demain sur la planète NN.
  3. Il a plu hier sur la planète NN.
  4. Il pleuvra tous les jours sur la planète NN.

PP proposition démontrant “il pleut sur la planète NN” : (ii le jour d’arrivée)
NG(PXP)N \vDash G(P \vDash XP), NiPN_{i} \vDash P

  1. φΨGP\varphi \wedge \Psi \RA GP donc faux
  2. φΨ(Ni+1P)\varphi \wedge \Psi \RA (N_{i+1} \vDash P) donc vrai
  3. φΨ(Ni+1P)\varphi \wedge \Psi \nRightarrow (N_{i+1} \vDash P) donc faux
  4. φΨ(NiGP)\varphi \wedge \Psi \RA (N_{i} \vDash GP) donc vrai

Globally c’est sur la propriété, pas sur la trace

Modélisation

Exemple

dessin

S=(P1P2B)T S = (P_{1} \| P_{2} \| B)_{T}

Table de synchronisation

ActB_{B} \cup {-} ActP1_{P_{1}} \cup {-} ActP2_{P_{2}} \cup {-} ActS_{S} \cup {τ\tau}
isTrue - isTrue τ\tau
isFalse isFalse - τ\tau
setTrue setTrue - τ\tau
setFalse - setFalse τ\tau
- wr - ω\omega
- - rd r
sync_example

LTE

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

graph_prog

Définition

Syntaxe

Un graphe de programme est un tuple
<L,l0,,< L, l_{0}, \longleftrightarrow, Val0>_{0}> sur un ensemble de variables
Var = EVar \cup BVar

exemple_code

Sémantique

Rappel : \wedge = ET

La sémantique d’un graphe de programme <L,l0,,< L, l_{0}, \longleftrightarrow, Val0>_{0}> sur Var est donné par un STE <Q,q0,< Q, q_{0}, Act,,, \rightarrow, AP,L>, \mathcal{L}> tel que :

Produit

Le produit P(g1,g2)=g1g2\mathbb{P}(g_{1,}g_{2}) = g_{1}||| g_{2} (||| = 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),,\mathbb{P}(g_{1,}g_{2}) = <L_{1 \times}L_{2}, (l_{0^{1},}l_{0}^{2}), \hookrightarrow, Val0>_{0}> sur Var1_{1} \cup Var2_{2}
P(g1,g2)\mathbb{P}(g_{1,}g_{2}) est défini ssi x\forall x \in Var1_{1} \cap Var2:_{2} : Val01(x)=_{0}^{1}(x) = Val02(x)_{0}^{2}(x)

sync_example
Propriété pour write :
G((writtenX(¬written))X(¬written U read)) G((\text{written} \wedge X(\neg \text{written})) \RA X(\neg \text{written}\ U\ \text{read}))

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.

distrib-boisson

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Ψ \varphi, \Psi ::= P|\neg \varphi|\varphi\wedge\Psi|EX\varphi|AX\varphi|E\varphi U\Psi|A\varphi U\Psi
avec parfois :

Equivalence LTL/CTL

Fφ=TUφ F\varphi = TU\varphi

Opérateur CTL

QTQT

Sémantique

Rappel xyx \vDash y = xx satisfait yy.
Rappel x:yx : y = xx tel que yy

Système de transitions étiquetées : S=<Q,q0,Act,,AP,L>S = <Q, q_{0}, \text{Act}, \ra, AP, \mathscr{L}>

On raisonne sur les états dans QQ soit qQq\in Q.

Exemple 1

AGPAG_{P}
AGP
En LTL, ça correspond à GPG_{P}.


EGpEG_{p}EGP
En LTL, il n’y a pas d’équivalent.


EFPEF_{P}
EFP
En LTL, cette propriété est inexplicable : c’est la reachability (inatteignable).

Exemple 2

AFPAF_{P}
AFP
En LTL, c’est FPF_{P}


AFEGPAFEG_{P}
AFEGP


Rappel : UU = Until

pAUqpAU_{q}
PAUQ

Question du partiel de l’année dernière

QCM

partiel

EF : je peux atteindre un état (reachability)

Exemple : Évaluer une formule CTL

φ=AG(a((EXc)EUb)) \varphi = AG(a \RA ((EX_{c})EUb))
valuation_ctl

C a b c EXcEX_{c} Ψ=(EX)EUb\Psi = (EX)EUb aΨa\RA\Psi
q0q_{0} \top \bot \bot \top \top \top
q1q_{1} \bot - - - - \top
q2q_{2} \bot - - - - \top
q3q_{3} \bot - - - - \top
q4q_{4} \top \top \bot \bot \top \top
q5q_{5} - - - - - -

EXcEX_{c} : il existe un chemin quelque soit satisfait cc

SAG(aΨ)φ S\vDash \overbrace{AG(a \RA \Psi)}^\varphi

Exemples de propriétés

CTL vs LTL

Expressivité

EFpEFp

EFpEFp 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\neg EFp est G¬pG\neg p (= quel que soit le chemin, j’ai ¬p\neg p).
La négation de G¬pG\neg p est FpFp qui est plus forte que EFpEFp.

\RA la négation du chemin est différente dans CTL que dans LTL.

AGEFpAGEFp

AGEFpAGEFp n’est pas exprimable en LTL. (= pour tout les chemins, pour tout les états, j’ai un chemin à partir duquel je peux faire pp) avec (AGAG = tous les chemins et tous les états)

Exemple

agefp

FGpFGp (propriété de stabilité)

(pour tous les chemins, je vais trouver un chemin sur lequel pp est vrai et restera toujours vrai

Tentative 1 de transformation : AFAGpAFAGp

Pour tous les chemins, je trouverais un état à partir duquel tous les états satisfont pp
afagp
SFGpS \vDash FGp, en dépliant :
afagp-2
SAFAGpS \nvDash AFAGp

Donc : (AFAGp)CTL(FGp)CTL(AFAGp)_{CTL} \RA (FGp)_{CTL}

Tentative 2 de transformation : AFEGpAFEGp

afegp
SAFEGpS' \vDash AFEGp
SFGpS' \nvDash FGp

Donc : (FGp)LTL(AFEGp)CTL(FGp)_{LTL} \RA (AFEGp)_{CTL}

Conclusion

En terme d’expressivité, LTL et CTL sont incomparables !

Pouvoir de distinction

distinct-s1

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

distinct-s2
ils sont bissimilaires

Réseaux de Petri

petri1

Définition formelle 1

Syntaxe d’un réseau de Petri

Un réseau de Petri RR est un typle R=<P,T,R = <P, T, Pre,, Post>> où :

Un réseau de Petri marqué est un tuple <R,M><R, M> où :

Sémantique

Définition formelle 2

Syntaxe d’un réseau de Petri

R=<P,T>R = <P, T> où :

Notation

On note t=t,tTt={}^{\bullet}{}t, t^{\bullet} \in T avec t{}^{\bullet}{}t l’incidence arrière et tt^{\bullet} l’incidence avant

Sémantique

tTt\in T
M[t>M[t> ssi MtM \leq {}^{\bullet}{}t (comparaison de vecteurs éléments à éléments)
M[t>MM=Mt+tM[t>M' \RA M' = M-{}^{\bullet}{}t + t^{\bullet}

petri2

Graphe de marquages

Soit <R,M><R, M> un réseau de Petri marqué et M0M_{0} son marquage initial.
Le graphe de marquages accessibles depuis M0:A(R,M0)M_{0} : \mathcal{A}(R, M_{0}) est donné par l’algorithme suivant :
A0={M0}\mathcal{A}_{0}=\{M_{0}\}
Ai={MNP  MAi1tT:M[t>M}\mathcal{A}_{i}=\{M\in\N^{P}\ |\ \exists M' \in \mathcal{A}_{i-1}\quad \exists t\in T : M'[t>M\}
A(R,M0)=i0Ai\mathcal{A}(R, M_{0})= \cup_{i\geq 0}\mathcal{A}_{i}

petri1-graphe

reseau-nn-bornee
[0]t[1]t[2]t[3]t [0]\xrightarrow{t}[1]\xrightarrow{t}[2]\xrightarrow{t}[3]\xrightarrow{t}\dots
R1R_{1} est non-borné \RA graphe de marquages infini

Définition

Un réseau de Petri marqué <R,M0><R, M_{0}> est borné ssi pP\forall p \in P. pp est bornée.
Une place pp est bornée : kNMA(R,M0)\exists k\in \N \forall M \in \mathcal{A}(R, M_{0}) : MpkM_{p}\leq k

Exercice : Le pont scandinave

Sur Tina (nd pour lancer l’interface graphique)

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 AA traverse en 10 minutes.
La personne BB traverse en cinq minutes.
La personne CC traverse en deux minutes.
La personne DD traverse en une minute.

  1. 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.

pont
CC et DD traversent : 2 minutes
CC revient avec la lampe : 4 minutes
AA et BB traversent : 14 minutes
DD revient avec la lampe : 15 minutes
CC et DD traversent : 17 minutes

Ensemble des marquages accessibles A(R,M0)\mathcal{A}(R, M_{0})

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><R, M_{0}>, le graphe des marquages accessibles G(R,M0)=<A(R,M0,,L)>G(R, M_{0}) = <\mathcal{A}(R, M_{0}, \ra, L)>

Définition (2)

G(R,M0)G(R, M_{0}) est un STE : <Q,q0,<Q, q_{0}, Act,,, \ra, AP,L>, \mathcal{L}>

Les “bonnes” propriétés d’un réseau de Petri

Dans <R,M0><R, M_{0}>.

La vivacité

Transition vivace
Quel que soit mon marquage actuel, j’ai une manière de tirer la transition tt maintenant ou dans le futur.
“Possibilité de sensibilisé depuis n’importe quelle transition.”
Une transition tt est vivante si et seulement si MG(R,M0) σL\forall M \in G(R, M_{0}) \exists\ \sigma \in L^{*} tel que MσMM[tM\xrightarrow{\sigma}M' \wedge M'[t\rangle

\RA Un réseau qui ne se bloque pas \neq un réseau vivant

Un réseau est vivant ssi toutes ses transitions sont vivantes.

Non-blocage

<R,M0><R, M_{0}> est sans blocage ssi si MGR,M0tL:M[t\forall M\in G-R, M_{0} \exists t \in L : M[t\rangle

Un non-blocage n’implique pas une vivacité.

Sans blocage et non vivant : nb-neq-viva
Réseau zombie : vivant, mais bloquant (mort-vivant) : mort-vivant \RA 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 tt est quasi-vivante ssi MG(R,M0):M[t\exists M \in G(R, M_{0}) : M[t\rangle

Un réseau de Petri est quasi vivant ssi toutes ses transitions le sont.

Quasi vivant et bloquant : quasi-vivace

Réinitialisibilité

Quel que soit le marquage accessible, il y a possibilité dans le marquage initiale M0M_{0}

Réseau de Petri : R,M0R, M_0 est réinitialisable si et seulement si :

Définition faible

MG(R,M0)σL:MσM0\forall M \in G(R, M_{0}) \exists \sigma \in L^{*} : M \xrightarrow{\sigma} M_{0}
Dans ce cas, un réseau réinitialisable peut être bloqué sur son marquage initiale.

Définition forte

L+L^{+} : Sigma non-vide

MG(R,M0)σL+:MσM0\forall M \in G(R, M_{0}) \exists \sigma \in L^{+} : M \xrightarrow{\sigma} M_{0}

Dans ce cas, un réseau réinitialisable est non bloquant.

Réseau borné

Place bornée
Une place pp est bornée ssi kN\exists k \in \N tel que MG(R,M0):M(p)k\forall M \in G(R, M_{0}) : M(p) \leq k

Un réseau de Petri est borné ssi toutes ses places le sont.

Réseau non borné, mais réinitialisable : trivial


ex-gr-marquage

Tina

Tina

Relations entre les propriétés

Vivant ?\xRightarrow{?} sans-blocage

(?)(\xRightarrow{?}) Sous hypothèse

Réinitialisable \RA sans blocage

Fausse avec la définition faible
Vraie avec la définition forte

Réinitialisable et vivant

Sans rapport
reinit-nonviv

viv-non-reinit

Bornée et vivant

Sans rapport
vivant-nonbornee

Quand non borné, alors pas de graphe de marquage

bornée-nonvivant

Borné et réinitialisable

Sans rapport
nonborné-reinit
bornee-noreinit

Non bornée et bloquant

non-bornée-bloquant

Réinitialisibilité en LTL (définition faible)

GF(p:M(p)=M(0))GF(M=M0) \begin{aligned} GF&(\forall p : M(p) = M(0)) \\\\ GF&(M = M_{0}) \end{aligned}

Analyse en Composantes fortement connexe (CFC)

Définition

Soit pour un graphe G=<S,>G = <S, \ra> un graphe orienté et CSC \subseteq S est appelée une composante fortement connexe (CFC, SCC - “Strongly Component Connexe” en anglais) ssi s,sC,σ,σsσssσs\forall s, s' \in C, \exists \sigma, \sigma' \ra^{*} s\xrightarrow{\sigma}s' \wedge s'\xrightarrow{\sigma'}s (avec σ\sigma des séquences)
Les CFC nous permettent de partionner un graphe de marquages modulo une relation d’équivalence G/CFC:MCGCMG\text{/}_{\sim CFC}: M\sim_{CGC}M' ssi MM et MM' appartiennt à la même CFC.
graphe_cfc

Analyse en CFC

Soit <R,M0><R, M_{0}> un réseau de Petri marqué borné.

exercice

R\mathcal{R} est vivant, non réinitialisable et non bloquant.

Correction partielle

Question 1

Acc = EFpEF_{p} (CTL)
Safe = G(¬p)G(\neg p) (LTL)

Si \nvDash Acc \RA SS \vDash Safe : vrai

Question 2

R,M0R, M_{0}, TT \neq \varnothing

Question 3

Pour toute exécution infinie π\pi de SS, il existe un état ss satisfaisant pp et tous les états suivants ss dans π\pi satisfait pp

Quantifier sur les traces (“Pour toute exécution infinie”), donc exprimable en LTL.

Question 4

Question 5

correction-q5

Exercices

Question 1

q1

Question 2

Quelque soit l’état accessible de SS, il existe une manière de satisfaire la proposition pp à partir de cet état (maintenant ou dans le futur).

Indice : quantification sur les états, donc CTL faisable.

En CTL : AGEFpAGEFp
En LTL : pas exprimable

Question 3

SAFAGpS\vDash AFAGp (CTL)

Question 4

q4

Question 5

q5

Algorithmes de Model Checking pour LTL

LTL : Propriété φ\varphi \in LTL

Idée : Construire un automate qui reconnait tous les ω\omega mots appartenant à la sémantique de φ\varphi : φ\lb\varphi\rb
On a besoin d’un automate capable de reconnaître les mots infinis !

Automate de Büchi généralisé (ABG) : <Q,q0,,F><Q, q_{0}, \ra, \mathcal{F}>

F={F1,,Fk}\mathcal{F} = \{\mathcal{F}_{1}, \dots, \mathcal{F}_{k}\} 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\mathcal{F}_{i}.

Construire un ABG Aφ\mathcal{A}_{\varphi}

L’ensemble d’états QQ.
Chaque qQq \in Q sera associé à un ensemble de sous-formule dans SfφSf_{\varphi}
q0Qq_{0} \subseteq Q contient tous les états associés où φ\varphi apparaît.
Comment choisir les sous-ensembles de SfφSf_{\varphi} associés aux états dans QQ ?

États

Cohérence logique

ψ1ψ2qψ1,ψ2q¬(ψ1ψ2)q¬ψ1q ou ¬ψ2qψ1q ou ψ2qψ1ψ2qψ1q ou ψ2q¬(ψ1ψ2)qψ1q et ψ2qψq¬ψq \begin{aligned} \psi_{1} \wedge \psi_{2} \in q \RA& \psi_{1}, \psi_{2} \in q \\ \neg (\psi_{1} \wedge \psi_{2}) \in q \RA& \neg\psi_{1}\in q \text{ ou } \neg\psi_{2}\in q \\ & \psi_{1} \notin q \text{ ou } \psi_{2} \notin q \\ \psi_{1} \vee \psi_{2} \in q \RA& \psi_{1} \in q \text{ ou } \psi_{2} \in q \\ \neg (\psi_{1} \vee \psi_{2}) \in q \RA& \psi_{1} \notin q \text{ et } \psi_{2} \notin q \\ \psi \in q \RA& \neg \psi \notin q \end{aligned}

Maximalité

Pour chaque ψSfφ\psi \in Sf_{\varphi}, chaque état contient ψ\psi ou ¬ψ\neg\psi

Conformité

Exemple pU(rs)p \text{U} (r \vee s)

Sfφ={p,¬p,r,¬r,s,¬s,rs,¬(rs),pU(rs),¬()} Sf_{\varphi}=\{p, \neg p, r, \neg r, s, \neg s, r\vee s, \neg(r\vee s), p \text{U}(r \vee s), \neg()\}

Transitions

On met une transition (q,σ,q)Q×2AP×QP(AP)eˊtendue avec les neˊgations des proprieˊteˊs\begin{aligned}(q, \sigma, q') \in Q \times& 2^{\text{AP}} \times Q \\ &\mathcal{P}(\text{AP}) \\&\hookrightarrow\text{étendue avec les négations des propriétés}\end{aligned} ssi :

États acceptants

Pour toute sous-formule ψ1Uψ2Sfφ\psi_{1}\text{U}\psi_{2}\in Sf_{\varphi}
Fψ1Uψ2F:Fψ1Uψ2={qQψ2qψ1Uψ2q} \mathcal{F}_{\psi_{1} \text{U}\psi_{2}} \in \mathcal{F} : \mathcal{F}_{\psi_{1} \text{U}\psi_{2}} = \{q\in Q | \psi_{2} \in q \vee \psi_{1} \text{U} \psi_{2} \notin q\}

Exemple φ=Xp\varphi = \text{X}p

exemple

Tous les états sont acceptants parce que c’est XpU true\text{X}p \text{U true} et tous les états satisfont true.
La complexité est exponentielle sur les sous-systèmes de φ\varphi.

φ=pUr\varphi = p \text{U} r
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)}}Q = \begin{aligned}\{&\{p, r, p \text{U} r\}, \{p, \neg r, p \text{U} r\}, \{\neg p, r, p \text{U} r\}, \\ &\{\neg p, \neg r, p \text{U} r\}, \{p, r, \neg(p \text{U} r)\}, \{p, \neg r, \neg(p \text{U} r)\}, \\ &\{\neg p, r, \neg(p \text{U} r)\}, \{\neg p, \neg r, \neg(p \text{U} r)\}\}\end{aligned}
On retire ceux qui sont non-conforme :
Q={{p,r,pUr},{p,¬r,pUr},{¬p,r,pUr},{p,¬r,¬(pUr)},{¬p,¬r,¬(pUr)}}Q = \{\{p, r, p \text{U} r\}, \{p, \neg r, p \text{U} r\}, \{\neg p, r, p \text{U} r\}, \{p, \neg r, \neg(p \text{U} r)\}, \{\neg p, \neg r, \neg(p \text{U} r)\}\}

dessin

En pratique : S?φS \overset{?}{\vDash} \varphi

Complexité d’algo : PSPACE-Complet


¬(P UR)¬P U¬R¬(P UR)=G(¬r)¬r U(¬p¬r) \begin{aligned} \neg(P\ \text{U}R) &\nLeftrightarrow \neg P\ \text{U}\neg R \\ \neg(P\ \text{U}R) &= G(\neg r) \vee \neg r\ \text{U} (\neg p \wedge \neg r) \end{aligned}

Algorithmes de model checking pour CTL

Pour chaque état qQq \in Q, dédier un champ qφB({,})q\varphi \in \B (\in \{\top, \bot\})
Procédure marquage (φ)(\varphi) :
Cas φ=P:Pour qQq.φPL(q) \begin{aligned} \text{Cas }& \varphi = P : \\ \quad& \text{Pour } q \in Q \\ &\quad q.\varphi \leftarrow P\in\mathcal{L}(q) \end{aligned}

Cas φ=¬ψ:Pour qQq.φ¬q.ψ \begin{aligned} \text{Cas }& \varphi = \neg\psi : \\ \quad& \text{Pour } q \in Q \\ &\quad q.\varphi \leftarrow \neg q.\psi \end{aligned}
Cas φ=ψ1ψ2:Marquage(ψ1), Marquage(ψ2)Pour qQq.φq.ψ1q.ψ2 \begin{aligned} \text{Cas }& \varphi = \psi_{1} \wedge \psi_{2} : \\ \quad& \text{Marquage(}\psi_{1}\text{), Marquage(}\psi_{2}\text{)} \\ \quad& \text{Pour } q \in Q \\ &\quad q.\varphi \leftarrow q.\psi_{1} \wedge q.\psi_{2} \end{aligned}
Cas φ=ψ1ψ2:Marquage(ψ)Pour qQq.φPour qqSi qψ=q.φ \begin{aligned} \text{Cas }& \varphi = \psi_{1} \wedge \psi_{2} : \\ \quad& \text{Marquage(}\psi\text{)} \\ \quad& \text{Pour } q \in Q \\ &\quad q.\varphi \leftarrow \bot \\ &\quad \text{Pour } q\ra q' \in \ra \\ &\qquad \text{Si } q' \psi = \top \\ &\quad\qquad q.\varphi \leftarrow \top \end{aligned}
Cas φ=AX.ψ¬EX¬φ:Cas φ=ψ1EUψ2Marquage(ψ1), Marquage(ψ2)Pour qQq.φQUPour qQSi q.ϕ2=QUQU U{q}q.φTant que QU¬Piocher qQUPour qqSi q.ψ1=q.φ=QUQU U{q}q.ψQUQU\{q} \begin{aligned} \text{Cas }& \varphi = \text{AX}.\psi \quad \neg\text{EX}\neg\varphi : \\ \quad& \text{Cas } \varphi = \psi_{1}\text{EU}\psi_{2} \\ &\qquad \text{Marquage(}\psi_{1}\text{), Marquage(}\psi_{2}\text{)} \\ &\qquad \text{Pour } q \in Q \\ &\quad\qquad q.\varphi \leftarrow \bot \\ &\qquad \text{QU} \leftarrow \varnothing \\ &\qquad \text{Pour } q \in Q \\ &\quad\qquad \text{Si } q.\phi_{2} = \top \\ &\qquad\qquad \text{QU} \leftarrow \text{QU U}\{q\} \\ &\qquad\qquad q.\varphi \leftarrow \top \\ \quad& \text{Tant que QU} \neg \varnothing\\ &\qquad \text{Piocher } q \in\text{QU} \\ &\qquad \text{Pour } q' \ra q \in \ra \\ &\quad\qquad \text{Si } q'.\psi_{1} = \top \wedge q'.\varphi = \bot \\ &\qquad\qquad \text{QU} \leftarrow \text{QU U}\{q'\} \\ &\qquad\qquad q'.\psi\leftarrow \top \\ &\qquad \text{QU} \leftarrow \text{QU} \backslash\{q\} \end{aligned}

Exercice

Cas : φ=ψ1AUψ2\varphi = \psi_{1}\text{AU}\psi_{2}

Complexité

O(φ.(Q+)) O(|\varphi|.(|Q|+|\ra|))
\RA Complexité polynomiale