Introduction, principes et utilisation du logiciel UPPAAL...
Embed Size (px)
Transcript of Introduction, principes et utilisation du logiciel UPPAAL...

Vérification formelle par model-checking
Introduction, principes etutilisation du logiciel UPPAAL
Steve LIMAL doctorant

2Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Planning de la journée
ProblématiquePrincipe du model-checking
• définitions• principe général• Modèle de comportement
- Difficulté de génération- application à UPPAAL
• Modèle de propriété- la logique CTL- exemple de propriété
Traitements de casÉvaluation

Problématique
3Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Les systèmes automatisés
Objectif : • contrôle automatique d’un processus.
Processus :• constituants mécaniques, électriques,
pneumatiques, électroniques, ... • actionneurs.• capteurs ou détecteurs.
Commande :• Automate Programmable Industriel (API):
contrôleur industriel monotache cyclique.
Enjeu :• l’état du processus n’est connu de la
commande qu’à partir d’informations discrètes (entrée).
Processus
Entrées SortiesAPI

Problématique
4Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Les APICaractéristiques
• Robuste• Stable temporellement• Rapide
Fonctionnement :Mono – tache cyclique • collecte des informations du processus (entrées)• traite les données reçues• donne des ordres au processus (sorties)
Programmation :5 langages normalisés (IEC 61131-3):• textuels : ST, IL• graphiques : SFC, LADDER, FBD
Traitement
Émission des sorties
initialisation
Lecture des entrées

Problématique
5Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Ladder Diagram
Caractéristique• langage graphique normalisé
(Norme IEC 61131-3 )
Constitution• réseaux exécutés séquentiellement
- contacts- bobines- blocs fonctionnels
• mémoires• temporisations• détecteurs d’événements
| RS_pce || +------+ || rec bas | RS | pce |
L01+-+-| |--| |-------|S Q1|-----------( )--+| ava bas | | |+-+-| |--| |-+-----|R1 | || | auto | +------+ || +-|/|------+ || || TON_L1 || bas +---------+ bs_1s |
L02+--| |-------|IN TON Q|--------------( )--+| #1sec-|PT ET|- || +---------+ || || RS_ava || +------+ || rec haut | RS | haut O_ava |
L03+-+-| |--| |-------|S Q1|----| |----( )--+| ava | | |+-+-| |--+---------|R1 | || | auto | +------+ || +-|/|--+ || || RS_rec || +------+ || ava haut | RS | haut O_rec |
L04+-+-| |--| |-------|S Q1|----| |----( )--+| rec | | |+-+-| |--+---------|R1 | || | auto | +------+ || +-|/|--+ || || RS_des || +------+ || rec pce haut | RS | rec O_desc|
L05+-+-| |--|/|-+-| |-|S Q1|--+-| |-+--( )--+| | ava pce | | | | ava | || +-| |--| |-+ | | +-| |-+ || bs_1s | | |+-+-| |--+---------|R1 | || | auto | +------+ || +-|/|--+ || || pce O_asp |
L06+--| |--------------------------------( )--+| |
| RS_pce || +------+ || rec bas | RS | pce |
L01+-+-| |--| |-------|S Q1|-----( )--+| ava bas | | |+-+-| |--| |-+-----|R1 | || | auto | +------+ || +-|/|------+ || || TON_L1 || bas +---------+ bs_1s |
L02+--| |-------|IN TON Q|--------( )--+| #1sec-|PT ET|- || +---------+ || |
Bloc fonctionnel
BobineContact

Problématique
6Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
BesoinsComment prouver que le contrôle du processus :
• est exempt de bugs ?• est conforme aux attentes du cahier des charges ?
Scénario de test sur le réel ?• très proche de l’utilisation nominale ;• vue très limitée des possibilités du contrôle ; • nécessite du matériel spécifique.
Simulation par modèle ?• long ;• n’atteint pas tous les cas d’utilisations possibles.
Vérification formelle• prouve que le programme de commande est conforme ;• taux de couverture de 100% du comportement logiciel.• MAIS vérification de modèles de programme et non de programmes.

