SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
Sylvain Hallé
Sylvain Hallé
Lab
Université du Québec à Montréal
Montréal, CANADA
Laboratoire de téléinformatique
UQAM
La quantification du premier ordre en
logique temporelle: applications aux
documents XML et aux services web
Sylvain Hallé
Mise en contexte
Mise en contexte #1: requêtes sur documents XML
Arbre de couples paramètre-valeur: cas particulier de document
XML
On considère un sous-ensemble de XPath 1.0:
Ex.: a=1/b=5 ou a=2/d=3
a = 1
b = 5 d = 3
1
3 4
<a>1
<b>5</b>
<d>3</d>
</a>
p : p=v | p, p=v
j : Ø j | j Ù j | p
Sylvain Hallé
Mise en contexte
Un arbre ressemble à une structure de Kripke:
Afanasiev et al. (TIME 2004): Simple XPath peut être plongé dans
CTL
a = 1
b = 5 d = 3
1
3 4
a = a b = 1
a = b b = 5 a = d b = 3
p=v
p, p=v
Ø j
j Ù y
Û a=p Ù b=v
Û p Ù EX (a=p Ù b=v)
Û Ø j
Û j Ù y
Sylvain Hallé
Mise en contexte
On étend Simple XPath ( :
Ex: <; a=x> <a=x ; b=y> x y
Utilité: propriétés de configurations réseau (et autres)
Þ Í XPath 2.0)
¹
CL
a = 1
b = 5 d = 3
1
3 4
p : p=v | p, p=v
j : Ø j | j Ù j | <p ; p=x> j | x=y
Sylvain Hallé
Un arbre ressemble (toujours) à une structure de Kripke:
Peut-on (et comment) plonger CL dans CTL?
a = 1
b = 5 d = 3
1
3 4
a = a b = 1
a = b b = 5 a = d b = 3
p=v Û a=p Ù b=v
p, p=v Û p Ù EX (a=p Ù b=v)
Ø j Û Ø j
j Ù y Û j Ù y
<p ; p=x> j Û ???
Mise en contexte
Sylvain Hallé
Un arbre ressemble (toujours) à une structure de Kripke:
Peut-on (et comment) plonger CL dans CTL?
a = 1
b = 5 d = 3
1
3 4
p=v Û a=p Ù b=v
p, p=v Û p Ù EX (a=p Ù b=v)
Ø j Û Ø j
j Ù y Û j Ù y
<p ; p=x> j Û p Ù EX ( a=p Ù b= Ù j( ))$x : x x
a = a b = 1
a = b b = 5 a = d b = 3
Mise en contexte
Sylvain Hallé
Un arbre ressemble (toujours) à une structure de Kripke:
Peut-on (et comment) plonger CL dans CTL?
a = 1
b = 5 d = 3
1
3 4
p=v Û a=p Ù b=v
p, p=v Û p Ù EX (a=p Ù b=v)
Ø j Û Ø j
j Ù y Û j Ù y
<p ; p=x> j Û p Ù EX ( a=p Ù b= Ù j( ))$x : x x
a = a b = 1
a = b b = 5 a = d b = 3
Mise en contexte
Sylvain Hallé
Mise en contexte #2: interaction de
! Deux entités échangent des
services web
messages
Utilisateur
Service
Mise en contexte
Sylvain Hallé
Mise en contexte #2: interaction de
! Deux entités échangent des
services web
messages
A
Utilisateur
Service
Mise en contexte
Sylvain Hallé
Mise en contexte #2: interaction de
! Deux entités échangent des
services web
messages
B
Utilisateur
Service
Mise en contexte
Sylvain Hallé
Mise en contexte #2: interaction de
! Deux entités échangent des
services web
messages
D
Utilisateur
Service
Mise en contexte
Sylvain Hallé
Mise en contexte #2: interaction de
! Deux entités échangent des
services web
messages
D
Utilisateur
Service
Mise en contexte
Sylvain Hallé
Mise en contexte #2: interaction de
! Deux entités échangent des
services web
messages
Utilisateur
Service
Impossible
d'envoyer D après
avoir envoyé
un A !
Mise en contexte
Sylvain Hallé
Mise en contexte #2: interaction de
! Deux entités échangent des
! L'interaction possède une mémoire (memoryful behaviour)
services web
messages
Utilisateur
Service
Impossible
d'envoyer D après
avoir envoyé
un A !
Mise en contexte
Sylvain Hallé
Mise en contexte #2: interaction de
! Deux entités échangent des
! L'interaction possède une mémoire (memoryful behaviour)
services web
messages
Utilisateur
Service
Impossible
d'envoyer D après
avoir envoyé
un A !
Comment
le
savoir?
Mise en contexte
Sylvain Hallé
Mise en contexte #2: interaction de
! Deux entités échangent des
! L'interaction possède une mémoire (memoryful behaviour)
! Deutsch, Sui, Vianu (PODS 2006): utiliser une logique
temporelle (disons CTL) pour définir les contraintes
services web
messages
Utilisateur
Service
Impossible
d'envoyer D après
avoir envoyé
un A !
Comment
le
savoir?
Mise en contexte
Sylvain Hallé
Mise en contexte #2: interaction de
! Deux entités échangent des
! L'interaction possède une mémoire (memoryful behaviour)
! Deutsch, Sui, Vianu (PODS 2006): utiliser une logique
temporelle (disons CTL) pour définir les contraintes
services web
messages
Service
Impossible
d'envoyer D après
avoir envoyé
un A !
AG (a AX AG d)® Ø
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?contenu
Service
Utilisateur
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?contenu
A
3
Service
Utilisateur
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?contenu
A
3
Service
Utilisateur
Si A est reçu avec
valeur ( 0), envoyer C
avec valeur .
Sinon, envoyer B
avec valeur .
x
x+1
9
¹
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?contenu
C
4
Service
Utilisateur
Si A est reçu avec
valeur ( 0), envoyer C
avec valeur .
Sinon, envoyer B
avec valeur .
x
x+1
9
¹
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement
contenu
Service
C
4
Si A est reçu avec
valeur ( 0), envoyer C
avec valeur .
Sinon, envoyer B
avec valeur .
x
x+1
9
¹
Utilisateur
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement
contenu
M
6
Service
Utilisateur
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement
contenu
Service
M
6
Utilisateur
Mise en contexte
Sylvain Hallé
Service
M
6
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
contenu
plusieurs messages
Utilisateur
M doit avoir
la même valeur
qu'un A envoyé
auparavant!
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
contenu
plusieurs messages
Service
M
6
Utilisateur
M doit avoir
la même valeur
qu'un A envoyé
auparavant!
Comment
le
savoir?
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
! CTL peut-il encore exprimer ceci?
contenu
plusieurs messages
Service
M
6
Utilisateur
M doit avoir
la même valeur
qu'un A envoyé
auparavant!
Comment
le
savoir?
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
! CTL peut-il encore exprimer ceci?
contenu
plusieurs messages
Service
M doit avoir
la même valeur
qu'un A envoyé
auparavant!
AF ( : a( ) AF m( ))$x x xÙ
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
! CTL peut-il encore exprimer ceci?
contenu
plusieurs messages
Service
M doit avoir
la même valeur
qu'un A envoyé
auparavant!
AF ( : a( ) AF m( ))$x x xÙ
Mise en contexte
Sylvain Hallé
Deux contextes:
! Plongement de XPath/XQuery en CTL
! Vérification de transactions de services web
Même besoin:
! et plusieurs éléments d'un (ou plusieurs)
document(s) XML...
! ... = quantification du premier ordre en logique temporelle
(ici CTL)
Comment faire?
extraire comparer
Mise en contexte
Sylvain Hallé
Hallé, Villemaire, Cherkaoui, Tremblay (WS-FM 2007):
= structure de Kripke "spéciale"
! Les états contiennent k
! ... = messages XML d'arité
! ... (pas de hiérarchie (pour le moment))
workflow
messaging model
couples paramètre-valeur
bornée
plats
<message>
<a>1</a>
<a>3</a>
<b>9</b>
</message>
<message>
<q>8</q>
<q>3</q>
</message>
a
a
a
= a
= a
= b
b
b
b
= 1
= 3
= 9
1
2
3
1
2
3
a
a
a
= q
= q
= #
b
b
b
= 8
= 3
= #
1
2
3
1
2
3
Workflow messaging model
Sylvain Hallé
CTL-FO+ = CTL + quantification du premier ordre sur les couples
Ex: AF ($ x : AX AF ($ y : x=y))a q
<message>
<a>1</a>
<a>3</a>
<b>9</b>
</message>
<message>
<q>8</q>
<q>3</q>
</message>
a
a
a
= a
= a
= b
b
b
b
= 1
= 3
= 9
1
2
3
1
2
3
a
a
a
= q
= q
= #
b
b
b
= 8
= 3
= #
1
2
3
1
2
3
$ x : j(x) Û $i : a=p Ù b=k Ù j(k)p i i
CTL-FO+
Sylvain Hallé
Model checking de CTL-FO+ sur un workflow messaging model?
Complexité du model checking (domaines finis):
(Hallé et al., EDOC 2007) pas pire que LTL
Trois solutions:
1. Nouveau model checker
2. Adapter model checker existant
3. Retraduire le problème en CTL classique
PSPACE-complet
Þ
Model checking de CTL-FO+
Sylvain Hallé
Tentative #1: quantification
Transformer une formule quantifiée comme:
en
pour toutes les valeurs du domaine de x. Devient formule CTL
classique.
idée (on verra plus loin).
explicite
Mauvaise
Model checking de CTL-FO+
Sylvain Hallé
Tentative #2: quantification
Adaptation d'une idée de Alur et Henzinger (1994)
Utilisée comme moyen de la quantification du premier ordre
en CTL
Principe: ajouter des variables d'état au système qui vont "geler" la
valeur d'une autre variable d'état à un moment précis
freeze
simuler
Model checking de CTL-FO+
Sylvain Hallé
AF ($ x : AX AF ($ y : x=y))a q
a
a
a
= a
= a
= b
b
b
b
= 1
= 3
= 9
1
2
3
1
2
3
a
a
a
= q
= q
= #
b
b
b
= 8
= 3
= #
1
2
3
1
2
3
Freeze quantification
Sylvain Hallé
AF ($ x : AX AF ($ y : x=y))a q
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
Freeze quantification
Sylvain Hallé
AF ($ x : AX AF ($ y : x=y))a q
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= a
= a
= b
= 1
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
x=1
Freeze quantification
Sylvain Hallé
AF ($ x : AX AF ($ y : x=y))a q
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= a
= a
= b
= 1
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
x=1
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
Freeze quantification
Sylvain Hallé
AF ($ x : AX AF ($ y : x=y))a q
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= a
= a
= b
= 1
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 8
1
2
3
1
1
2
3
2
x=1
y=8
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
Freeze quantification
Sylvain Hallé
AF ($ x : AX AF ($ y : x=y))a q
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= a
= a
= b
= 1
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 3
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 8
1
2
3
1
1
2
3
2
x=1
y=8
y=3
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
Freeze quantification
Sylvain Hallé
AF ($ x : AX AF ($ y : x=y))a q
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= a
= a
= b
= 1
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 3
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 8
1
2
3
1
1
2
3
2
x=1
. . .
y=8
y=3
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
Freeze quantification
Sylvain Hallé
AF ($ x : AX AF ($ y : x=y))a q
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= a
= a
= b
= 1
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 3
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 8
1
2
3
1
1
2
3
2
x=1
x=3
. . .
. . .
y=8
y=3
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
Freeze quantification
Sylvain Hallé
Hallé, Villemaire, Cherkaoui, IEEE TSE 2008: on peut systématiser
cette construction
Workflow messaging model M + variables et qualificatif
workflow messaging model M'
Deuxième étape: on se débarrasse de la quantification dans la
formule
Formule CTL-FO+ j formule CTL y'
Garde: "les t premières variables sur n ont pris une valeur"
Þ
Þ
freeze
Freeze quantification
Sylvain Hallé
Traduction récursive w: paramétrisée par n (nombre total de
variables quantifiées) et t (nombre de variables freeze qui ont déjà
une valeur)
Connecteurs booléens et égalité: direct
Freeze quantification
Sylvain Hallé
Traduction du EX:
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= a
= a
= b
= 1
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 3
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 8
1
2
3
1
1
2
3
2
x=1
x=3
. . .
. . .
y=8
y=3
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
Freeze quantification
Sylvain Hallé
Traduction du AF:
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= a
= a
= b
= 1
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 3
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 8
1
2
3
1
1
2
3
2
x=1
x=3
. . .
. . .
y=8
y=3
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
Freeze quantification
Sylvain Hallé
Traduction du AF:
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= a
= a
= b
= 1
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 3
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 8
1
2
3
1
1
2
3
2
x=1
x=3
. . .
. . .
y=8
y=3
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
Généralisation:
Si on remplace par true, on retrouve
la définition classique
i.e. le garde est un "filtre"
Freeze quantification
Sylvain Hallé
Traduction du EU:
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= a
= a
= b
= 1
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 3
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 8
1
2
3
1
1
2
3
2
x=1
x=3
. . .
. . .
y=8
y=3
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
Freeze quantification
Sylvain Hallé
Traduction de la quantification existentielle:
a
a
a
n
= a
= a
= b
= #
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= a
= a
= b
= 1
b
b
b
n
= 1
= 3
= 9
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= #
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 3
1
2
3
1
1
2
3
2
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= 8
1
2
3
1
1
2
3
2
x=1
x=3
. . .
. . .
y=8
y=3
a
a
a
n
= q
= q
= #
= 1
b
b
b
n
= 8
= 3
= #
= #
1
2
3
1
1
2
3
2
Freeze quantification
Sylvain Hallé
Théorème (Hallé et al., IEEE TSE 2008):
ssi
Traduction exponentielle...
...mais s'il en existe une meilleure => P = NP
Minute! La quantification explicite était elle aussi une traduction
exponentielle!
CTL-FO+
PSPACE-complet
CTL
EXPTIME
Freeze quantification
Sylvain Hallé
Quantification explicite Freeze quantification
- Formule dépend du - Formule indépendante
domaine du domaine
- Petit système - Grand système
- Grande formule - Petite formule
On dit qu'un model checker est optimisé pour de grands espaces
d'états, mais des formules (relativement) courtes. Est-ce vrai?
Comparaison
Sylvain Hallé
Formules CTL-FO+ tirées d'un scénario de commerce électronique
F1- "Un même produit ne peut apparaître que dans un seul message
dans toute la transaction" (2 quantificateurs)
F2- "Chaque produit dans une
commande apparaît plus tard dans
une confirmation de commande"
(4 quantificateurs)
F3- "Au moins un produit est acheté"
(6 quantificateurs)
Get all stocks
Get stock details
Place buy order(s)
Place sell order(s)
Confirm buy order(s)
Confirm sell order(s)
Cash transfer
Cancel transaction
Customer
Online stock trading
Résultats expérimentaux
Sylvain Hallé
Résultats expérimentaux
Sylvain Hallé
Résultats expérimentaux
Sylvain Hallé
Out of memory (exp)
Résultats expérimentaux
Sylvain Hallé
Quantification explicite: plus appropriée (et plus efficace) pour des
formules avec peu de quantificateurs (< 3)
Quantification freeze: seule méthode qui donne des temps
raisonnables pour toutes les formules
>10000 fois plus rapide dans certains cas
Conclusion
Sylvain Hallé
S. Hallé, R. Villemaire, O. Cherkaoui, B. Ghandour. (2007). Model-
checking Data-Aware Temporal Workflow Properties with CTL-
FO+. Proc. EDOC 2008, IEEE Computer Society.
S. Hallé, R. Villemaire, O. Cherkaoui, J. Tremblay, B. Ghandour.
(2007). Extending Model Checking to Data-Aware Temporal
Properties of Web Services. Proc. WS-FM 2008, Springer LNCS
4937.
S. Hallé, R. Villemaire, O. Cherkaoui. Specifying and Validating
Data-aware Temporal Web Service Properties. IEEE Transactions on
Software Engineering (en révision).
Références

