• Aucun résultat trouvé

Ensembles de piles et représentation symbolique

Dans le document Graphes infinis de présentation finie (Page 170-173)

Pour être en mesure de mettre au point des techniques de vérification

symbo-liques sur les processus hors-contexte d’ordre supérieur, nous avons besoin d’un

moyen de représenter de façon finie des ensembles potentiellement infinis de

confi-gurations. Dans ce paragraphe nous présentons la représentation symbolique

choi-sie pour les ensembles de configurations (c’est à dire de piles), ainsi que la famille

d’automates qui y est associée.

Une n-pile s= [s

1

. . . s

l

] sur Γ est associée à un mot w(s) = [w(s

1

). . . w(s

l

)],

dans lequel les lettres de Γ n’apparaissent qu’à une profondeur de parenthésage

égale à n(nous omettrons souvent de distinguer une pile s du mot w(s)associé).

Un ensemble de piles sur Γest ditrégulier si l’ensemble des mots le représentant

est accepté par un automate fini sur Γ

= Γ∪ {[,]}, que nous appelons dans ce

cas précis unautomate de piles.

Soit A un tel automate, un état p de A est dit de niveau 0 s’il n’a aucune

transition sortante par [ et aucune transition entrante par]. Il est de niveau k si

tous ses successeurs par [ et prédécesseurs par ] sont de niveau k−1. Le niveau

de p est noté l(p). Nous définissons également une notion de niveau pour les

chemins. Unchemin de niveau n est un chemin p

1

. . . p

k

tel quel(p

1

) = l(p

k

) = n

et ∀i ∈ [2,k−1], l(p

i

) < n. Tous les chemins de niveau n d’un automate sont

étiquetés par des piles de niveaun. Enfin, pour pouvoir faire référence de manière

concise à l’ensemble des chemins de niveaunentre deux états de niveaundonnés,

on introduit la notation suivante. Soit

Q={q∈Q

A

| l(q)< n∧p

1

←→A+q←→A+p

2

}

l’ensemble de tous les états de A apparaissant le long d’un chemin de niveau n

entrep

1

etp

2

. Si Qest non vide, on écrit p

1

;

B

A

p

2

, où B est défini comme

B = Q

B

=Q∪ {p

1

,p

2

},Γ

, δ

B

A

∩(Q

B

×Γ

×Q

B

), p

1

, p

2

.

Cette notation permet en quelque sorte d’isoler des « sous-automates » de

ni-veau inférieur au sein d’un automate de nini-veau plus élevé. Si l’on suit cette idée,

et en raison de la structure imbriquée des piles, il sera parfois plus commode

de caractériser directement des ensembles de piles à l’aide d’automates de piles

hiérarchiques.

Définition 5.2. Un automate de piles hiérarchique de niveau 1 est un automate

fini étiqueté sur l’alphabet de pile Γ. Un automate de pile hiérarchique de niveau

n≥2 est un automate fini dont les transitions sont étiquetées par des automates

hiérarchiques de niveau n−1 sur Γ.

Soit A = (Q,Γ,δ,q

0

,q

f

) un automate hiérarchique de niveau n

2

avec n ≥ 2.

L’existence d’une transition étiquetée par un automate B de niveau 1 entre les

états de contrôle p et q dans A est notée comme de coutume p ←→ ABq, ou

simplement p −→

B

q. Le langage de niveau k de A, pour k ∈ [1,n], est défini

récursivement comme

L

k

(A) = {[L

k

(A

1

). . . L

k

(A

l

)]| [A

1

. . . A

l

]∈L

n

(A)} si k < n,

L

k

(A) = {[A

1

. . . A

l

] | q

0

←→AA

1

. . .←→AA

l

q

f

} si k =n.

Par simplicité, on abrège souventL

1

(A) enL(A). On dit qu’un automate

hiérar-chiqueB apparaît dansAsiB étiquette une transition deA, ou apparaît au sein

d’un automate étiquetant une transition de A.

Les automates hiérarchiques sont utiles pour représenter des ensembles de piles

d’ordre supérieur, mais on peut montrer qu’ils ont en fait la même expressivité

que les automates de piles ordinaires.

Proposition 5.1. Les langages de piles acceptés par les automates hiérarchiques

de piles sont les langages réguliers de piles.

Démonstration. Soit A = (Q,Γ,δ,i,f) un automate hiérarchique, nous calculons

par récurrence sur le niveaun deAun automate de piles non hiérarchique ♭Atel

que L

1

(A) =L(♭A). Pourn = 1, on prend ♭A =A. Pour les valeurs plus élevées

den, soientA

1

. . . A

m

les automates hiérarchiques de niveau n−1étiquetant les

transitions de A. Par hypothèse de récurrence on peut construire des automates

♭A

1

. . . ♭A

m

tels que ∀j ∈ [1,m], L

1

(A

j

) = L(♭A

j

). Soit ♭A

j

= (Q

j

,Γ,δ

j

,i

j

,f

j

),

(tous les Q

j

sont supposés disjoints). Nous construisons alors l’automate ♭A =

(Q

,Γ,δ

,i

,f

) où pour tous p,q ∈ Q, j ∈ [1,m], r,s,t,u ∈ Q

j