Problématique
7Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Vérification formelle ducomportement d’un système
Comportement duSystèmeComportement
du système (CS)• Ce que fait le système
CSCD ⊂∅=CSCII
Vérification formelle :• Prouver que
CDCD
CD CDComportement
Désiré
Comportement Désiré (CD)• Ce que le système doit faire CD
CD
CDCDCDComportement
InterditComportement Interdit (CI)
• Ce que le système ne doit pas faire

Problématique
8Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Intégration dans développementde programme de commande
Cahierdes charges
Conception du logiciel de commande
CDComportementDésiré
CDCD
CDCDCDComportement
Interdit Propriétés à vérifier
Comportement duSystèmeContrôleur
processus
Vérification formelle
Propriétés vérifiéesou non

Model-checking
9Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Définitions
« Model ...• connaître ou caractériser tous les états d'évolution du programme de
contrôle nécessaire à la vérification.• Ex : le graphe des situations accessibles d’un GRAFCET ou d’un réseau de
Pétri.
... - Checking »• vérifier des propriétés sur ces états ou la relation entre ces états.
État• Valeur des variables à un instant donné.

Model-checking
10Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Principe
Propriétés • il est toujours vrais que ...• pas de blocage.• tel événement suit toujours celui-ci.
MODEL CHECKER
Propriétés vérifiéesou diagnostic en cas d’échec
Formalisation
AG(APB→AF ~horn)
AG(~d1→AF ~lig)
Logique temporelle (LTL, CTL, …)
Programme de contrôle Moniteur
ETS
I
Modélisation
Modèle de comportement(Automate à états)

Modèle : automates à états
11Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Modélisation du comportement de l’exécution du programme LD par un API
Etat de l’automate• Etat d’avancement du cycle de l’API
- Lecture des entrées- Exécution du programme utilisateur
• Exécution de L1• Exécution de L2
- Ecriture des sorties
• Valeur des variables présentes dans le programme
- A, B, S, T
| A B S |L1 +-+-| |-+-|/|--( )-+
| | S | || +-| |-+ || || S T T |
L2 +--| |--|/|----( )-+| |
A
B
S
T
API en exécution cyclique
Formalisation
Automate àétats finis
4 po
ssib
ilité
s
16 combinaisons
Taille maximalede l’automate : 64 états

12Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Initialisation
Lecture des entrées
Début cycle API
Génération de l’automateà états finis
Exécutionde la ligne 1Exécutionde la ligne 2
Ecrituredes sorties
| A B S |L1 +-+-| |-+-|/|--( )-+
| | S | || +-| |-+ || || S T T |
L2 +--| |--|/|----( )-+| |
A
B
S
T
Fin cycle API
35 états, 56 transitions
Cyc
le A
PI
ABSTValeurs
des variables
TSBA •••
Initialisation?

Modèle : automates à états
13Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Codage dans un outil de Model-Checking
| A B S |L1 +-+-| |-+-|/|--( )-+
| | S | || +-| |-+ || || S T T |
L2 +--| |--|/|----( )-+| |
A
B
S
T
API en exécution cyclique
Formalisation
Automate àétats finis
Passage directdifficile à formaliseret peu opérationnel
Moniteur d’exécution
Variables du programme• Entrées• Variables calculées
Identification des éléments clés
Moniteurd’exécution
EntréesVariablescalculées
Modélisation ducomportement
des éléments clés
Constructionde l’automate à
états
Outil spécialisé
synchronisation

Introduction à UPPAAL
14Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
UPPAAL
Caractéristiques : • outil pour modéliser, simuler et vérifier des systèmes en temps réel.• modélise les systèmes comme une collection d’automates :
- non déterministes;- temporisés par des horloges à valeurs réelles;- communiquant par des canaux de messages ou des variables partagées.
UPPAAL se compose de trois parties:• un éditeur graphique• un simulateur• un model-checker

15Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Editeur graphique
Arborescence des automatesConfigurationDéclaration de variables
Outils
Construction d’automate

Introduction à UPPAAL
16Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Editeur graphique
Etatinitial
Etat
Reset d’horloge
Invariant
Réception de message
Emissionsynchronisation
Garde
Affectation de variable

17Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Simulateur
États des automates communicants
Évolution des automates et synchronisations
États des variables
Historique desévolutions choisies
Choix d’évolution