Contenu connexe

En vedette

palenque chiaàs
palenque chiaàspalenque chiaàs
palenque chiaàsrider Perez
 
Présentation réunion d'info ANT Pays de Bitche 2013
Présentation réunion d'info ANT Pays de Bitche 2013Présentation réunion d'info ANT Pays de Bitche 2013
Présentation réunion d'info ANT Pays de Bitche 2013Sophie Ensminger Pro
 
Credential Certificate Barbieri
Credential Certificate BarbieriCredential Certificate Barbieri
Credential Certificate BarbieriLaura Barbieri
 
Presentation- INS Vidreres- DEAR project
Presentation- INS Vidreres- DEAR projectPresentation- INS Vidreres- DEAR project
Presentation- INS Vidreres- DEAR projectBerta Llach
 
a summer with smithfield
a  summer with smithfielda  summer with smithfield
a summer with smithfieldCaroline Bosler
 
Healthcare Professional Brittney Mansfield
Healthcare Professional Brittney MansfieldHealthcare Professional Brittney Mansfield
Healthcare Professional Brittney MansfieldBrittney Mansfield
 
Amazon Web Services - The New Normal
Amazon Web Services - The New NormalAmazon Web Services - The New Normal
Amazon Web Services - The New NormalInnovation Strategies
 