et a ∈ Γ

tels que

p←→AA

j

q, i

j

←→A

j

↓[r, s←→A

j

↓atet u←→A

j

↓]f

j

, on a :

i

←→A↓[i p←→A↓[pr ps ←→A↓apt pu←→A↓]q f ←→A↓]f

.

Suivant cette construction, un chemin de ♭A entre deux états de contrôle p et q

dans Q∩Q

est étiqueté par le mot s si et seulement si s représente une pile de

niveau (n−1)acceptée par un certain A

j

tel que p←→AA

j

q. Ainsi ♭A accepte

tous les mots de la forme [s

1

. . . s

l

] tels que [A

i1

. . . A

il

] ∈ L

n

(A) et tel que pour

tout j, s

j

∈L(A

ij

), ce qui est précisément la définition de L(A).

Ensembles de piles et représentation symbolique 161

Réciproquement, soit A = (Q,Γ

,δ,i,f) un automate acceptant des piles de

niveau n. Nous voulons construire un automate hiérarchique A

= (Q

,Γ,δ

,i

,f

)

de niveau n tel que L

1

(A

) =L(A). Comme aucun chemin de A étiqueté par un

mot qui ne représente pas une pile ne peut être acceptant, on peut supposer que

le niveau de chaque état dans Q est bien défini. Soit Q

n−1

l’ensemble d’états de

niveaun−1de A. Les seuls états de niveaun sont i etf. Si n = 1, on construit

A

avec un ensemble d’états Q

=Q

n−1

et l’ensemble de transitions

δ

={i

−→

a

q | i←→A[p←→Aaq} ∪ δ ∩ (Q

n−1

×Γ×Q

n−1

)

∪ {p−→

a

f

| p←→Aaq ←→A]f}.

Si n >1, pour tous p,q ∈ Q

n−1

et tout automate B tel que p ;

B

q, on construit

d’abord récursivement l’automate hiérarchiqueB

de niveaun−1tel queL

1

(B

) =

L(B). On donne ensuite à A

l’ensemble de transitions

δ

={i

−→

B

q | ∃p,q ∈Q

n−1

, i←→A[p ;

B A

q}

∪ {p−→

B

q | ∃p,q ∈Q

n−1

, p;

B A

q}

∪ {p−→

a

f

| ∃p,q ∈Q

n−1

, p ;

a A

q←→A]f}.

Une pile s est acceptée par A

si et seulement si il existe un chemin dans A

étiqueté par B

1

. . . B

k

de i

àf

tel que s∈[L

1

(B

1

). . . L

1

(B

k

)]. Nous avons donc

égalements∈[L(B

1

). . . L(B

k

)], et par conséquent s∈L(A).

De plus, l’ensemble des langages réguliers de piles de niveau n est fermés par

union, intersection et complémentaire dans §n. Pour tout a ∈ Γ et n ∈ N, on

définit pour un usage ultérieur l’automate A

n

a

reconnaissant le langage L(A

n a

) =

{s ∈ §

n

| top(s) = a}. On note aussi A×B l’opération de produit synchrone

classique entre deux automates tel queL(A×B) =L(A)∩L(B).

Avant de continuer, nous présentons quelques définitions et notations

supplé-mentaires. Pour pouvoir facilement exprimer l’existence d’ensembles de calculs

d’automates hiérarchiques et les manipuler aisément, nous définissons la notion

d’expression de pile.

Définition 5.3. Une expression de pile de niveau 0 sur l’alphabet Γ est

simple-ment une lettre dans Γ. Une expression de pile de niveau n >0 est soit une pile

s de niveau n, le nom A d’un automate de piles de niveau n (hiérarchique ou

non), une concaténation d’expressions de piles de niveau n, une expression de

pile de niveau n−1 entre crochets droits [e], ou la concaténation itérée e

+

d’une

expression de pile e de niveau n.

De plus, pour décrire les calculs d’automates hiérarchiques nous définissons

une relation binaire 7−→, qui exprime le choix d’un chemin particulier dans un

automate hiérarchique apparaissant au sein d’une expression.

Définition 5.4. Soit e = uAv une expression de piles où A est un automate

hiérarchique de piles de niveau n, on peut écrire e 7−→ u[w]v pour tout w ∈

L

n

(A). Comme d’habitude on note 7−→

la clôture réflexive et transitive de 7−→.

Une séquence d’expressions de piles e

1

. . . e

m

telles que e

1

= A, e

m

∈ §

n

et ∀i ∈

[1,m−1], e

i

7−→ e

i+1

est appelée un calcul hiérarchique de A.

Enfin, nous définissons une notion de concaténation sur les piles et expressions

de piles.

Définition 5.5. Soiente = [e

1

e

2

],f etg des expressions de piles, on écrite=f·g

si soit f = e

1

et g = [e

2

], soit e

1

= f ·g

et g = [g

e

2

]. Remarquons que si e est

une lettre de Γ ou un automate, il n’existe aucun f et g tels que e=f·g.

Par exemple, on pourrait écrire

[[aB][a][bcd]] =a·[[B][a][bcd]],oubien[[aB][a][bcd]] = [aB][a]·[[bcd]].

Dans le document Graphes infinis de présentation finie (Page 170-173)