Les automates à états finis temporisés
18Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Les états
À tout moment un et un seul état est actif dans un automate.3 états spéciaux :• Initial
état unique et obligatoire, activé à l’initialisation.• Committed
état qui, une fois actif, doit être désactivé au prochain pas d’évolution.• Urgent
état qui, une fois actif, doit être désactivé dans un temps nul.
Invariant :• condition associable à un état.• si l’état est actif, la condition doit être respectée.

Les automates à états finis temporisés
19Semaine de regroupement – ATELIER 2 – 11/10/2007
Transition
4 éléments configurables :• Sélection (select)
Valeur non déterministe d’une variable dans un set donné: permet de regrouper la définition de plusieurs transition entre deux états.
• Garde (guard)condition de franchissement : si fausse, la transition ne peut être franchie.
• Synchronisation (synchronization)élément de communication entre automate : permet le franchissement simultané de transitions entre automates.
• Affectation (update et select)modification de la valeur de variables par calcul, avec une formule (update)
automate1 automate2 automate1 automate2
automate3
Normale (1 émetteur, 1 récepteur) Broadcast (1 émetteur, n récepteur(s)) n ∈ Ν

Les automates à états finis temporisés
20Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Les variables
Quatre types élémentaires:• int : variable entière, par défaut dans la plage [-32768, 32767] et
initialisée à 0. Plage et initialisation configurable.• bool : variable booléenne, initialisée par défaut à 0. Initialisation
configurable.• clock : variable réelle dédiée au temps. Test et affectation uniquement avec
des valeurs entières.• chan : canal de communication, de type ‘normal’ par défaut. 3 autres types
possibles : ‘urgent’, ‘broadcast’ et ‘urgent broadcast’.
Déclaration :• Globale• Locale
• Implicite : Pour chaque état Ei de chaque automate Ai, une variable de type ‘bool’ représentant son activité est créée : Ai.Ei

Les automates à états finis temporisés
21Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Règles d’évolutionSans synchronisation :
• Si une transition est franchissable, elle peut être franchie mais sans obligation. • Une seule transition peut être franchie à chaque pas d’évolution parmi tous les
automates.Avec synchronisation :
• Une synchronisation possible de plusieurs automates (i.e. les transitions correspondantes sont franchissables sans la synchronisation) est :
- immédiate ;- prioritaire sur d’autres transitions normales.
• Une synchronisation normale non possible est bloquante pour l’émetteur et le récepteur.
• Une synchronisation broadcast non possible est bloquante seulement pour les récepteurs.
Respect des invariants :• Les invariants de chaque état actif doivent toujours être respectés.• Si un invariant ne peut être respecté, tous les automates sont alors bloqués
(deadlock).

Les automates à états finis temporisés
22Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Exemple d’évolution et première utilisation de UPPAAL
A:=1
A:=0
A:=1
A:=0
A==1
A==0
Réaliser des modèles suivants et simuler leur évolution :
C
A:=1test!
A:=0
test?
test : normal chan
test?
C
A:=1test!
A:=0
test?
test : broadcast chan
test?
Automate 1
Automate 2
Automate 1
Automate 2
Automate 3
Automate 1
Automate 2
Automate 3

Les automates à états finis temporisés
23Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Exercices d’utilisation
Construire et simuler:1. Un automate modifiant alternativement la valeur de la variable booléenne A
entre 0 et 1.2. Un automate comptant jusqu’à 20 avec une variable B puis mettant la
variable A à 1.3. Un automate attribuant une valeur entre 0 et 5 à la variable entière A
comprise entre 0 et 10.4. Un automate aillant le même comportement que trois automates du (1), à
comparer le comportement avec 3 automates.5. Deux automates jouant au ping-pong avec les messages « ping » et
« pong ».6. Trois automates manipulant une variable booléenne chacun, attribuant la
valeur 0 ou 1, de façon non déterministe, simultanément au message top!d’un quatrième automate.

Les automates à états finis temporisés
24Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Le temps
Décompte du temps avec les horloges à valeur réelle.• Écoulement du temps simultané sur chaque horloge• Tests des horloges dans les gardes ou les invariants par rapport à un entier.
Exemples :
Δt >= 5
2
X
1 t
5
Δt = 5
2
X
1 t
5
5 <= Δt <= 7
72
X
1 t
5
2
X >=5
1
X := 0
X <= 52
X >=5and X<=7
1
X := 0
2
X >=5
1
X := 0
0 0 0