Present simple ‘to be’
Present simple ‘to be’Present simple ‘to be’
Present simple ‘to be’torrepacheco
 
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)Sylvain Hallé
 
Graph Methods for Generating Test Cases with Universal and Existential Constr...
Graph Methods for Generating Test Cases with Universal and Existential Constr...Graph Methods for Generating Test Cases with Universal and Existential Constr...
Graph Methods for Generating Test Cases with Universal and Existential Constr...Sylvain Hallé
 

En vedette (15)

Poster
PosterPoster
Poster
 
Welcome to n11!
Welcome to n11!Welcome to n11!
Welcome to n11!
 
palenque chiaàs
palenque chiaàspalenque chiaàs
palenque chiaàs
 
Présentation réunion d'info ANT Pays de Bitche 2013
Présentation réunion d'info ANT Pays de Bitche 2013Présentation réunion d'info ANT Pays de Bitche 2013
Présentation réunion d'info ANT Pays de Bitche 2013
 
Credential Certificate Barbieri
Credential Certificate BarbieriCredential Certificate Barbieri
Credential Certificate Barbieri
 
Presentation- INS Vidreres- DEAR project
Presentation- INS Vidreres- DEAR projectPresentation- INS Vidreres- DEAR project
Presentation- INS Vidreres- DEAR project
 
