• Aucun résultat trouvé

Traduction des Frappes de Processus avec Absorption de Stochasticité

Dans cette section, nous reprenons dans le cadre spécifique des Frappes de Processus les con- structions présentées dans le chapitre 5 du facteur d’absorption de stochasticité en π-calcul stochas- tique et en PRISM.

En outre de montrer une construction directe depuis les Frappes de Processus munis de paramètres temporels et stochastiques dans des formalismes classiques, il apparaît que les constructions de l’ab- sorption de stochasticité se retrouvent simplifiées comparé au cadre général du π-calcul.

Les sous-sections 7.2.1 et 7.2.2 détaillent respectivement la traduction en π-calcul stochastique markovien et en PRISM des Frappes de Processus dont la durée des actions suit une distribution de Erlang paramétrée par un taux d’utilisation et un facteur d’absorption de stochasticité. À titre d’exemple, nous exhibons la traduction des Frappes de Processus définies dans la figure 7.1 dans ces formalismes.

Paramètres Temporels et Stochastiques des Frappes de Processus 113

Définition 7.1(ΠC(Σ, L, H)). Pour toute sorte a ∈ Σ et tout processus ai ∈ La, nous définissons

le processus π-Calcul Ai comme suit :

Ai(i d , ˜c , ˜k ), X h = ai→ bj  bk ∈ H a6= b !h(i d ).Ai(i d , ˜c , ˜k ) + X h = bj → ai  ak ∈ H a6= b ?h(hi d ).         [hi d = k [h]∧ (c[h] = sah− 1 ∨ sah= 1)] Ak(νi d , ˜cak, ˜kak) | [hi d = k[h] ∧ c[h] < sah− 1] Ai(i d , ˜c{h 7→ c[h] + 1}, ˜k ) | [hi d 6= k[h]] Ai(i d , ˜c{h 7→ 1}, ˜k{h 7→ hi d })         + X h = ai → ai  ak ∈ H τh.  [c [h] = sah− 1] Ak(νi d , ˜cak, ˜kak) | [c[h] < sah− 1] Ai(i d , ˜c{h 7→ c[h] + 1}, ˜k )  avec ˜cak = k˜ak = {h 7→ 0 | h ∈ H ∧ cible(h) = a

k} les vecteurs initiaux des compteurs et

identifiants des frappeurs, respectivement. À tout canal h ou action interne τhest affecté un taux

d’utilisation rh.sah.

Étant donné un état s ∈ L des Frappes de Processus, nous définissons [s] le processus π-Calcul correspondant comme étant la composition parallèle des processus présents dans s :

[s] = Y

a∈ Σ

Ai(νi d , ˜cai, ˜kai) si s[a] = ai .

7.2.1

Des Frappes de Processus vers le π-Calcul Stochastique

Dans la sous-section 4.2.2 (chapitre 4), nous avons montré la traduction des Frappes de Pro- cessus en π-calcul (définition 4.3 page 47). En attachant aux actions h un taux d’utilisation rhet un

facteur d’absorption de stochasticité sah, nous obtenons alors, avec la même définition, un modèle

des Frappes de Processus en π-calcul stochastique distribué par Erlang.

En se basant sur la traduction du π-calcul stochastique distribué par Erlang en π-calcul stochas- tique distribué exponentiellement présentée dans la sous-section 5.3.2 page 64, nous montrons dans la définition 7.1 une traduction directe des Frappes de Processus distribuées par Erlang en π-calcul stochastique markovien. Pour rappel, cette construction remplace une action suivant un taux r et un facteur d’absorption de stochasticité sa par sa actions suivant un taux r.sa. Contrairement à la traduction générique présentée en sous-section 5.3.2, cette traduction des Frappes de Processus ne requiert pas la capacité à avoir des listes extensibles dans les valeurs des paramètres, ni la capacité à avoir des compétitions dont la taille dépend de la valeur de certains paramètres du processus. En effet, contrairement au cas général en π-calcul, les actions sur les canaux résultant de la traduction des Frappes de Processus ne mettent en jeu que deux processus : un et un seul émetteur et un et un seul récepteur. Ainsi, il n’est plus nécessaire de partager des canaux privés afin d’identifier la communication à absorber ; seule l’identification de l’émetteur reste nécessaire.

Un canal h est défini avec un taux d’utilisation rh.sah pour chaque action h ∈ H. À chaque

114 Chapitre 7 paramètre un canal identifiant id, un compteur ch et un canal kh pour chaque action h ∈ H telle

que ai est la cible. Pour chaque frappe de ai sur lui-même, une transition interne est effectuée,

à l’issue de laquelle le processus est redémarré si le compteur associé n’a pas atteint le facteur d’absorption, ou alors le processus est remplacé par le processus correspondant au bond de l’action. Pour chaque frappe de ai vers un autre processus, le processus π-calcul Ai écrit sur le canal associé

et redémarre. Enfin, pour chaque frappe sur le processus ai, le processus π-calcul Ai lit le canal

identifiant hid du frappeur sur le canal h associé et effectue plusieurs tests : si hid = kh, selon la

valeur du compteur ch, le processus redémarre en incrémentant chou est remplacé par le processus

