Partie 3 – Logique temporelle description des propriétés

Post on 16-Oct-2021

3 views 0 download

Transcript of Partie 3 – Logique temporelle description des propriétés

Partie 3 – Logique temporelledescription des propriétés

Partie 1 – modèle comportemental de système

Partie 2 – ”langages” de processus

Partie 3 – propriétés

Retour sur la méthode ...

Modèle dusystème

Modèle despropriétés

BESOINS

Spécification / Modélisation

Vérification (outil)

OK? Implantation

Test (outil)

OK?

OK

ERREUR

ERREUR

Le point et les objectifs

un système S peut être modélisé à l'aide de LTSqu'il soit simple ou composite / communicant ou non

Retour sur la méthode ...

STE ???

BESOINS

Spécification / Modélisation

Vérification (outil)

OK? Implantation

Test (outil)

OK?

OK

ERREUR

ERREUR

Le point et les objectifs

un système S peut être modélisé à l'aide de STEqu'il soit simple ou composite / communicant ou non

on a vu comment vérifier des choses simples: absence de blocage: recherche des états puits vivacité/possibilité de faire qqch: trace t ∈ traces(S)

correspondance à un besoin (STE B): SRB, R∈{~,}

Retour sur la méthode ...

STE STE

BESOINS

Spécification / Modélisation

Vérification (outil)

OK? Implantation

Test (outil)

OK?

OKERREUR

ERREUR

Le point et les objectifs

un système S peut être modélisé à l'aide de STEqu'il soit simple ou composite / communicant ou non

on a vu comment vérifier des choses simples: absence de blocage: recherche des états puits vivacité/possibilité de faire qqch: trace t ∈ traces(S)

correspondance à un besoin (STE B): SRB, R∈{~,}

comment définir les propriétés attendues de façon plus générale ? de façon plus abstraite ?

-> une logique spécifique

Retour sur la méthode ...

STE Logique

BESOINS

Spécification / Modélisation

Vérification (outil)

OK? Implantation

Test (outil)

OK?

OKERREUR

ERREUR

Rappels de logique

un système logique (ou logique) est défini par une syntaxe

définit des symboles et des règles pour les combiner→ formules (bien formées)

un système de déduction (ou calcul)permet de raisonner syntaxiquement→ preuves, formules prouvables / théorèmes, |-

une sémantique / fonction d'interprétationpermet d'associer à toute formule un objet dans une structure abstraite appelée modèle→ validité de formules, vérification de modèle, |=

Rappels de logique

un système logique (ou logique) est défini par une syntaxe un système de déduction (ou calcul), [...], |- une sémantique / fonction d'interprétation, [...], |=

un calcul est correct si pour toute formule Φ, |-Φ => |=Φ complet si pour toute formule Φ, |=Φ => |-Φ

une formule de logique est satisfiable s'il existe un modèle qui la vérifie valide si tout modèle la vérifie

Vers une première logique ...

Φ ::= tt | ¬Φ | Φ1∨Φ2 de plus :

ff == ¬tt ¬Φ1∧¬Φ2 == ¬(Φ1∨Φ2) Φ1⇒Φ2 == (¬Φ1)∨Φ2 Φ1⇔Φ2 == (Φ1⇒Φ2)∧(Φ2⇒Φ1)

que nous manque-t-ilpar ex., p/r à la logique des propositions ?→ les ”atomes propositionnels”→ ici (pour nos systèmes/STE) : ?

Vers une première logique ...

revenons sur nos deux machines, M1 et M2: rappel: M1~M2 en quoi se différencient-

elles ?

Vers une première logique ...

revenons sur nos deux machines, M1 et M2: rappel: M1~M2 en quoi se différencient-

elles ?M1: après ?argenton peut toujours avoir ?select_AM2: il existe un ?argentaprès lequel on peutne pas pouvoir avoir ?select_A

HML

Hennessy-Milner Logic

ΦHML

::= tt | ¬Φ | Φ1∨Φ2 | <a>Φ

dérivés ff == ¬tt ¬Φ1∧¬Φ2 == ¬(Φ1∨Φ2) Φ1⇒Φ2 == (¬Φ1)∨Φ2 Φ1⇔Φ2 == (Φ1⇒Φ2)∧(Φ2⇒Φ1) [a]Φ == ¬<a>¬Φ

POSSIBILITEil est possible de faire aet passer dans un état

qui vérifie Φ

NECESSITEtous les a font passer

dans un état qui vérifie Φ

HML

Hennessy-Milner Logic

ΦHML

::= tt | ¬Φ | Φ1∨Φ2 | <a>Φ

dérivés ff == ¬tt ¬Φ1∧¬Φ2 == ¬(Φ1∨Φ2) Φ1⇒Φ2 == (¬Φ1)∨Φ2 Φ1⇔Φ2 == (Φ1⇒Φ2)∧(Φ2⇒Φ1) [a]Φ == ¬<a>¬Φ