a summer with smithfield
a  summer with smithfielda  summer with smithfield
a summer with smithfield
 
Aaron
AaronAaron
Aaron
 
Healthcare Professional Brittney Mansfield
Healthcare Professional Brittney MansfieldHealthcare Professional Brittney Mansfield
Healthcare Professional Brittney Mansfield
 
Plurals
PluralsPlurals
Plurals
 
Amazon Web Services - The New Normal
Amazon Web Services - The New NormalAmazon Web Services - The New Normal
Amazon Web Services - The New Normal
 
Present simple ‘to be’
Present simple ‘to be’Present simple ‘to be’
Present simple ‘to be’
 
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)
 
Cahiers de tendances
Cahiers de tendancesCahiers de tendances
Cahiers de tendances
 
Graph Methods for Generating Test Cases with Universal and Existential Constr...
Graph Methods for Generating Test Cases with Universal and Existential Constr...Graph Methods for Generating Test Cases with Universal and Existential Constr...
Graph Methods for Generating Test Cases with Universal and Existential Constr...
 

Plus de Sylvain Hallé

Monitoring Business Process Compliance Across Multiple Executions with Stream...
Monitoring Business Process Compliance Across Multiple Executions with Stream...Monitoring Business Process Compliance Across Multiple Executions with Stream...
Monitoring Business Process Compliance Across Multiple Executions with Stream...Sylvain Hallé
 
A Stream-Based Approach to Intrusion Detection
A Stream-Based Approach to Intrusion DetectionA Stream-Based Approach to Intrusion Detection
A Stream-Based Approach to Intrusion DetectionSylvain Hallé
 
Event Stream Processing with BeepBeep 3
Event Stream Processing with BeepBeep 3Event Stream Processing with BeepBeep 3
Event Stream Processing with BeepBeep 3Sylvain Hallé
 
Smart Contracts-Enabled Simulation for Hyperconnected Logistics
Smart Contracts-Enabled Simulation for Hyperconnected LogisticsSmart Contracts-Enabled Simulation for Hyperconnected Logistics
Smart Contracts-Enabled Simulation for Hyperconnected LogisticsSylvain Hallé
 
Test Suite Generation for Boolean Conditions with Equivalence Class Partitioning
Test Suite Generation for Boolean Conditions with Equivalence Class PartitioningTest Suite Generation for Boolean Conditions with Equivalence Class Partitioning
Test Suite Generation for Boolean Conditions with Equivalence Class PartitioningSylvain Hallé
 
