58
Sylvain Hallé Sylvain Hallé L a b 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

La quantification du premier ordre en logique temporelle

Embed Size (px)

Citation preview

Sylvain Hallé

Sylvain Hallé

La

b

Université du Québec à MontréalMontréal, CANADA

Laboratoire de téléinformatiqueUQAM

La quantification du premier ordre enlogique temporelle: applications auxdocuments 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=vj : Ø 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Ø jj Ù 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=vj : Ø 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=vp, p=v Û p Ù EX (a=p Ù b=v)Ø j Û Ø jj Ù 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=vp, p=v Û p Ù EX (a=p Ù b=v)Ø j Û Ø jj Ù 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=vp, p=v Û p Ù EX (a=p Ù b=v)Ø j Û Ø jj Ù 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

UtilisateurService

Mise en contexte

Sylvain Hallé

Mise en contexte #2: interaction de

! Deux entités échangent des

services web

messages

A

UtilisateurService

Mise en contexte

Sylvain Hallé

Mise en contexte #2: interaction de

! Deux entités échangent des

services web

messages

B

UtilisateurService

Mise en contexte

Sylvain Hallé

Mise en contexte #2: interaction de

! Deux entités échangent des

services web

messages

D

UtilisateurService

Mise en contexte

Sylvain Hallé

Mise en contexte #2: interaction de

! Deux entités échangent des

services web

messages

D

UtilisateurService

Mise en contexte

Sylvain Hallé

Mise en contexte #2: interaction de

! Deux entités échangent des

services web

messages

UtilisateurService

Impossibled'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

UtilisateurService

Impossibled'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

UtilisateurService

Impossibled'envoyer D après

avoir envoyéun A !

Commentle

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

UtilisateurService

Impossibled'envoyer D après

avoir envoyéun A !

Commentle

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

Impossibled'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

ServiceUtilisateur

Mise en contexte

Sylvain Hallé

Qu'en est-il du des messages?contenu

A3

ServiceUtilisateur

Mise en contexte

Sylvain Hallé

Qu'en est-il du des messages?contenu

A3

ServiceUtilisateur

Si A est reçu avecvaleur ( 0), envoyer Cavec valeur .Sinon, envoyer Bavec valeur .

xx+1

9

¹

Mise en contexte

Sylvain Hallé

Qu'en est-il du des messages?contenu

C4

ServiceUtilisateur

Si A est reçu avecvaleur ( 0), envoyer Cavec valeur .Sinon, envoyer Bavec valeur .

xx+1

9

¹

Mise en contexte

Sylvain Hallé

Qu'en est-il du des messages?

! Le contenu des données influencele comportement

contenu

Service

C4

Si A est reçu avecvaleur ( 0), envoyer Cavec valeur .Sinon, envoyer Bavec valeur .

xx+1

9

¹

Utilisateur

Mise en contexte

Sylvain Hallé

Qu'en est-il du des messages?

! Le contenu des données influencele comportement

contenu

M6

ServiceUtilisateur

Mise en contexte

Sylvain Hallé

Qu'en est-il du des messages?

! Le contenu des données influencele comportement

contenu

Service

M6

Utilisateur

Mise en contexte

Sylvain Hallé

Service

M6

Qu'en est-il du des messages?

! Le contenu des données influencele comportement... entre

contenu

plusieurs messages

Utilisateur

M doit avoirla même valeurqu'un A envoyé

auparavant!

Mise en contexte

Sylvain Hallé

Qu'en est-il du des messages?

! Le contenu des données influencele comportement... entre

contenu

plusieurs messages

Service

M6

Utilisateur

M doit avoirla même valeurqu'un A envoyé

auparavant!

Commentle

savoir?

Mise en contexte

Sylvain Hallé

Qu'en est-il du des messages?

! Le contenu des données influencele comportement... entre

! CTL peut-il encore exprimer ceci?

contenu

plusieurs messages

Service

M6

Utilisateur

M doit avoirla même valeurqu'un A envoyé

auparavant!

Commentle

savoir?

Mise en contexte

Sylvain Hallé

Qu'en est-il du des messages?

! Le contenu des données influencele comportement... entre

