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