π-calcul correspondant au bond ; si hid est différent de kh, alors le frappeur a changé, et l’absorption

reprend depuis le début, avec kh= hi d.

Cette construction étant un cas particulier de la construction présentée en sous-section 5.3.2, sa correction en découle directement.

La traduction des Frappes de Processus de la figure 7.1 en suivant cette définition résulte en le processus A0(νi d , 0, 0)| B0(νi d , 0, 0)avec les définition des processus π-calcul suivants où l’on

considère h1= a0→ a0 a1et h2= a0→ b0 b1 : A1(i d ), 0 B1(i d ), 0 A0(i d , ch1, kh1), !h2(i d ).A0(i d , ch1, kh1) +τh1.  [ch1= sah1− 1] A1(νi d ) | [ch1 < sah1− 1] A0(i d , ch1+ 1, kh1)  B0(i d , ch2, kh2)), ?h2(hi d ).   [hi d = kh2∧ ch2 = sah2− 1 ∨ sah2 = 1] B1(νi d ) | [hi d = kh2∧ ch2 < sah2− 1] B0(i d , ch2+ 1, kh2) | [hi d 6= kh2] B0(i d , 1, hi d )  

7.2.2

Des Frappes de Processus vers PRISM

La traduction des Frappes de Processus en PRISM permet la vérification automatique de pro- priétés quantitatives via le logiciel PRISM (Hinton et coll., 2006). La définition 7.2 montre une spécialisation de la construction de l’absorption de stochasticité en PRISM présentée dans la sec- tion 5.5 page 75 pour le cas particulier des Frappes de Processus.

La construction proposée est très proche de la section 5.5 : nous créons un module par sorte des Frappes de Processus ; chaque module possède une variable locale décrivant le processus actif courant. Pour chaque action dont la sorte est la cible, un compteur pour l’absorption de stochasticité est créé ; ce compteur est incrémenté à chaque fois que l’action est jouée, jusqu’à atteindre la valeur du facteur d’absorption de stochasticité : le processus courant est mis à jour et les compteurs remis à un. Dans le cas où la sorte a le rôle de frappeur et que son processus courant change, elle indique via une variable locale (notée d_h) que le compteur d’absorption de l’action h doit être remis à un. La correction de cette traduction peut être déduite de la traduction des Frappes de Processus en Automates Finis Communicants (théorème 4.1 page 46) pour l’aspect qualitatif, l’aspect quantitatif ayant été traité dans la section 5.5.

Paramètres Temporels et Stochastiques des Frappes de Processus 115 Définition 7.2(PRISM(Σ, L, H)). Pour chaque sorte a ∈ Σ, nous définissons un module PRISM proc_Acontenant les variables varA et les actions actA définies comme suit :

v ar A ={a : [0..la]| La= [0; la]}

représente le processus de sorte a actif ; ∪{c_h: [1..sah] init 1 | h ∈ H ∧ Σ(cible(h)) = a}

compteur d’absorption de stochasticité ;

∪{d_h: bool init false | h ∈ H ∧ frappeur(h) 6= cible(h) ∧ Σ(frappeur(h)) = a} remise à zéro du compteur d’absorption de stochasticité.

ac tA ={[] (a =i ) & (c_h<sah)→ rh∗ sah: (c_h0= c_h+1);

[] (a =i ) & (c_h=sah)→ rh∗ sah: (a0=j ) & Rai & Sai; | h = ai→ ai aj ∈ H}

auto-frappes d’un processus de sorte a ; ∪{[h] (a =i ) & d_h → rh∗ sah: (c_h0= 2);

[h] (a =i ) & !d_h & (c_h<sah)→ rh∗ sah: (c_h0= c_h+1);

[h] (a =i ) & !d_h & (c_h=sah)→ rh∗ sah: (a0=j ) & Rai & Sai; | h = bk → ai aj ∈ H ∧ b 6= a ∧ sah> 1}

frappes sur un processus de sorte a avec absorption de stochasticité ; ∪{[h] (a =i ) → rh∗ sah: (a0=j ) & Rai & Sai;| h = bk → ai  aj∈ H ∧ b 6= a

∧ sah= 1}

frappes sur un processus de sorte a sans absorption de stochasticité, ∪{[h] (a =i ) → (d_h0

= false); | h ∈ H ∧ frappeur(h) = ai

∧ frappeur(h) 6= cible(h)} frappes par un processus de sorte a où Rai =

&

h∈H|cible(h)=ai (c_h0= 1)et S ai =

&

h∈H|frappeur(h)=ai∧frappeur(h)6=cible(h) (d_h0= c_h > 1).

Le listing 7.1 illustre la traduction des Frappes de Processus de la figure 7.1 en PRISM à l’aide de cette définition. Cet exemple est en fait une variante en Frappes de Processus de l’exemple présenté en sous-section 5.5.2 et traduit en PRISM avec absorption de stochasticité dans le listing 5.2 page 80. Ainsi, l’analyse formelle de l’impact des paramètres temporels sur le comportement obtenu (ici, la probabilité d’atteindre le processus a0) s’applique directement au modèle PRISM du listing 7.1

et donc aux Frappes de Processus de la figure 7.1.