Les automates à états finis temporisés
25Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Exercices sur les horloges
Construire et simuler :1.Un automate attendant un temps supérieur à 20 unités de temps puis
mettant la variable A à 1.2.Un automate modifiant alternativement la valeur de la variable booléenne A
entre 0 et 1, toutes les 10 unités de temps.3.Un automate représentant le fonctionnement d’une TON.
L’entrée de la TON sera modélisée par un automate indépendant.

Les automates à états finis temporisés
26Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Temporisation TON| TON_L1 || L1_Prod +---------+ L1_pump |
L06+------| |----|IN TON Q|---+----( )----+-+| #5sec-|PT ET|- | L1_down | || +---------+ +----( )----+ || |
+--------+ +---+ +--------+IN | | | | | |
--+ +--------+ +---+ +-----t0 t1 t2 t3 t4 t5
PT +---+ +---+: / | + / |
ET : / | /| / |: / | / | / |: / | / | / |0-+ +--------+ +---+ +-----t0 t1 t2 t3 t4 t5
+---+ +---+Q | | | |
-------+ +---------------------+ +-----t0+PT t1 t4+PT t5
Ecoulée +---o +---o| | | |
En cours +----o | +---o +----o || : | | | | : |
Inactive 0-o : +--------o +---o : +-----t0 t0+PT t1 t2 t3 t4 t4+PT t5

Application
27Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Application
Modéliser le système suivant...
Processus modélisé par des entrées indéterministes.
... en vue de la vérification de la propriété suivante...Lorsque l’entrée B est présente, la sortie T doit être absente.
... avec l’hypothèse suivante.Le temps de cycle s’écoule seulement entre l’émission des sorties et la lecture des entrées du cycle suivant.
| A B S |L1 +-+-| |-+-|/|--( )-+
| | S | || +-| |-+ || || S T T |
L2 +--| |--|/|----( )-+| |
A
B
S
T
API en exécution cyclique
Traitement
Émission des sorties
initialisation
Lecture des entrées
Temps de cycle : 1 unité de temps

Application
28Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Le moniteur d’exécution
Début de cycle
Après lecture des entrées
Après traitement
Fin de cycle
Avant initialisation
Read!
<Calculs>
Emit !Horloge >= Temps de cycle
U
U
U
U

Application
29Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Variable d’entrée
Variable A
Read?
Read?
Read? Read?
A:=1
A:=0
Variable B
Read?
Read?Read? Read?
B:=1
B:=0
etat_1etat_0

Vérification de propriétés
30Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Principe
Propriétés • il est toujours vrais que ...• pas de blocage.• tel événement suit toujours celui-ci.
MODEL CHECKER
Propriétés vérifiéesou diagnostic en cas d’échec
Formalisation
AG(APB→AF ~horn)
AG(~d1→AF ~lig)
Logique temporelle (LTL, CTL, …)
Programme de contrôle Moniteur
ETS
I
Modélisation
Modèle de comportement(Automate à états)

Vérification de propriétés
31Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Vérification de propriétés
Recherche dans l’automate • d’états• de chemins• de circuits
ayant des caractéristiques données.
Expression des propriétés• Logique temporelle• Automate ayant un rôle
d’observateur

Logique CTL
32Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
La logique CTL : une logique temporelleCTL : Logique temporelle utilisée pour énoncer formellement des propriétés.
Logique temporelle • Logique spécialisée dans les énoncés et raisonnements faisant intervenir la
notion d'ordonnancement dans le temps.
Formule CTL• des propositions atomiques : a, b, …• des opérateurs booléens : • des opérateurs temporels : EF, AF, AG, EG, E p U q, A p U q, EX, AX
→¬∨∧

Logique CTL
33Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
La logique CTL, l'opérateur EF (1)
EF a : " Il existe un chemin le long duquelil existe un état vérifiant a "
FE
q
a
EF aq

Logique CTL
34Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
La logique CTL, l'opérateur EF (2)Analogie : Le métro parisien.
Chaque station est un état. État initial : Bagneux.Comportement : Chemins possibles.
Propriété à vérifier :EF cine_présent
⇒Il existe un chemin le long duquel il existe un état vérifiant « cine_présent »
⇒Existe t’il un chemin depuis Bagneux qui me mène a un ciné présent prés de la station ?
Réponse : OUI.

