Cours 5 : Le Pi-calcul (définitions)
Transcription
Cours 5 : Le Pi-calcul (définitions)
Sémantique de la Concurrence et de la Mobilité Cours 5 : Le Pi-calcul (dénitions) Frédéric Peschanski 29 octobre 2006 1 Syntaxe du Pi-calcul 1.1 Syntaxe formelle Dans un premier temps, nous dénissons deux ensembles innis dénombrables de noms. Les règles de la syntaxe BNF du pi-calcul sont les suivants : Denition D, E(x1 , . . . , xn ), . . . : := P Processus P, Q, . . . : := 0 | α.P | D | E(v1 , . . . vn ) | P + Q | P k Q | (νc)P | [a = b]P | [a 6= b]P Préxe α : := a(x) | ahvi | τ On s'autorisera également les raccourcis suivants : P def si I = {1, 2, . . . , n} alors i∈I Pi = P1 + P2 + . . . + Pn Q def si I = {1, 2, . . . , n} alors i∈I Pi = P1 k P2 k . . . k Pn def (νc1 , c2 , . . . , cn )P = (νc1 )(νc2 ) . . . (νcn )P def P.α = P.α.0 1.2 Noms libres et noms liés Dénition : (noms libres) que : Les noms libres d'un terme P correspondent à la valeur de la fonction f ree(P ) telle f ree(0) = ∅ f ree(a(x).P ) = {a} ∪ f ree(P ) \ {x} f ree(ahvi.P ) = {a, v} ∪ f ree(P ) f ree(τ.P ) = f ree(P ) f ree(P + Q) = f ree(P ) ∪ f ree(Q) f ree(P k Q) = f ree(P ) ∪ f ree(Q) f ree((νc)P ) = f ree(P ) \ {c} Dénition : (noms liés) Les noms liés (bound names ) d'un terme P correspondent à la valeur de la fonction bound(P ) telle que : bound(0) = ∅ bound(a(x).P ) = {x} ∪ bound(P ) bound(ahvi.P ) = bound(P ) bound(τ.P ) = bound(P ) bound(P + Q) = bound(P ) ∪ bound(Q) 1 bound(P k Q) = bound(P ) ∪ bound(Q) bound((νc)P ) = {c} ∪ bound(P ) On dira qu'un nom c est frais (fresh name ) dans P si, et seulement si, c 6∈ f n(P ) def names(P ) = f ree(P ) ∪ bound(P ) 1.3 Contextes de processus Dans le cadre du langage Mini-Pi, on dénit les contextes de processus de façon inductive : C[X] : := 0 | D(v1 , . . . , vn ) | X | α.X | X + P | X k P | (νc) X | [a = b] X | [a 6= b] X où P est une expression de processus quelconque. 1.4 Congruence structurelle Dénition : La relation de congruence structurelle, notée ≡, est une congruence de processus telle que : P ≡ Q si P et Q sontα-convertibles P + Q ≡ Q + P (commutativité de +) P + 0 = P (élément neutre de +) P + (Q + R) ≡ (P + Q) + R (associativité de +) P k Q ≡ Q k P (commutativité de k) P k 0 = P (élément neutre de k) P k (Q k R) ≡ (P k Q) k R (associativité de k) [a = a] P ≡ P [a 6= a] P ≡ 0 (νa)(νb)P ≡ (νb)(νa)P (commutativité de la restriction) (νc)(P k Q) ≡ P k (νc)Q si c 6∈ f n(P ) (extrusion de portée dans le produit) (νc)(P + Q) ≡ P k (νc)Q si c 6∈ f n(P ) (extrusion de portée dans la somme) (νa)[b = c]P ≡ [b = c](νa)P si a 6= b et a 6= c (extrusion dans match) (νa)[b 6= c]P ≡ [b 6= c](νa)P si a 6= b et a 6= c (extrusion dans mismatch) (νc)0 ≡ 0 (élimination de portée) Nous rappelons de plus les propriétés d'équivalence et de congruence pour ≡ : relation d'équivalence : réexivité : P ≡ P commutativité : si P ≡ Q alors Q ≡ P transitivité : si P ≡ Q et Q ≡ R alors P ≡ R congruence de processus (i.e. compositionalité) : pour tout context C[X] du pi-calcul, si P ≡ Q alors C[P ] ≡ C[Q] 2 2.1 Sémantique opérationnelle (partie 1 : réductions) Actions observables Une action observable du pi-calcul est soit : Une émission ahvi, {a, v} ∈ N Une émission liée ahνvi, {a} ∈ N , {v} ∈ N Une réception a(v), {a, v} ∈ N On dénit les noms libres et noms liés dans les actions : def def bound(ahvi) = ∅, f ree(ahvi) = {a, v} 2 def def bound(ahνvi) = {v}, f ree(ahνvi) = {a} def def bound(a(x)) = {x}, f ree(a(x)) = {a} def names(α) = bound(α) ∪ f ree(α) 2.2 Règles de réduction On ajoute les deux égalités suivantes qui permettent de traiter le cas des matchs et mismatchs gardés : [a 6= b] P = P if a 6= b est prouvable (ex. dans c(x)[x 6= b] il n'est pas prouvable [x 6= b] (cela dépend de l'instantiation de x) [a = b] P = 0 if a = b est prouvable (→ step) : τ.P → − P a ∈ Chan → P 0 k Q0 {v/x} (→ com) : ahvi.P + M k a(x).Q + N − P − → P0 → P0 k Q (→ par) : P k Q − P − → P0 → (νa)P 0 (→ res) : (νa)P − P ≡ P0 P − → Q Q ≡ Q0 0 (→ struct) : P − → Q0 P {v1 /x1 , . . . , vn /xn } − → P0 → P 0 si D(x1 , . . . , xn ) = P (→ call) : D(v1 , . . . , vn ) + M − 3