M1: après ?argenton peut toujoursavoir ?select_A

→ ???

M2:il existe un ?argentaprès lequel on peutne pas pouvoiravoir ?select_A

→ ???

HML

Hennessy-Milner Logic

ΦHML

::= tt | ¬Φ | Φ1∨Φ2 | <a>Φ

dérivés ff == ¬tt ¬Φ1∧¬Φ2 == ¬(Φ1∨Φ2) Φ1⇒Φ2 == (¬Φ1)∨Φ2 Φ1⇔Φ2 == (Φ1⇒Φ2)∧(Φ2⇒Φ1) [a]Φ == ¬<a>¬Φ

M1: après ?argenton peut toujoursavoir ?select_A

[?argent]<?select_A>tt

M2:il existe un ?argentaprès lequel on peutne pas pouvoiravoir ?select_A

<?argent>[?select_A]ff

Sémantique de HML

interprétation pour un STE (A,S,I,F,T): ||Φ|| ⊆ S ||tt|| = S ||¬Φ|| = S\||Φ|| ||ff|| = ∅ ||Φ1∨Φ2|| = ||Φ1||∪||Φ2|| ||Φ1∧Φ2|| = ||Φ1||∩||Φ2|| ||<a>Φ|| = {s∈S|∃ s'∈ S : (s,a,s') ∈ T ∧ s'∈||Φ||} ||[a]Φ|| = {s∈S|∀s'∈ S: (s,a,s') ∈ T ⇒ s'∈||Φ||}

L |=s Φ (aussi noté s|=Φ) ssi s ∈ ||Φ||

L valide Φ au niveau de l'état s ssi s valide Φ

L|=Φ ssi L|=s0

Φ

Exemple

[?argent]<?select_A>ttM1: après ?argenton peut toujoursavoir ?select_A

[?argent]<?select_A>tt

M2:il existe un ?argentaprès lequel on peutne pas pouvoiravoir ?select_A

<?argent>[?select_A]ff

Exemple

[?argent]<?select_A>ttM1: après ?argenton peut toujoursavoir ?select_A

[?argent]<?select_A>tt

M2:il existe un ?argentaprès lequel on peutne pas pouvoiravoir ?select_A

<?argent>[?select_A]ff

Exemple

[?argent]<?select_A>ttM1: après ?argenton peut toujoursavoir ?select_A

[?argent]<?select_A>tt

M2:il existe un ?argentaprès lequel on peutne pas pouvoiravoir ?select_A

<?argent>[?select_A]ff

Exemple

<?argent>[?select_A]ffM1: après ?argenton peut toujoursavoir ?select_A

[?argent]<?select_A>tt

M2:il existe un ?argentaprès lequel on peutne pas pouvoiravoir ?select_A

<?argent>[?select_A]ff

Exemple

<?argent>[?select_A]ffM1: après ?argenton peut toujoursavoir ?select_A

[?argent]<?select_A>tt

M2:il existe un ?argentaprès lequel on peutne pas pouvoiravoir ?select_A

<?argent>[?select_A]ff

Formules d'actions

on peut autoriser des formules d'actions, α

ΦHML

::= tt | ¬Φ | Φ1∨Φ2 | <α>Φ (plus les dérivés)

α ::= tt | ¬α | α1∨α2 | a (plus les dérivés)

interprétation pour un STE (A,S,I,F,T): ||α|| ⊆ A ||tt|| = A ||a|| = {a} ||¬α|| = A\||α|| ||ff|| = ∅ ||α1∨α2 || = ||α1||∪||α2|| ||α1∧α2 || = ||α1||∩||α2||

||α1⇒α2|| = (A\||α1||)∪||α2||

||α1⇔α2|| = ((A\||α1||)∪||α2||) ∩ ((A\||α2||)∪||α1||)

Sémantique de HML (avec actions) interprétation pour un STE (A,S,I,F,T): ||Φ|| ⊆ S

||tt|| = S ||¬Φ|| = S\||Φ|| ||ff|| = ∅ ||Φ1∨Φ2|| = ||Φ1||∪||Φ2|| ||Φ1∧Φ2|| = ||Φ1||∩||Φ2|| ||<α>Φ|| = {s∈S|∃ s'∈ S, a ∈ A: (s,a,s')∈ T ∧ a∈||α||∧s'∈||Φ||}

||[α]Φ|| = {s∈S|∀ s'∈ S, a ∈ A: (s,a,s') ∈ T ∧ a∈||α||⇒s'∈||Φ||}

L |=s Φ (aussi noté s|=Φ) ssi s∈||Φ||

L valide Φ au niveau de l'état s / s valide Φ

L|=Φ ssi L|=s0

Φ

Exercice HML