Logique CTL
35Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
La logique CTL, l'opérateur AF
AF a : " Pour tout chemin, il existe un état vérifiant a "
FA
q
a
AF aq

Logique CTL
36Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
La logique CTL, l'opérateur AG
AG a : " le long de tous les chemins, tous les états vérifient a "
GA
q
AG aq
a

Logique CTL
37Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
La logique CTL, l'opérateur EG
EG a : " Il existe un chemin le long duquel tous les états vérifient a "
GE
q
EG aq
a

Logique CTL
38Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
La logique CTL, l'opérateur E a U b
E a U b : " Il existe un chemin où a est vrai jusqu'à ce que b soit vrai"
a U bE
q
E a U bq
a
b

Logique CTL
39Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
La logique CTL, l'opérateur A a U b
A a U b : " Sur tous les chemins, a est vrai jusqu'à ce que b soit vrai"
a U bA
q
A a U bq
a
b

Logique CTL
40Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
La logique CTL, les opérateurs EX et AX
EX a : " Il existe un chemin le long duquel le prochain état vérifie a "
XE
q
r
AX a : " Tous les prochains états vérifient a "
XA
EX aq
a
AX arEX ar

Logique CTL
41Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
La logique CTL, emboîtement d'opérateursAG EF a : "Depuis tout état accessible, il est possible d'atteindre un état vérifiant a"
AG
qAG (EF a)q
a
EF

Logique CTL
42Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Egalités remarquables
Il est toujours vrais que la propriété ‘a’ est vérifiée≡Il n’est pas possible d’atteindre un état où la propriété ‘a’ n’est pas vérifiéeaa
aaaaaa
¬¬≡¬¬≡¬¬≡¬¬≡
AFEGAGEFEGAFEFAG

Logique CTL
43Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Correspondance CTL - UPPAAL
CTL UPPAAL
A A
E E
G [ ]
F <>
AG (p AF q) p --> q
&& || ! implyand or not imply⇒¬∨∧
⇒

Logique CTL
44Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Vérification à l’aide d’observateurs
Dans le cas de propriétés complexes :• traitant de simultanéité,• ou découlant de plusieurs séquentialités,• ou dépendantes du temps physique (horloge),• ou difficile à exprimer.
⇒ Utilisation d’observateurs :• Modification du modèle par :
• Ajout d’un automate supplémentaire (automate observateur) représentant la propriété à vérifier.
• Synchronisation de l’observateur avec le modèle original.• Vérification avec une propriété CTL utilisant l’état de l’observateur.
• AG (! obs.Error)
Read?Read?
A==5 Error
Automate « obs »

Logique CTL
45Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Cyc
le A
PI Initialisation
Lecture des entrées
Début cycle API
Exécutionde la ligne 1
Exécutionde la ligne 2
Ecrituredes sorties
Fin cycle APIA
B
ST
Combinaisons des variables
Exemple de propriétés (1)
P1 Lorsque l’entrée B est présente, la sortie T doit être absente.
Existe-t-il un état de l’automate pour lequel :• B est présent• T est présent• lorsque l’API est en fin de cycle
| A B S |+-+-| |-+-|/|--( )-+| | S | || +-| |-+ || || S T T |+--| |--|/|----( )-+| |
A
B
S
T
Non, P1 est vérifiée.

Logique CTL
46Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Exemple de propriétés (2)
Exercice :P1 « Lorsque l’entrée B est présente,
la sortie T doit être absente »• Enoncer la propriété P1 dans le langage CTL. • Vérifier la propriété P1 sur le modèle UPPAAL.

Exemple
47Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Gestion d’un système de distribution d’eau
Constitution du système• un réservoir• deux circuits de pompage (L1,L2)
(une pompe et deux vannes)• une vanne de distribution générale• une vanne de refoulement
Règles de fonctionnement• Les deux pompes ne doivent jamais
fonctionner simultanément.• En cas de panne de la pompe
principale, la pompe de secours doit assurer la distribution.
• Permutation des circuits toutes les 24h
Bf_valve
L2_down L2_up
Out_valve
L2_pump
L1_down L1_upL1_pump