Synthia: a Generic and Flexible Data Structure Generator (Long Version)
Synthia: a Generic and Flexible Data Structure Generator (Long Version)Synthia: a Generic and Flexible Data Structure Generator (Long Version)
Synthia: a Generic and Flexible Data Structure Generator (Long Version)Sylvain Hallé
 
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)Sylvain Hallé
 
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)Sylvain Hallé
 
A Generic Explainability Framework for Function Circuits
A Generic Explainability Framework for Function CircuitsA Generic Explainability Framework for Function Circuits
A Generic Explainability Framework for Function CircuitsSylvain Hallé
 
Detecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative SpecificationsDetecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative SpecificationsSylvain Hallé
 
Streamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research PapersStreamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research PapersSylvain Hallé
 
Writing Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeepWriting Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeepSylvain Hallé
 
Real-Time Data Mining for Event Streams
Real-Time Data Mining for Event StreamsReal-Time Data Mining for Event Streams
Real-Time Data Mining for Event StreamsSylvain Hallé
 
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)Sylvain Hallé
 
Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3Sylvain Hallé
 
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)Sylvain Hallé
 
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)Sylvain Hallé
 
Event Stream Processing with Multiple Threads
Event Stream Processing with Multiple ThreadsEvent Stream Processing with Multiple Threads
Event Stream Processing with Multiple ThreadsSylvain Hallé
 
A Few Things We Heard About RV Tools (Position Paper)
A Few Things We Heard About RV Tools (Position Paper)A Few Things We Heard About RV Tools (Position Paper)
A Few Things We Heard About RV Tools (Position Paper)Sylvain Hallé
 
When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)Sylvain Hallé
 

Plus de Sylvain Hallé (20)

Monitoring Business Process Compliance Across Multiple Executions with Stream...
Monitoring Business Process Compliance Across Multiple Executions with Stream...Monitoring Business Process Compliance Across Multiple Executions with Stream...
Monitoring Business Process Compliance Across Multiple Executions with Stream...
 
A Stream-Based Approach to Intrusion Detection
A Stream-Based Approach to Intrusion DetectionA Stream-Based Approach to Intrusion Detection
A Stream-Based Approach to Intrusion Detection
 
Event Stream Processing with BeepBeep 3
Event Stream Processing with BeepBeep 3Event Stream Processing with BeepBeep 3
Event Stream Processing with BeepBeep 3
 
Smart Contracts-Enabled Simulation for Hyperconnected Logistics
Smart Contracts-Enabled Simulation for Hyperconnected LogisticsSmart Contracts-Enabled Simulation for Hyperconnected Logistics
Smart Contracts-Enabled Simulation for Hyperconnected Logistics
 
Test Suite Generation for Boolean Conditions with Equivalence Class Partitioning
Test Suite Generation for Boolean Conditions with Equivalence Class PartitioningTest Suite Generation for Boolean Conditions with Equivalence Class Partitioning
Test Suite Generation for Boolean Conditions with Equivalence Class Partitioning
 
Synthia: a Generic and Flexible Data Structure Generator (Long Version)
Synthia: a Generic and Flexible Data Structure Generator (Long Version)Synthia: a Generic and Flexible Data Structure Generator (Long Version)
Synthia: a Generic and Flexible Data Structure Generator (Long Version)
 
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
 
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
 
A Generic Explainability Framework for Function Circuits
A Generic Explainability Framework for Function CircuitsA Generic Explainability Framework for Function Circuits
A Generic Explainability Framework for Function Circuits
 
Detecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative SpecificationsDetecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative Specifications
 
Streamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research PapersStreamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research Papers
 
Writing Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeepWriting Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeep
 
Real-Time Data Mining for Event Streams
Real-Time Data Mining for Event StreamsReal-Time Data Mining for Event Streams
Real-Time Data Mining for Event Streams
 
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
 
Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3
 
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
 
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
 
Event Stream Processing with Multiple Threads
Event Stream Processing with Multiple ThreadsEvent Stream Processing with Multiple Threads
Event Stream Processing with Multiple Threads
 
A Few Things We Heard About RV Tools (Position Paper)
A Few Things We Heard About RV Tools (Position Paper)A Few Things We Heard About RV Tools (Position Paper)
A Few Things We Heard About RV Tools (Position Paper)
 
When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)
 