écrire en HML: il est possible de faire a il est impossible de faire a état de blocage (deadlock) on ne peut faire que a ou b il est impossible de pouvoir faire a et b faire a rend impossible de faire b on doit forcément faire a

Exercice HML écrire en HML:

il est possible de faire a <a>tt il est impossible de faire a [a]ff état de blocage (deadlock) [tt]ff on ne peut faire que a ou b [¬(a∨b)]ff il est impossible de pouvoir faire a et b

¬(<a>tt∧<b>tt) ou [a]ff∨[b]ff faire a rend impossible de faire b

[a][b]ff i.e <a>tt => [a][b]ff

on doit forcément faire a

<a>tt∧¬<¬a>tt i.e <a>tt ∧[¬a]ff

HML et ~

La logique HML est adéquate p/r à la bissimulation forte (~)

L1~L2 ⇔ (∀Φ ∈ ΦHML

, L1|=Φ ⇔ L2|=Φ)

Donner une formule HML qui différencie L1 et L2 permet de prouver L1~L2

wHML et ≈

on a, de même, une logique adéquate pour ≈ la logique weak HML est adéquate p/r à la

bissimulation faible (≈)

L1 ≈ L2 ⇔ (∀Φ ∈ΦwHML

, L1|=Φ ⇔ L2|=Φ)

Donner une formule wHML qui différencie L1 et L2 permet de prouver L1 ≈ L2

wHML

weak Hennessy-Milner Logic

ΦwHML

::= tt | ¬Φ | Φ1∨Φ2 | <<α>>Φ (plus les

dérivés)