Exemple
48Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Propriétés à vérifier pour ce système (1)
Propriété n°1• Les 2 pompes ne doivent jamais fonctionner en même temps.
Propriété n°2• Une panne générale provoque l'arrêt des pompes et la fermeture des vannes.
Propriété n°3• Une panne d’une pompe provoque l'arrêt de cette pompe et la fermeture des
vannes associées.

Exemple
49Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Propriétés à vérifier pour ce système (2)
Propriété n°4• En cas de panne de la pompe principale, la pompe de secours doit assurer la
distribution.
Propriété n°5• Dans le cas d'une demande de distribution "bas_debit" seule, la vanne
refoulement doit être ouverte.
Propriété n°6• La mise en route d'une pompe ne peut se faire qu'après avoir ouvert la vanne
en amont pendant 5s.

Exemple
50Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Programme de commande| Line_swap L1_prio Act_L1 | | L1_Prod L1_up |
L01+------|P|--------+----|/|------( )---+--+ L05+-----| |-----------------------( )------+| | L1_prio Act_L2 | | | || +----| |------( )---+ | | TON_L1 || | | L1_Prod +---------+ L1_pump || RS_prio | L06+-----| |----|IN TON Q|---+----( )----+-+| +------+ | | #5sec-|PT ET|- | L1_down | || Act_L1 | RS | L1_prio | | +---------+ +----( )----+ |
L02+------| |--------|S Q1|-------( )-----+ | || Act_L2 | | | | L2_Prod L2_up |+------| |--------|R1 | | L07+-----| |-----------------------( )------+| +------+ | | || | | TON_L2 || RS_L1 | | L2_Prod +---------+ L2_pump || +------+ | L08+-----| |----|IN TON Q|---+----( )----+-+| L1_prio L2_Prod | RS | L1_Prod | | #5sec-|PT ET|- | L2_down | |
L03+-+-| |-----|/|-+-|S Q1|-------( )-----+ | +---------+ +----( )----+ || | L2_fail | | | | | || +----| |------+ | | | | L1_Prod Out_valve || H_flow L_flow | | | L09+--+---| |----+-----------------( )------++-+-|/|-----|/|-+-|R1 | | | | L2_Prod | || | L1_fail | +------+ | | +---| |----+ || +----| |------+ | | || | SP_fail | | | L1_pump H_flow Bf_valve || +----| |------+ | L10+--+---| |----+----|/|----------( )------+| | | | L2_pump | || RS_L2 | | +---| |----+ || +------+ || L1_prio | RS | L2_Prod | VAR_INPUT
L04+-+----|/|------+-|S Q1|-------( )-----+ H_flow, L_flow, L1_fail : BOOL;| | L1_fail | | | | L2_fail, Line_swap, SP_fail : BOOL;| +----| |------+ | | | END_VAR | H_flow L_flow | | | VAR_OUTPUT+-+-|/|-----|/|-+-|R1 | | Bf_valve, L1_down : BOOL;| | L2_fail | +------+ | L1_pump, L1_up, L2_down : BOOL; | +----| |------+ | L2_pump, L2_up, Out_valve : BOOL;| | SP_fail | | END_VAR| +----| |------+ | VAR| | L1_Prod | | Act_L1, Act_L2, L1_prio : BOOL;| +----| |------+ | L1_Prod, L2_Prod : BOOL;
RS_prio, RS_L1, RS_L2 : RS;TON_L1, TON_L2 : TON
END_VAR

Exemple
51Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Temporisation TON
inactive en cours
écoulée
in
!int < 5
in && t >= 5
Q:=1!in
Q:=0
TON?
TON?
TON?
TON!
Utilisation de Q
U
U
U
Calcul de in

52Semaine de regroupement – Atelier Vérification formelle par model-checking – 27/11/2008
Traitement de cas
Vérifier, sur le modèle de contrôle de distribution d’eau donné, toutes les propriétés énoncées en langage naturel :
• Choix du type de vérification (propriété CTL seule ou avec un automate observateur),
• Expression de la propriété CTL et de l’observateur le cas échéant.• Expression de la propriété en langage UPPAAL,• Association avec les variables du modèle,• Vérification de la propriété formelle sur le modèle avec UPPAAL,• Conclusion.