La quantification du premier ordre en logique temporelle

  • 1. Sylvain Hallé Sylvain Hallé Lab Université du Québec à Montréal Montréal, CANADA Laboratoire de téléinformatique UQAM La quantification du premier ordre en logique temporelle: applications aux documents XML et aux services web
  • 2. Sylvain Hallé Mise en contexte Mise en contexte #1: requêtes sur documents XML Arbre de couples paramètre-valeur: cas particulier de document XML On considère un sous-ensemble de XPath 1.0: Ex.: a=1/b=5 ou a=2/d=3 a = 1 b = 5 d = 3 1 3 4 <a>1 <b>5</b> <d>3</d> </a> p : p=v | p, p=v j : Ø j | j Ù j | p
  • 3. Sylvain Hallé Mise en contexte Un arbre ressemble à une structure de Kripke: Afanasiev et al. (TIME 2004): Simple XPath peut être plongé dans CTL a = 1 b = 5 d = 3 1 3 4 a = a b = 1 a = b b = 5 a = d b = 3 p=v p, p=v Ø j j Ù y Û a=p Ù b=v Û p Ù EX (a=p Ù b=v) Û Ø j Û j Ù y
  • 4. Sylvain Hallé Mise en contexte On étend Simple XPath ( : Ex: <; a=x> <a=x ; b=y> x y Utilité: propriétés de configurations réseau (et autres) Þ Í XPath 2.0) ¹ CL a = 1 b = 5 d = 3 1 3 4 p : p=v | p, p=v j : Ø j | j Ù j | <p ; p=x> j | x=y
  • 5. Sylvain Hallé Un arbre ressemble (toujours) à une structure de Kripke: Peut-on (et comment) plonger CL dans CTL? a = 1 b = 5 d = 3 1 3 4 a = a b = 1 a = b b = 5 a = d b = 3 p=v Û a=p Ù b=v p, p=v Û p Ù EX (a=p Ù b=v) Ø j Û Ø j j Ù y Û j Ù y <p ; p=x> j Û ??? Mise en contexte
  • 6. Sylvain Hallé Un arbre ressemble (toujours) à une structure de Kripke: Peut-on (et comment) plonger CL dans CTL? a = 1 b = 5 d = 3 1 3 4 p=v Û a=p Ù b=v p, p=v Û p Ù EX (a=p Ù b=v) Ø j Û Ø j j Ù y Û j Ù y <p ; p=x> j Û p Ù EX ( a=p Ù b= Ù j( ))$x : x x a = a b = 1 a = b b = 5 a = d b = 3 Mise en contexte
  • 7. Sylvain Hallé Un arbre ressemble (toujours) à une structure de Kripke: Peut-on (et comment) plonger CL dans CTL? a = 1 b = 5 d = 3 1 3 4 p=v Û a=p Ù b=v p, p=v Û p Ù EX (a=p Ù b=v) Ø j Û Ø j j Ù y Û j Ù y <p ; p=x> j Û p Ù EX ( a=p Ù b= Ù j( ))$x : x x a = a b = 1 a = b b = 5 a = d b = 3 Mise en contexte
  • 8. Sylvain Hallé Mise en contexte #2: interaction de ! Deux entités échangent des services web messages Utilisateur Service Mise en contexte
  • 9. Sylvain Hallé Mise en contexte #2: interaction de ! Deux entités échangent des services web messages A Utilisateur Service Mise en contexte
  • 10. Sylvain Hallé Mise en contexte #2: interaction de ! Deux entités échangent des services web messages B Utilisateur Service Mise en contexte
  • 11. Sylvain Hallé Mise en contexte #2: interaction de ! Deux entités échangent des services web messages D Utilisateur Service Mise en contexte
  • 12. Sylvain Hallé Mise en contexte #2: interaction de ! Deux entités échangent des services web messages D Utilisateur Service Mise en contexte
  • 13. Sylvain Hallé Mise en contexte #2: interaction de ! Deux entités échangent des services web messages Utilisateur Service Impossible d'envoyer D après avoir envoyé un A ! Mise en contexte
  • 14. Sylvain Hallé Mise en contexte #2: interaction de ! Deux entités échangent des ! L'interaction possède une mémoire (memoryful behaviour) services web messages Utilisateur Service Impossible d'envoyer D après avoir envoyé un A ! Mise en contexte
  • 15. Sylvain Hallé Mise en contexte #2: interaction de ! Deux entités échangent des ! L'interaction possède une mémoire (memoryful behaviour) services web messages Utilisateur Service Impossible d'envoyer D après avoir envoyé un A ! Comment le savoir? Mise en contexte
  • 16. Sylvain Hallé Mise en contexte #2: interaction de ! Deux entités échangent des ! L'interaction possède une mémoire (memoryful behaviour) ! Deutsch, Sui, Vianu (PODS 2006): utiliser une logique temporelle (disons CTL) pour définir les contraintes services web messages Utilisateur Service Impossible d'envoyer D après avoir envoyé un A ! Comment le savoir? Mise en contexte
  • 17. Sylvain Hallé Mise en contexte #2: interaction de ! Deux entités échangent des ! L'interaction possède une mémoire (memoryful behaviour) ! Deutsch, Sui, Vianu (PODS 2006): utiliser une logique temporelle (disons CTL) pour définir les contraintes services web messages Service Impossible d'envoyer D après avoir envoyé un A ! AG (a AX AG d)® Ø Mise en contexte
  • 18. Sylvain Hallé Qu'en est-il du des messages?contenu Service Utilisateur Mise en contexte
  • 19. Sylvain Hallé Qu'en est-il du des messages?contenu A 3 Service Utilisateur Mise en contexte
  • 20. Sylvain Hallé Qu'en est-il du des messages?contenu A 3 Service Utilisateur Si A est reçu avec valeur ( 0), envoyer C avec valeur . Sinon, envoyer B avec valeur . x x+1 9 ¹ Mise en contexte
  • 21. Sylvain Hallé Qu'en est-il du des messages?contenu C 4 Service Utilisateur Si A est reçu avec valeur ( 0), envoyer C avec valeur . Sinon, envoyer B avec valeur . x x+1 9 ¹ Mise en contexte
  • 22. Sylvain Hallé Qu'en est-il du des messages? ! Le contenu des données influence le comportement contenu Service C 4 Si A est reçu avec valeur ( 0), envoyer C avec valeur . Sinon, envoyer B avec valeur . x x+1 9 ¹ Utilisateur Mise en contexte
  • 23. Sylvain Hallé Qu'en est-il du des messages? ! Le contenu des données influence le comportement contenu M 6 Service Utilisateur Mise en contexte
  • 24. Sylvain Hallé Qu'en est-il du des messages? ! Le contenu des données influence le comportement contenu Service M 6 Utilisateur Mise en contexte
  • 25. Sylvain Hallé Service M 6 Qu'en est-il du des messages? ! Le contenu des données influence le comportement... entre contenu plusieurs messages Utilisateur M doit avoir la même valeur qu'un A envoyé auparavant! Mise en contexte
  • 26. Sylvain Hallé Qu'en est-il du des messages? ! Le contenu des données influence le comportement... entre contenu plusieurs messages Service M 6 Utilisateur M doit avoir la même valeur qu'un A envoyé auparavant! Comment le savoir? Mise en contexte
  • 27. Sylvain Hallé Qu'en est-il du des messages? ! Le contenu des données influence le comportement... entre ! CTL peut-il encore exprimer ceci? contenu plusieurs messages Service M 6 Utilisateur M doit avoir la même valeur qu'un A envoyé auparavant! Comment le savoir? Mise en contexte
  • 28. Sylvain Hallé Qu'en est-il du des messages? ! Le contenu des données influence le comportement... entre ! CTL peut-il encore exprimer ceci? contenu plusieurs messages Service M doit avoir la même valeur qu'un A envoyé auparavant! AF ( : a( ) AF m( ))$x x xÙ Mise en contexte
  • 29. Sylvain Hallé Qu'en est-il du des messages? ! Le contenu des données influence le comportement... entre ! CTL peut-il encore exprimer ceci? contenu plusieurs messages Service M doit avoir la même valeur qu'un A envoyé auparavant! AF ( : a( ) AF m( ))$x x xÙ Mise en contexte
  • 30. Sylvain Hallé Deux contextes: ! Plongement de XPath/XQuery en CTL ! Vérification de transactions de services web Même besoin: ! et plusieurs éléments d'un (ou plusieurs) document(s) XML... ! ... = quantification du premier ordre en logique temporelle (ici CTL) Comment faire? extraire comparer Mise en contexte
  • 31. Sylvain Hallé Hallé, Villemaire, Cherkaoui, Tremblay (WS-FM 2007): = structure de Kripke "spéciale" ! Les états contiennent k ! ... = messages XML d'arité ! ... (pas de hiérarchie (pour le moment)) workflow messaging model couples paramètre-valeur bornée plats <message> <a>1</a> <a>3</a> <b>9</b> </message> <message> <q>8</q> <q>3</q> </message> a a a = a = a = b b b b = 1 = 3 = 9 1 2 3 1 2 3 a a a = q = q = # b b b = 8 = 3 = # 1 2 3 1 2 3 Workflow messaging model
  • 32. Sylvain Hallé CTL-FO+ = CTL + quantification du premier ordre sur les couples Ex: AF ($ x : AX AF ($ y : x=y))a q <message> <a>1</a> <a>3</a> <b>9</b> </message> <message> <q>8</q> <q>3</q> </message> a a a = a = a = b b b b = 1 = 3 = 9 1 2 3 1 2 3 a a a = q = q = # b b b = 8 = 3 = # 1 2 3 1 2 3 $ x : j(x) Û $i : a=p Ù b=k Ù j(k)p i i CTL-FO+
  • 33. Sylvain Hallé Model checking de CTL-FO+ sur un workflow messaging model? Complexité du model checking (domaines finis): (Hallé et al., EDOC 2007) pas pire que LTL Trois solutions: 1. Nouveau model checker 2. Adapter model checker existant 3. Retraduire le problème en CTL classique PSPACE-complet Þ Model checking de CTL-FO+
  • 34. Sylvain Hallé Tentative #1: quantification Transformer une formule quantifiée comme: en pour toutes les valeurs du domaine de x. Devient formule CTL classique. idée (on verra plus loin). explicite Mauvaise Model checking de CTL-FO+
  • 35. Sylvain Hallé Tentative #2: quantification Adaptation d'une idée de Alur et Henzinger (1994) Utilisée comme moyen de la quantification du premier ordre en CTL Principe: ajouter des variables d'état au système qui vont "geler" la valeur d'une autre variable d'état à un moment précis freeze simuler Model checking de CTL-FO+
  • 36. Sylvain Hallé AF ($ x : AX AF ($ y : x=y))a q a a a = a = a = b b b b = 1 = 3 = 9 1 2 3 1 2 3 a a a = q = q = # b b b = 8 = 3 = # 1 2 3 1 2 3 Freeze quantification
  • 37. Sylvain Hallé AF ($ x : AX AF ($ y : x=y))a q a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 Freeze quantification
  • 38. Sylvain Hallé AF ($ x : AX AF ($ y : x=y))a q a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = a = a = b = 1 b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 x=1 Freeze quantification
  • 39. Sylvain Hallé AF ($ x : AX AF ($ y : x=y))a q a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = a = a = b = 1 b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 x=1 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 Freeze quantification
  • 40. Sylvain Hallé AF ($ x : AX AF ($ y : x=y))a q a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = a = a = b = 1 b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 8 1 2 3 1 1 2 3 2 x=1 y=8 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 Freeze quantification
  • 41. Sylvain Hallé AF ($ x : AX AF ($ y : x=y))a q a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = a = a = b = 1 b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 3 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 8 1 2 3 1 1 2 3 2 x=1 y=8 y=3 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 Freeze quantification
  • 42. Sylvain Hallé AF ($ x : AX AF ($ y : x=y))a q a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = a = a = b = 1 b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 3 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 8 1 2 3 1 1 2 3 2 x=1 . . . y=8 y=3 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 Freeze quantification
  • 43. Sylvain Hallé AF ($ x : AX AF ($ y : x=y))a q a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = a = a = b = 1 b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 3 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 8 1 2 3 1 1 2 3 2 x=1 x=3 . . . . . . y=8 y=3 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 Freeze quantification
  • 44. Sylvain Hallé Hallé, Villemaire, Cherkaoui, IEEE TSE 2008: on peut systématiser cette construction Workflow messaging model M + variables et qualificatif workflow messaging model M' Deuxième étape: on se débarrasse de la quantification dans la formule Formule CTL-FO+ j formule CTL y' Garde: "les t premières variables sur n ont pris une valeur" Þ Þ freeze Freeze quantification
  • 45. Sylvain Hallé Traduction récursive w: paramétrisée par n (nombre total de variables quantifiées) et t (nombre de variables freeze qui ont déjà une valeur) Connecteurs booléens et égalité: direct Freeze quantification
  • 46. Sylvain Hallé Traduction du EX: a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = a = a = b = 1 b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 3 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 8 1 2 3 1 1 2 3 2 x=1 x=3 . . . . . . y=8 y=3 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 Freeze quantification
  • 47. Sylvain Hallé Traduction du AF: a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = a = a = b = 1 b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 3 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 8 1 2 3 1 1 2 3 2 x=1 x=3 . . . . . . y=8 y=3 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 Freeze quantification
  • 48. Sylvain Hallé Traduction du AF: a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = a = a = b = 1 b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 3 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 8 1 2 3 1 1 2 3 2 x=1 x=3 . . . . . . y=8 y=3 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 Généralisation: Si on remplace par true, on retrouve la définition classique i.e. le garde est un "filtre" Freeze quantification
  • 49. Sylvain Hallé Traduction du EU: a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = a = a = b = 1 b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 3 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 8 1 2 3 1 1 2 3 2 x=1 x=3 . . . . . . y=8 y=3 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 Freeze quantification
  • 50. Sylvain Hallé Traduction de la quantification existentielle: a a a n = a = a = b = # b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = a = a = b = 1 b b b n = 1 = 3 = 9 = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = # b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 3 1 2 3 1 1 2 3 2 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = 8 1 2 3 1 1 2 3 2 x=1 x=3 . . . . . . y=8 y=3 a a a n = q = q = # = 1 b b b n = 8 = 3 = # = # 1 2 3 1 1 2 3 2 Freeze quantification
  • 51. Sylvain Hallé Théorème (Hallé et al., IEEE TSE 2008): ssi Traduction exponentielle... ...mais s'il en existe une meilleure => P = NP Minute! La quantification explicite était elle aussi une traduction exponentielle! CTL-FO+ PSPACE-complet CTL EXPTIME Freeze quantification
  • 52. Sylvain Hallé Quantification explicite Freeze quantification - Formule dépend du - Formule indépendante domaine du domaine - Petit système - Grand système - Grande formule - Petite formule On dit qu'un model checker est optimisé pour de grands espaces d'états, mais des formules (relativement) courtes. Est-ce vrai? Comparaison
  • 53. Sylvain Hallé Formules CTL-FO+ tirées d'un scénario de commerce électronique F1- "Un même produit ne peut apparaître que dans un seul message dans toute la transaction" (2 quantificateurs) F2- "Chaque produit dans une commande apparaît plus tard dans une confirmation de commande" (4 quantificateurs) F3- "Au moins un produit est acheté" (6 quantificateurs) Get all stocks Get stock details Place buy order(s) Place sell order(s) Confirm buy order(s) Confirm sell order(s) Cash transfer Cancel transaction Customer Online stock trading Résultats expérimentaux
  • 56. Sylvain Hallé Out of memory (exp) Résultats expérimentaux
  • 57. Sylvain Hallé Quantification explicite: plus appropriée (et plus efficace) pour des formules avec peu de quantificateurs (< 3) Quantification freeze: seule méthode qui donne des temps raisonnables pour toutes les formules >10000 fois plus rapide dans certains cas Conclusion
  • 58. Sylvain Hallé S. Hallé, R. Villemaire, O. Cherkaoui, B. Ghandour. (2007). Model- checking Data-Aware Temporal Workflow Properties with CTL- FO+. Proc. EDOC 2008, IEEE Computer Society. S. Hallé, R. Villemaire, O. Cherkaoui, J. Tremblay, B. Ghandour. (2007). Extending Model Checking to Data-Aware Temporal Properties of Web Services. Proc. WS-FM 2008, Springer LNCS 4937. S. Hallé, R. Villemaire, O. Cherkaoui. Specifying and Validating Data-aware Temporal Web Service Properties. IEEE Transactions on Software Engineering (en révision). Références