|| <<α>> Φ || = {s∈S|∃ s'∈S, a∈A : s=obs(a)=>s'∧ a∈||α||∧s'∈||Φ||}

||[[α]] Φ|| = {s∈S|∀s'∈S, a∈A : s=obs(a)=>s'∧ a∈||α||⇒s'∈ ||Φ||}

inchangé p/r HML pour les autres

Vers une logique plus expressive

(w)HML permettent d'exprimer des propriétésutiles et sont adéquates p/r ~ (≈)

problème: (w)HML manquent d'expressivitépour exprimer des propriétés ”infinies” ou ”récursives”, type:

invariants/sureté: il est toujours possible de faire a, il n'est jamais possible de faire b, etc.

vivacité: il sera un jour possible de faire a composés: à chaque fois qu'il est possible de faire

a alors il est un jour possible de faire b

Vers une logique plus expressive

(w)HML permettent d'exprimer des propriétésutiles et sont adéquates p/r à ~ (≈)

problème: (w)HML manquent d'expressivitépour exprimer des propriétés ”infinies” ou ”récursives”, type [...]exemples:

il est toujours possible de faire a:<a>tt ∧ [tt]<a>tt ∧ [tt][tt]<a>tt ∧ ...

il sera un jour possible de faire a:<a>tt ∨ <tt><a>tt ∨ <tt><tt><a>tt ∨ ...

Logique linéaire ou arborescente ?

basé états basé actions temps linéaire LTL TLA

(propriétés de séquences (outil SPIN) (outil TLA+)

d'exécution)

(outil LTSA)

temps arborescent CTL HML, ACTL, ACTL*

(propriétés d'arbres (outil NuSMV)

d'exécution) CTL* (outils CWB-NC, MCRL2)

action-based LTL

modal mu-calculus, GCTL

R. Mateescu, Model Checking of Action-Based Concurrent Systems, VTSA'08.

capturent l'indéterminismedistinguent nos 2 machines à café(mêmes séquences/traces mais pas ~)

on s'intéresse aux observations (étiquettes des transitions) et non aux états

HML + regform : intuition HML sans formules d'actions :

<a>Φil existe une transition aqui ammène dans un état qui vérifie Φ

[a]Φchaque transition aammène dans un état qui vérifie Φ

HML avec formules d'actions : < α >Φ

il existe une transition qui vérifie αet qui ammène dans un état qui vérifie Φ

[α]Φchaque transition qui vérifie αammène dans un état qui vérifie Φ

HML + regform : intuition pourquoi ne pas autoriser une expression dénotant

une trace dans α ? <a.b.c>Φ

il existe une séquence de transitions a, b et cqui ammène dans un état qui vérifie Φ

[a.b.c]Φchaque séquence possible de transitions a, b et cammène dans un état qui vérifie Φ

et en allant plus loin, pourquoi ne pas pouvoir avoir : 1 ou + : <a+>Φ, [a+]Φ 0 ou + : <a*>Φ, [a*]Φ formules régulières et formules d'action :

<α.α>Φ, [α.α]Φ, <α+>Φ, [α*]Φ, <α*>Φ, [α*]Φ

Formules régulières on peut autoriser des formules régulières, R

ΦHMLReg

::= tt | ¬Φ | Φ1∨Φ2 | <R>Φ (plus les dérivés)

R ::= ε| α | R1.R2 | R1+R2 | R+ | R*

α ::= tt | ¬α | α1∨α2 | a (plus les dérivés)

interprétation :

<ε>Φ = Φ <α>Φ et [α] Φ voir HML

<R1.R2>Φ = <R1><R2>Φ [R1.R2]Φ = [R1][R2]Φ

<R1+R2>Φ = <R1>Φ ∨ <R2>Φ [R1+R2]Φ = [R1]Φ ∧ [R2]Φ

<R*>Φ = Φ ∨<R>Φ ∨ <R><R>Φ ∨ … [R*]Φ = Φ ∧[R]Φ ∧ [R][R]Φ ∧ ...

<R+>Φ = <R.R*>Φ [R+]Φ = [R.R*]Φ

Formules régulières : exemples il est possible de faire la suite a,b,c : ? il est toujours possible de faire a : ? il sera un jour possible de faire a : ? Φ est toujours vrai : ? Φ sera vrai un jour : ? pas de blocage : ? il est impossible de faire deux ”entrée” sans faire un

”sortir” entre les deux :?

après l'envoi d'un message, il sera reçu un jour : ?

Formules régulières : exemples il est possible de faire la suite a,b,c : <a.b.c>tt il est toujours possible de faire a : [tt*]<a>tt il sera un jour possible de faire a : <tt*><a>tt Φ est toujours vrai : [tt*]Φ Φ sera vrai un jour : <tt*>Φ pas de blocage : [true*]<true>tt il est impossible de faire deux ”entrée” sans faire un

”sortir” entre les deux :[tt*.entrée.(¬sortir)*.entrée]ff

après l'envoi d'un message, il sera reçu un jour : [envoi]<tt*.reception>tt

Le point et les objectifs on a vu comment décrire des systèmes (STE) on a vu comment décrire des propriétés

utilisation de logique(s) temporelles: (w)HML, rf-HML propriétés de sûreté:

quelque chose de mal n'arrive jamais : [tt*] ¬Fmal invariant : [tt*] Fbien

propriétés de vivacité: quelque chose de bien finit toujours par arriver: <tt*> Fbien

combinaisons

comment les vérifier en pratique ? → outils lps2bpes -f F.mcf S.lps S_F.bpes

pbes2bool S_F.bpes

Sources d'éléments de transparents

P. André et A. Vailly. Conception des systèmes d'information, Panorama des méthodes et des techniques, Ellipses, 2001.http://www.sciences.univ-nantes.fr/info/perso/permanents/andre/COURS/

R. Mateescu. Model Checking of Action-Based Concurrent Systems, Summer school on Verification Technology, Systems and Applications (VTSA'08)http://www.mpi-inf.mpg.de/VTSA08/

A. Mathijssen et al. Behavioural Analysis using mCRL2, IPA Course on Formal Methods, TU Eindhoven, 2008 http://www.win.tue.nl/~fstapper/talks/ipacfm2008-06-26.pdf

Quelques outils

CADP : http://www.inrialpes.fr/vasy/cadp/ CWB-NC : http://www.cs.sunysb.edu/~cwb/ LTSA : http://www.doc.ic.ac.uk/ltsa/ MCRL2 : http://www.mcrl2.org/ MEC4 : http://altarica.labri.u-bordeaux.fr/wiki/tools:mec_4 SMV : http://www-2.cs.cmu.edu/~modelcheck/smv.html SPIN : http://spinroot.com/spin/whatispin.html

Bibliographie pour aller + loin A. Arnold. Systèmes de transitions finis et sémantique des processus communicants,

Masson, 1992. [angl.,Prentice Hall, 1994]

Ph. Schnoebelen, B. Bérard, M. Bidoit, F. Laroussinie et A. Petit. Vérification de logiciels : techniques et outils du model-checking, Vuibert, 1999. [angl.,Springer,2001]

M. Huth et M. Ryan. Logic in Computer Science. Modelling and reasoning about systems, Cambridge Univ. Press, 2002.

R. Mateescu. Logiques temporelles basées sur actions pour la vérification des systèmes asynchrones, TSI, 22(4):461-495, 2003.http://www.inrialpes.fr/vasy/Publications/Mateescu-03-b.html

H. Garavel. Défense et illustration des algèbres de processus, 2003.http://www.inrialpes.fr/vasy/Publications/Garavel-03.html

R. Milner. Communication and Concurrency, Prentice Hall, 1989.

R. Cleaveland and S.A. Smolka. Process Algebra, Encyclopedia of Electrical Engineering. John Wiley & Sons, 1999.

J. Magee et J. Kramer. Concurrency: State Models & Java Programs, 2nde édition, Wiley, 2006http://www.doc.ic.ac.uk/~jnm/book/