Traducción de -cálculo a lenguajes lógico concurrentes

Anuncio
Traducción de -cálculo a lenguajes lógico
concurrentes
Noelia Maya Fernández
Dpto. Lenguajes y Sistemas (Facultad de Informática)
´ de
Traduccion
Universidad Politécnica de Madrid
´
´
-calculo
a lenguajes logico
concurrentes – p.1/18
Motivación
´ de
Traduccion
Dotar al lenguaje SLAM-SL de caraterísticas para la
especificación de concurrencia y del concepto de estado
´
´
-calculo
a lenguajes logico
concurrentes – p.2/18
Formalismos estudiados
CCS (Calculus for Communicating Systems)
Pi-cálculo
Join-cálculo
´ de
Traduccion
Polyphonic C#, IPCore
´
´
-calculo
a lenguajes logico
concurrentes – p.3/18
Pi-cálculo
Cálculo: Lenguaje para escribir expresiones más un
conjunto de reglas para transformaslas
)
%
'(&
+
,
'
'
%
'
%
'
'
+
'
)
' &
(
´ de
Traduccion
,
$
%
*
$
%
$
%
*
Prefijos de acción
recibir a través del canal (liga el nombre )
envía a través del canal ( es libre)
acción no observable
$
#
!
"
El conjunto
de expresiones de proceso se define
mediante la siguiente sintaxis:
´
´
-calculo
a lenguajes logico
concurrentes – p.4/18
Pi-cálculo
%
´ de
Traduccion
and
if
ESTRUCT:
RES:
PAR:
' (
)
+
*
,
&
)
)
' &
REAC:
TAU:
%
&
Las reglas de reacción sobre el conjunto de procesos de
Pi-cálculo contiene exactamente las transiciciones que
pueden inferirse de las siguientes reglas:
REGLAS DE REACCIÓN
´
´
-calculo
a lenguajes logico
concurrentes – p.5/18
Lenguajes lógico concurrentes
Interpretación de los objetivos atómicos de un objetivo como
un conjunto de procesos
:
p (X ) , q ( X , A ) .
Mecanismo de comunicación basado en variables
compartidas
´ de
Traduccion
$
$
Dos tipos de paralelismo complementarios:
Paralelismo conjuntivo: Reducción simultánea de
diferentes átomos en un objetivo
Paralelismo disyuntivo: Evaluación simultánea de varias
reglas para un mismo átomo
´
´
-calculo
a lenguajes logico
concurrentes – p.6/18
Traducción Pi-cálculo a LLC
Un proceso es un objetivo. Los procesos de describen
mediante cláusulas de programa.
La composición paralela de procesos se corresponde con el
paralelismo cojuntivo
La composición alternativa de procesos se corresponde con
el paralelismo disyuntivo
La réplica se traduce a recurisividad
En pi todo nombre es visible a no ser que se restrinja,
mientras en LLC es todo lo contrario
La secuencia de acciones se consigue mediante unificación
de variables de paso de testigo
´ de
Traduccion
Primera aproximación de un canal: una variable. Segunda
aproximación: Una pizarra en la que se leen y escriben
mensajes
´
´
-calculo
a lenguajes logico
concurrentes – p.7/18
)
&
%
)
&
%
+
*
%
+
'
%
*
Ejemplos de traducción a kl1 (1)
:
module main .
main :
k l i c i o : k l i c i o ( [ s t d o u t ( Res ) ] ) ,
check_stream ( Res ) .
´ de
Traduccion
check_stream ( normal (S ) ) :
p ( ( X1 , Y ) ) ,
q ( ( X2 , Z ) ) ,
r ( ( X3 , U1 ) , S1 ) ,
s ( ( X4 , V1 ) , S2 ) ,
g e n e r i c : new ( merge , { X1 , X2 , X3 , X4 } , X ) ,
u t i l s : manager (X ) ,
S= [ p u t t ( ” r r e c e i v e s ” ) , p u t t ( S1 ) ,
p u t t ( ” s r e c e i v e s ” ) , p u t t ( S2 ) ] .
´
´
-calculo
a lenguajes logico
concurrentes – p.8/18
Ejemplos de traducción a kl1 (1)
p ( ( X,Y) ) :
Y=3 ,
X= [ send ( Y , Ack ) | [ ] ] .
q ( ( X, Z ) ) :
Z=4 ,
X= [ send ( Z , Ack ) | [ ] ] ,
r ( ( X , U) , S ) :
X= [ r e c e i v e (U ) | [ ] ] ,
S=U .
s ( ( X,V) ,S) :
X= [ r e c e i v e (V ) | [ ] ] ,
S=V .
Una posible salida en la ejecución:
´ de
Traduccion
r receives 4 s receives 3
´
´
-calculo
a lenguajes logico
concurrentes – p.9/18
)
'
+
*
%
'
+
*
+
%
'
%
*
&
)
&
)
&
Ejemplos de traducción a kl1 (2)
:
module main .
main :
k l i c i o : k l i c i o ( [ s t d o u t ( Res ) ] ) ,
check_stream ( Res ) .
´ de
Traduccion
check_stream ( normal (S ) ) :
p ( ( X1 , A1 ) , ( Y1 , B1 ) , S1 ) ,
q ( ( X2 , C1 ) , ( Y2 , D1 ) , S2 ) ,
r ( ( X3 , E1 ) , ( Y3 , F1 ) , S3 ) ,
g e n e r i c : new ( merge , ( X1 , X2 , X3 ) , X ) ,
g e n e r i c : new ( merge , ( Y1 , Y2 , Y3 ) , Y ) ,
u t i l s : manager (X ) ,
u t i l s : manager (Y ) ,
S= [ p u t t ( S1 ) , p u t t ( S2 ) , p u t t ( S3 ) , n l ] .
´
´
-calculo
a lenguajes logico
concurrentes – p.10/18
Ejemplos de traducción a kl1 (2)
´ de
Traduccion
p ( ( X,A ) , ( Y,B) ,S) :
X= [ r e c e i v e (A ) | [ ] ] ,
Y=[] ,
S=A .
p ( ( X,A ) , ( Y,B) ,S) :
B=3 ,
Y= [ send ( B , Ack ) | [ ] ] ,
X=[] ,
S= ” ” .
q ( ( X , C ) , ( Y , D) , S ) :
C=4 ,
X= [ send (C, Ack ) | [ ] ] ,
Y=[] ,
S= ” ” .
...
´
´
-calculo
a lenguajes logico
concurrentes – p.11/18
)
&
+
'
'
*
)
&
%
+
*
%
Ejemplos de traducción a kl1 (3)
´ de
Traduccion
:
module main .
main :
k l i c i o : k l i c i o ( [ s t d o u t ( Res ) ] ) ,
check_stream ( Res ) .
check_stream ( normal (S ) ) :
p ( ( X1 , A1 ) ) ,
q ( ( X2 , B1 ) , D, S1 ) ,
r ( ( Y1 ,W1) , S2 ) ,
q1 ( ( Y2 , B1 ) ,D) ,
g e n e r i c : new ( merge , ( X1 , X2 ) , X ) ,
g e n e r i c : new ( merge , ( Y1 , Y2 ) , Y ) ,
u t i l s : manager (X ) ,
u t i l s : manager (Y ) ,
S= [ p u t t ( ” q r e c e i v e s ” ) , p u t t ( S1 ) ,
p u t t ( ” r r e c e i v e s ” ) , p u t t ( S2 ) , n l ] .
´
´
-calculo
a lenguajes logico
concurrentes – p.12/18
Ejemplos de traducción a kl1 (3)
´ de
Traduccion
p ( ( X,Y) ) :
Y=3 ,
X= [ send ( Y , Ack ) | [ ] ] .
q ( ( X , U) , D, S ) :
X= [ r e c e i v e (U ) | [ ] ] ,
S=U,
D= t r u e .
q1 ( ( Y , V ) , t r u e ) :
Y= [ send ( V , Ack ) | [ ] ] .
r ( ( Y ,W) , S ) :
Y= [ r e c e i v e (W) | [ ] ] ,
S=W.
´
´
-calculo
a lenguajes logico
concurrentes – p.13/18
Pi avanzado: Movilidad
La localización de un proceso viene determinada por sus
canales de comunicación (vecindad)
Esta vecindad puede cambiar dinámicamente
´ de
Traduccion
La movilidad consiste en que un nombre recibido por un
canal puede utilizarse constituir un nuevo canal de
comunicación
´
´
-calculo
a lenguajes logico
concurrentes – p.14/18
)
&
'
+
*
)
+
&
%
'
%
*
Ejemplos de traducción a kl1 (4)
´ de
Traduccion
check_stream ( normal (S ) ) :
p ( ( X1 , Y1 ) ) ,
q ( ( X2 , U1 ) ,D) ,
g e n e r i c : new ( merge , ( X1 , X2 ) , X ) ,
u t i l s : manager (X ) ,
q1 ( ( U1 , V1 ) ,D) ,
r ( ( Y2 ,W1) , S1 ) ,
g e n e r i c : new ( merge , ( Y1 , Y2 ) , Y ) ,
u t i l s : manager (Y ) ,
S= [ p u t t ( S1 ) , n l ] .
´
´
-calculo
a lenguajes logico
concurrentes – p.15/18
Ejemplos de traducción a kl1 (4)
´ de
Traduccion
p ( ( X,Y) ) :
X= [ send ( Y , Ack ) | [ ] ] .
q ( ( X , U) ,D) :
X= [ r e c e i v e (U ) | [ ] ] .
q1 ( ( U, V ) , t r u e ) :
V=5 ,
U= [ send ( V , Ack ) | [ ] ] .
r ( ( Y ,W) , S ) :
Y= [ r e c e i v e (W) | [ ] ] ,
S=W.
´
´
-calculo
a lenguajes logico
concurrentes – p.16/18
Conclusiones
El Pi-cálculo puede traducirse a lenguajes lógicos concurrentes,
con paralelismo conjuntivo y disyuntivo:
Un objetivo se interpreta como un sistema de procesos
(objetivos atómicos) que se comunican a través de pizarras
El paralelismo conjuntivo simula la composición paralela de
procesos
Con el paralelismo disjuntivo se simula la composición
alternativa o suma
La secuencialidad se consigue mediante variables de paso
de testigo
´ de
Traduccion
La réplica se consigue a través de la recursividad
´
´
-calculo
a lenguajes logico
concurrentes – p.17/18
Trabajo futuro
´ de
Traduccion
Incorporación de las características de concurrencia y
concepto de estado al formalismo SLAM-SL basándose en
Pi-cálculo
´
´
-calculo
a lenguajes logico
concurrentes – p.18/18
Descargar