! CTL peut-il encore exprimer ceci?

contenu

plusieurs messages

Service

M doit avoirla même valeurqu'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 influencele comportement... entre

! CTL peut-il encore exprimer ceci?

contenu

plusieurs messages

Service

M doit avoirla même valeurqu'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-valeurbornée

plats

<message> <a>1</a> <a>3</a> <b>9</b></message>

<message> <q>8</q> <q>3</q></message>

aaa

= a= a= b

bbb

= 1= 3= 9

1

2

3

1

2

3

aaa

= q= q= #

bbb

= 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>

aaa

= a= a= b

bbb

= 1= 3= 9

1

2

3

1

2

3

aaa

= q= q= #

bbb

= 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

aaa

= a= a= b

bbb

= 1= 3= 9

1

2

3

1

2

3

aaa

= q= q= #

bbb

= 8= 3= #

1

2

3

1

2

3

Freeze quantification

Sylvain Hallé

AF ($ x : AX AF ($ y : x=y))a q

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

Freeze quantification

Sylvain Hallé

AF ($ x : AX AF ($ y : x=y))a q

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= a= a= b= 1

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 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

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= a= a= b= 1

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

x=1

aaan

= q= q= #= 1

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

Freeze quantification

Sylvain Hallé

AF ($ x : AX AF ($ y : x=y))a q

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= a= a= b= 1

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 8

1

2

3

1

1

2

3

2

x=1

y=8aaan

= q= q= #= 1

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

Freeze quantification

Sylvain Hallé

AF ($ x : AX AF ($ y : x=y))a q

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= a= a= b= 1

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 3

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 8

1

2

3

1

1

2

3

2

x=1

y=8

y=3

aaan

= q= q= #= 1

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

Freeze quantification

Sylvain Hallé

AF ($ x : AX AF ($ y : x=y))a q

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= a= a= b= 1

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 3

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 8

1

2

3

1

1

2

3

2

x=1

. . .

y=8

y=3

aaan

= q= q= #= 1

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

Freeze quantification

Sylvain Hallé

AF ($ x : AX AF ($ y : x=y))a q

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= a= a= b= 1

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 3

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 8

1

2

3

1

1

2

3

2

x=1

x=3

. . .

. . .

y=8

y=3

aaan

= q= q= #= 1

bbbn

= 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:

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= a= a= b= 1

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 3

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 8

1

2

3

1

1

2

3

2

x=1

x=3

. . .

. . .

y=8

y=3

aaan

= q= q= #= 1

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

Freeze quantification

Sylvain Hallé

Traduction du AF:

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= a= a= b= 1

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 3

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 8

1

2

3

1

1

2

3

2

x=1

x=3

. . .

. . .

y=8

y=3

aaan

= q= q= #= 1

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

Freeze quantification

Sylvain Hallé

Traduction du AF:

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= a= a= b= 1

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 3

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 8

1

2

3

1

1

2

3

2

x=1

x=3

. . .

. . .

y=8

y=3

aaan

= q= q= #= 1

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

Généralisation:

Si on remplace par true, on retrouvela définition classique

i.e. le garde est un "filtre"

Freeze quantification

Sylvain Hallé

Traduction du EU:

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= a= a= b= 1

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 3

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 8

1

2

3

1

1

2

3

2

x=1

x=3

. . .

. . .

y=8

y=3

aaan

= q= q= #= 1

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

Freeze quantification

Sylvain Hallé

Traduction de la quantification existentielle:

aaan

= a= a= b= #

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= a= a= b= 1

bbbn

= 1= 3= 9= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= #

bbbn

= 8= 3= #= #

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 3

1

2

3

1

1

2

3

2

aaan

= q= q= #= 1

bbbn

= 8= 3= #= 8

1

2

3

1

1

2

3

2

x=1

x=3

. . .

. . .

y=8

y=3

aaan

= q= q= #= 1

bbbn

= 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

CTLEXPTIME

Freeze quantification

Sylvain Hallé

Quantification explicite Freeze quantification

- Formule dépend du - Formule indépendantedomaine 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 unecommande apparaît plus tard dansune 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