Sie sind auf Seite 1von 242

Implementaci on eciente de construcciones de alto nivel para la programaci on concurrente

por Dami an Barsotti

Presentado ante la Facultad de Matem atica, Astronom a y F sica como parte de los requerimientos para la obtenci on del grado de Doctor en Ciencias de la Computaci on de la

rdoba Universidad Nacional de Co

Julio, 2011 @FaMAF UNC 2011

Director: Javier Oscar Blanco

Resumen
En el campo cient co y tecnol ogico actual es de amplia aceptaci on que el desarrollo de programas concurrentes es una tarea dif cil y adem as necesaria. Aunque el inter es en esta actividad no es nuevo, ha tomado particular relevancia en los u ltimos tiempos debido al desarrollo y popularidad de las arquitecturas paralelas. Con el n de aprovechar estas arquitecturas se han propuesto varias construcciones de alto nivel para los lenguajes de programaci on, que funcionan como abstracciones sobre el hardware o el sistema operativo subyacente. En este sentido, las construcciones cl asicas denominadas regiones cr ticas condicionales y su posterior evoluci on en monitores de se nalamiento autom atico, proveen abstracciones sobre el hardware o el sistema operativo subyacente que posibilitan el desarrollo de programas con variables compartidas y mecanismos de sincronizaci on entre distintos procesos. Las mismas son herramientas interesante para desarrollar programas concurrentes de manera simple y de forma correcta. Lamentablemente estas propuestas no han sido incluidas como parte del dise no de los lenguajes de programaci on debido principalmente a problemas de eciencia en sus implementaciones. A partir de las nuevas posibilidades abiertas por el desarrollo reciente de las herramientas denominadas en forma gen erica demostradores autom aticos de teoremas, aplicadas dentro de t ecnicas de interpretaci on abstracta, se presenta una nueva perspectiva en la implementaci on eciente de construcciones de alto nivel para la programaci on concurrente. El trabajo de tesis doctoral aqu presentado aborda esta problem atica mediante la adaptaci on de estas metodolog as, no ya para vericar programas, si no para modicarlos haci endolos m as ecientes. M as espec camente, desarrollaremos m etodos autom aticos para mejorar las implementaciones de regiones cr ticas condicionales y monitores con se nalamiento autom atico mediante el uso de aquellas t ecnicas y herramientas. De tal manera, intentaremos probar la factibilidad de estas construcciones cl asicas para la programaci on concurrente. Palabras claves: programaci on concurrente, probador de teoremas, SMT solver, optimizaci on, regi on cr tica condicional, monitor, se nal, sem aforo binario dividido. PACS: D.1.3,D.2.4,D.3.3,D.4.8,I.2.2,I.2.3

Abstract
In computer science and related technologies it is widely acknowledged that concurrent programming is a dicult but necessary task. Although the interest in this activity is not new, it has taken a particular relevance in recent times due to the development and popularity of parallel architectures. In order to take advantage of these architectures, several high-level programming languages constructions have been proposed, which serve as abstractions of the hardware or the underlying operating system. In this sense, the classical structures called Conditional Critical Regions and their subsequent evolution in Automatic-signal Monitors, provide abstractions which enable the development of programs with shared variables and synchronization mechanisms between processes. Furthermore, they are interesting tools to develop concurrent programs in a simple and correct way. Unfortunately, these proposals have not been included as part of the design of programming languages mostly due to eciency problems in their implementations. The new possibilities that emerge from recent developments of certain tools known as automatic theorem provers, mainly when applied together with abstract interpretation techniques, open new perspectives on the ecient implementation of high-level constructs for concurrent programming. This PhD thesis addresses this problem by adapting some methods usually used to verify programs in order to transform them into more ecient ones. In summary, we will develop automatic methods to mechanically improve implementations of Conditional Critical Regions and Automatic-signal monitors through a novel use of these techniques and tools. As a consequence, we will re-asses the feasibility of these classical constructions for concurrent programming. Keywords: concurrent programming, theorem prover, SMT solver, optimization, conditional critical region, monitor, signal, split binary semaphore, compiler.

A la Kuka y Lucio.

Agradecimientos
Quisiera agradecer principalmente a Javier Blanco, no solo por su labor como director de este trabajo, sino tambi en por la amistad que compartimos a lo largo de estos a nos. El camino que me condujo a nalizar esta tesis doctoral comenz o durante mi carrera de grado. Por la ayuda que me brindaron para poder nalizarla, quisiera agradecer a Rosita Wachenchauzer y a Sergio Cannas. Por el apoyo que me brind o durante el periodo de desarrollo de esta tesis, quisiera agradecer especialmente a Leonor Prensa Nieto. Ella me ofreci o la posibilidad de trabajar juntos brind andome su experiencia y conocimientos sobre probadores de teoremas lo cual abri o la puerta para el desarrollo de este trabajo. Mi m as grande agradecimiento es a la Kuka. Ella es mi compa nera elegida en este camino que hicimos juntos. Tambi en quisiera agradecer a mi hermano Mariano y a mis padres, Romano y Jovita.

VII

VIII

AGRADECIMIENTOS

Indice general
Agradecimientos Indice general 1 Sistemas de Transiciones 1.1 Formalizaci on . . . . . . . . . . . . . . . . . . . . . 1.1.1 Notaci on . . . . . . . . . . . . . . . . . . . 1.1.2 Expresiones cuanticadas . . . . . . . . . . 1.2 L ogica de predicados . . . . . . . . . . . . . . . . . 1.2.1 Sintaxis . . . . . . . . . . . . . . . . . . . . 1.3 Sentencias de programa . . . . . . . . . . . . . . . 1.3.1 Sintaxis . . . . . . . . . . . . . . . . . . . . 1.4 Transformadores de predicados . . . . . . . . . . . 1.4.1 Strongest postcondition . . . . . . . . . . . 1.4.2 Weakest liberal precondition . . . . . . . . 1.4.3 Propiedades de los transformadores . . . . . 1.5 Sistemas de transiciones . . . . . . . . . . . . . . . 1.5.1 Gr aco de transiciones . . . . . . . . . . . . 1.5.2 Sistemas de transiciones ejecutables . . . . 1.6 Transformadores de predicados en ST . . . . . . . 1.6.1 Strongest postcondition . . . . . . . . . . . 1.6.2 Weakest liberal precondition . . . . . . . . 1.6.3 Propiedades de los transformadores . . . . . 1.7 Sem antica operacional . . . . . . . . . . . . . . . . Ap endice 1.A Propiedades de expresiones cuanticadas 2 Invariantes 2.1 Puntos Fijos . . . . . . . . . . . . . . . . . . . . 2.1.1 Estructuras algebraicas y juntividad . . 2.1.2 Puntos jos . . . . . . . . . . . . . . . . 2.2 Invariantes . . . . . . . . . . . . . . . . . . . . 2.3 Invariantes y puntos jos . . . . . . . . . . . . 2.3.1 Propagaci on hacia adelante . . . . . . . 2.3.2 Propagaci on hacia atr as . . . . . . . . . 2.3.3 Propiedades . . . . . . . . . . . . . . . . 2.3.4 M etodo de demostraci on de invariancia IX VII IX 1 1 2 2 4 7 7 10 10 11 12 13 17 20 21 22 23 24 26 28 34 39 39 39 42 43 47 48 53 58 60

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

INDICE GENERAL 67 . 67 . 67 . 68 . 69 . 71 . 74 . 75 . 76 . 80 . 84 . 89 . 89 . 92 . 93 . 97 . 99 . 100 . 101 . 102 103 104 106 117 118 128 132 132 133 136 137 138 138 140 140 140 143 144 144 145 147 148 151 152 153 157 161 161

3 Generaci on de invariantes lineales 3.1 Interpretaci on Abstracta . . . . . . . . . . . . . . . . . 3.1.1 Dominio sem antico concreto . . . . . . . . . . . 3.1.2 Dominio sem antico abstracto y abstracci on . . 3.1.3 Funci on sem antica abstracta . . . . . . . . . . 3.1.4 Widening . . . . . . . . . . . . . . . . . . . . . 3.2 Poliedros convexos cerrados . . . . . . . . . . . . . . . 3.2.1 Representaci on algebraica . . . . . . . . . . . . 3.2.2 Representaci on geom etrica . . . . . . . . . . . . 3.2.3 Conversi on de marco a sistema de restricciones 3.2.4 Conversi on de sistema de restricciones a marco 3.3 Invariantes en el dominio de poliedros convexos . . . . 3.3.1 Abstracci on . . . . . . . . . . . . . . . . . . . . 3.3.2 Funci on sem antica abstracta . . . . . . . . . . 3.3.3 Sentencias abstractas . . . . . . . . . . . . . . . 3.3.4 Transformador de poliedros . . . . . . . . . . . 3.3.5 Sistemas de transiciones abstractos . . . . . . . 3.3.6 Widening . . . . . . . . . . . . . . . . . . . . . 3.3.7 Invariantes lineales . . . . . . . . . . . . . . . . 3.3.8 Implementaci on . . . . . . . . . . . . . . . . . . 4 Implementaci on de regiones cr ticas condicionales 4.1 Regiones cr ticas condicionales . . . . . . . . . . . . 4.2 T ecnica SBD . . . . . . . . . . . . . . . . . . . . . . 4.3 Antecedentes . . . . . . . . . . . . . . . . . . . . . . 4.4 SBD como sistema de transiciones . . . . . . . . . . 4.5 Eliminaci on de guardas . . . . . . . . . . . . . . . . 4.6 Mejoras del m etodo . . . . . . . . . . . . . . . . . . 4.6.1 Simplicaci on con invariante SBD . . . . . . 4.6.2 Simplicaci on del sistema de transiciones . . 4.6.3 Simplicaci on del invariante candidato . . . . 4.6.4 Simplicaci on de f ormulas . . . . . . . . . . . 4.7 Implementaci on . . . . . . . . . . . . . . . . . . . . . 4.7.1 Generador de Transiciones . . . . . . . . . . . 4.7.2 Vericador de Invariantes . . . . . . . . . . . 4.8 Resultados . . . . . . . . . . . . . . . . . . . . . . . . 4.8.1 Productor/Consumidor en buer acotado . . 4.8.2 Contraejemplo Schmid . . . . . . . . . . . . . 4.8.3 Sem aforos generales . . . . . . . . . . . . . . 4.8.4 Lectores y escritores . . . . . . . . . . . . . . 4.8.5 Productor/Consumidor goloso . . . . . . . . 4.8.6 Productor/Consumidor goloso M . . . . . . . 4.9 Conclusiones y trabajos futuros . . . . . . . . . . . . 5 Implementaci on de monitores con 5.1 Monitores . . . . . . . . . . . . . 5.1.1 Se nalamiento expl cito . . 5.1.2 Se nalamiento autom atico 5.2 Antecedentes . . . . . . . . . . . 5.3 Implementaci on de monitores con

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

se nalamiento autom atico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . se nalamiento autom atico . .

. . . . .

INDICE GENERAL Monitores como sistema de transiciones . . . . . Eliminaci on de se nalizaciones . . . . . . . . . . . 5.5.1 Invariante candidato . . . . . . . . . . . . 5.5.2 Invariante inicial . . . . . . . . . . . . . . 5.6 Mejoras del m etodo . . . . . . . . . . . . . . . . 5.7 Implementaci on . . . . . . . . . . . . . . . . . . . 5.7.1 Etapa de inicializaci on . . . . . . . . . . . 5.7.2 Etapa de eliminaci on de se nalizaciones . . 5.8 Resultados . . . . . . . . . . . . . . . . . . . . . . 5.8.1 Sem aforos generales . . . . . . . . . . . . 5.8.2 Productor/Consumidor en buer acotado 5.8.3 Sincronizaci on de Fase . . . . . . . . . . . 5.8.4 Lectores y escritores . . . . . . . . . . . . 5.8.5 Ba no unisex . . . . . . . . . . . . . . . . . 5.8.6 Barrera . . . . . . . . . . . . . . . . . . . 5.8.7 Productor/Consumidor goloso M . . . . . 5.8.8 Rendezvous . . . . . . . . . . . . . . . . . 5.8.9 Resumen . . . . . . . . . . . . . . . . . . 5.9 Conclusiones y trabajos futuros . . . . . . . . . . Ap endice 5.A Reglas de derivaci on de transiciones . . Ap endice 5.B Transiciones Productor/Consumidor . . Ap endice 5.C Demostraci on Teorema 5.4 . . . . . . . 6 Conclusiones y trabajos futuros Indice alfab etico Bibliograf a 5.4 5.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

XI 162 176 176 182 183 184 185 186 187 187 188 190 191 193 194 196 197 199 200 203 204 208 217 219 223

XII

INDICE GENERAL

Cap tulo 1

Sistemas de Transiciones
En este cap tulo formalizaremos el concepto de sistemas de transiciones y mostraremos c omo puede utilizarse para describir programas no estructurados. Antes de ello presentaremos la l ogica que nos permitir a esta formalizaci on. La misma estar a basada principalmente en [BAW98] y las demostraciones seguir an el estilo de [DS90, BSB08]. A continuaci on explicaremos la notaci on y el estilo de formalizaci on que utilizaremos.

1.1

Formalizaci on

Existen principalmente dos enfoques para formalizar la sem antica de programas. El enfoque denominado deep embedding consiste en representar la sintaxis abstracta de los programas, generalmente mediante gram aticas o tipos de datos inductivos, y a posteriori asignarle una sem antica. El mismo resulta u til cuando se quiera razonar sobre el lenguaje en si mismo a un nivel meta-te orico, generalmente haciendo inducci on sobre la sintaxis. Otro enfoque es el denominado shallow embedding en el cual los objetos sint acticos (programas y predicados sobre los mismos) son representados directamente de manera sem antica mediante l ogicas de alto orden, proporcionando adem as, mecanismos de traducci on entre ambos contextos. De esta forma, el razonamiento sobre programas no estructurados (programas concurrentes, con sentencias goto, etc.) se simplica ya que se trabaja directamente sobre la sem antica1 . En nuestro trabajo utilizaremos el segundo enfoque. Esta decisi on se debe a que la formalizaci on de sistemas de transiciones es dif cil de realizar con las estructuras sint acticas de car acter recursivo propias del primer enfoque. Adem as, como veremos en el pr oximo cap tulo, esta decisi on simplica la aplicaci on de la teor a de puntos jos (de car acter claramente sem antico) a los transformadores de predicados sobre sistemas de transiciones. En este contexto por ejemplo un predicado ser a directamente denotado por un conjunto de estados y una sentencia de un programa ser a una relaci on entre los mismos. De esta manera, todas las entidades (predicados, programas, etc.) ser an denotados a un nivel sem antico. Cuando necesitemos hacer menci on a la
1 Un

ejemplo de este tipo de formalizaci on puede encontrarse en [NPN99].

CAP ITULO 1. SISTEMAS DE TRANSICIONES

sintaxis de programas o predicados, esta funcionar a como una abreviaci on2 de su sem antica (m as adelante profundizaremos sobre estas nociones). En estos casos daremos la traducci on expl cita entre los dos contextos, como lo permite el enfoque utilizado.

1.1.1

Notaci on

En nuestro trabajo seguiremos principalmente la notaci on de la l ogica de alto orden HOL3 desarrollada en [BAW98]. De este marco conceptual utilizaremos la notaci on para t erminos booleanos, donde el tipo Bool denota el reticulado de valores de verdad tT, Fu, junto con sus operaciones usuales ^, _, , , . La aplicaci on de funci on ser a representada por un punto, por ejemplo f.x. El dominio de una funci on f ser a denotado por Dom.f . Los conjuntos ser an denotados por funciones caracter sticas como usualmente se expresan en la l ogica de alto orden: un conjunto con elementos en ser a una funci on de tipo Bool. Tambi en utilizaremos la notaci on usual de teor a de conjuntos t : | E u en vez de x : E y con E un t ermino booleano. La cardinalidad de un conjunto C ser a denotada por Card.C y el conjunto de sus partes como .C . El operador de elecci on ser a denotado por (especicado en [BAW98, p ag. 135]). Las relaciones n-arias ser an denotadas de la forma usual en HOL como funciones que toman n elementos y devuelven un elemento en Bool. Por ejemplo, si una relaci on r relaciona elementos de los dominios 1 , , n su tipo ser a r : 1 n Bool. Para una relaci on binaria su dominio ser a denotado Dom.r. . Cuando introduzcamos deniciones utilizaremos el s mbolo  , por ejemplo . 4 Bool  tT, Fu. Utilizaremos adem as deniciones locales encerradas entre los s mbolos |r s|. Las mismas servir an para denir objetos solo dentro del ambito de la expresi on que la precede. En el trabajo anteriormente referenciado se incluyen varias notaciones para diferentes tipos de cuanticaci on. En esta tesis unicaremos estas expresiones como se describe a continuaci on.

1.1.2

Expresiones cuanticadas

En diversos contextos (aritm etica, l ogica, teor a de conjuntos, lenguajes de programaci on, etc.) aparece cierta noci on de cuanticaci on, entendi endose por esto al uso de variables formales con un alcance delimitado expl citamente, las cuales pueden usarse para construir expresiones dependientes de ellas pero solo dentro de ese alcance. Por ejemplo, en el ambito de la aritm etica suele denotarse la suma de los primeros n numero impares como
n 1 i 0

2i1 .

En este trabajo se utilizar a una notaci on unicada para este tipo de expresiones. La notaci on debe tener en cuenta al operador con el cual se cuantica
2 Tambi en 3 Siglas

llamada syntactic sugar de la sem antica. de High Orden Logic. 4 Similar a las clausulas where del lenguaje Haskell.

1.1. FORMALIZACION

(en nuestro ejemplo la suma), las variables que van a usarse para crear las expresiones (i en el ejemplo), el rango de variaci on de estas variables (0 i n) y la expresi on dependiente de las variables que dene los t erminos de la cuanticaci on (en nuestro ejemplo 2 i 1). Una expresi on cuanticadas ser a entonces un t ermino de la siguiente forma:

x` i

:R: T

donde ` : designa un operador asociativo y conmutativo (por ejemplo, , _, ^, Max, Min, etc.) de tipo , i denota una secuencia de variables l ogicas, R : Bool es un t ermino booleano denominado rango de especicaci on y T : es un t ermino de tipo acorde al operador ` llamado t ermino de cuanticaci on. La ocurrencia de i junto al operador suele llamarse variable de cuanticaci on o dummy. Cuando necesitemos hacer referencia expl cita a la variable cuanticada en el rango o en el t ermino escribiremos R.i y T.i respectivamente. El tipo de la variable puede en general inferirse del contexto, en caso contrario se lo denir a expl citamente. De esta forma, la sumatoria en el ejemplo anterior puede escribirse como:

x i x

:0in: 2i1y

ya que el operador asociativo y conmutativo es la suma aritm etica, o tambi en utilizando el s mbolo de sumatoria usual:

i : 0 i n : 2 i 1 y
:R: T

Para el caso de la conjunci on habituales @ y D, esto es:

^ y la disyunci on _ utilizaremos los s mbolos y y xDi


:R: T

x@i

respectivamente5 . Esta notaci on tiene varias ventajas sobre la utilizada usualmente en matem atica. Por un lado los s mbolos x y determinan exactamente el alcance de la variable. Por otro lado, en matem atica es bastante engorroso escribir rangos que no sean intervalos de n umero naturales. Las expresiones cuanticadas presentadas aqu admiten cualquier expresi on booleana como rango, permitiendo adem as usar m as de una variable cuanticada de manera natural, lo cual es casi imposible de escribir con la notaci on tradicional. A un para sumatorias con una sola variable surgen algunos problemas. Tomemos por ejemplo la suma de los primeros n cuadrados de n umeros distintos de m. Con la notaci on usual el rango de la cuanticaci on suele escribirse apilando las condiciones debajo del s mbolo de sumatoria:
n 1

i m

0 

i2

lo cual resulta engorroso. Adem as puede llegar a ser ambiguo si se desea utilizar otros operadores l ogicos o t erminos booleanos m as complejos en el rango de
5 La notaci on para la cuanticaci on universal y existencial es equivalente a la utilizada en [BAW98, p ag. 131] denominada bounded quantication. Las mismas tienen la forma p@i | R T q y pDi | R T q respectivamente.

CAP ITULO 1. SISTEMAS DE TRANSICIONES

la sumatoria. En nuestra notaci on la sumatoria puede escribirse en forma m as clara como: i : 0 i n ^ i  m : i2

permitiendo adem as rangos complejos en la cuanticaci on como por ejemplo

@ i : 0 i n ^pi  m _ m  0q : i2 D

En [Dij00, Dij80a] se analizan las ventajas de esta notaci on y otras seguidas en esta tesis. En algunas ocasiones no se desea restringir el rango de especicaci on al conjunto de variables en un t ermino booleano R, como hemos escrito m as arriba. En estos casos escribiremos x` i : : T y, entendi endose que el rango abarca a todos los elementos del tipo de i. Existe una serie de propiedades que sirven para manipular expresiones cuanticadas, las mismas pueden encontrarse en el ap endice 1.A (p ag. 34) y en [BSB08, cap tulos 5 y 6], las cuales ser an utilizadas en las demostraciones. En nuestro trabajo utilizaremos frecuentemente esta notaci on para denotar nmos y supremos sobre reticulados completos. Sea el reticulado p, \, [q entonces denotaremos

xi

:R: T

y y xi

:R: T

con R : Bool y T : , al supremo y al nmo respectivamente de los elementos denotados por T restringidos al rango R. Tambi en utilizaremos esta notaci on para posets en general siempre que los nmos y supremos est en bien denidos por el rango.

1.2

L ogica de predicados

Los programas imperativos trabajan realizando cambios sucesivos en la memoria. Estas diferentes conguraciones de memoria pueden ser representadas de forma abstracta como un conjunto al cual denominaremos espacio de estados y a cada elemento del mismo como estado. Nota: Como vemos, los estados son denotados de forma abstracta como un conjunto, sin hacer hincapi e en las particularidades de sus elementos. Esto nos permitir a m as adelante utilizar los resultados expuestos sobre distintos modelos. Un modelo cl asico de estados son las funciones de un conjunto de variables a un conjunto de valores, por ejemplo: .  Var

Z. N Z Q

En este modelo las zonas de memoria son s mbolos de variables y los valores ser an elementos de . Otro modelo de estados son las n-uplas pertenecientes a n , n o n , por ejemplo: .  n .

En este modelo se presupone que cada coordenada de una n-upla representa el valor de una variable determinada. Esta representaci on de la memoria ser au til

1.2. LOGICA DE PREDICADOS

cuando la cantidad de variables est e acotada por n. Cuando las variables del programa tengan distintos tipos esta representaci on del espacio de estados puede ser extendida f acilmente utilizando productos de distintos conjuntos (por ej. ). En este cap tulo, cuando necesitemos hacer menci on a la sintaxis de predicados y programas (ver shallow embedding en la secci on anterior) utilizaremos el primer modelo. Esto nos permitir a, adem as de simplicar la exposici on, expresar los nombres de variables de programas de forma expl cita. l

N Q Q

. Sea Bool el reticulado de valores de verdad (Bool  tT, Fu) junto con sus operaciones usuales (^, _, , , ). Deniremos como predicado a una funci on con tipo Bool. El conjunto de todas estas funciones lo denominaremos Pred .  Bool .

De esta forma los predicados son la extensi on puntual del reticulado Bool. A partir de esta caracterizaci on se puede deducir que es un reticulado booleano completo ya que hereda las propiedades de Bool [BAW98, lema 2.5] y adem as es at omico6 [BAW98, corolario 7.1]. Dados p, q, r P Pred y P denimos las siguientes constantes y operaciones en Pred como extensiones puntuales de las operaciones en Bool: true. false. pp X qq. pp Y qq. p pq. pp  qq. pp qq. . q  x@ .  q  x@ .  .  .  .  .  .  .  T F p. ^ q. p. _ q. p. p.  q. p. q. (J (K ([ (\ ( ( ( en en en en en en en Pred) Pred) Pred) Pred) Pred) Pred) Pred)

Las siguientes operaciones de Pred devuelven elementos en Bool: p p : p. : q. y : : pp  q q. y (orden en Pred) (igualdad en Pred)

Cabe remarcar que la igualdad entre predicados  : Pred Pred Bool es un operador binario distinto que la equivalencia  : Pred Pred Pred. El primero indica la igualdad entre elementos de Pred, formulada en base a la antisimetr a del orden en este reticulado. El segundo denota una operaci on que devuelve como resultado elementos del mismo reticulado. Este u ltimo suele identicarse con la doble implicaci on (si y solo si) entre predicados (devuelve un predicado) aunque no debe confundirse con la doble implicaci on en Bool (devuelve un elemento en Bool). Como el reticulado Pred es completo, podemos denir las operaciones de nmo y supremo de conjuntos. Estas ser an denotadas como expresiones cuanticadas sobre conjuntos indexados. Sean I conjuntos cualesquiera (I ser a denominado conjunto de ndices ) y P : Pred, deniremos el nmo y supremo
6 La propiedad de atomicidad no se hereda necesariamente por extensi on puntual. Un ejemplo de este hecho puede encontrarse en [BAW98, ejercicio 2.6].

CAP ITULO 1. SISTEMAS DE TRANSICIONES

de los conjuntos en tP.i | i P I u como:

i x x i

: I.i : P.i y . : I.i : P.i y .

.  x @ i : I.i : .  x D i : I.i :

P.i. y P.i. y

( nmo en Pred) (supremo en Pred)

Claramente, el reticulado Pred es isomorfo al de conjuntos de estados: el orden se identica a la inclusi on de conjuntos, el predicado false al conjunto vac o, true al conjunto universal, el nmo binario X a la intersecci on y el supremo binario Y a la uni on entre conjuntos. Por este motivo, en este trabajo hablaremos indistintamente sobre predicados o conjuntos de estados, deniendo tambi en a Pred como las partes de : Pred .  . .

En este mismo sentido, denotaremos predicados como funciones x : E y o como conjuntos t : | E u con E una t ermino booleano sobre . A continuaci on introduciremos la terminolog a que utilizaremos de aqu en adelante. Terminolog a Dados p, q : Pred. Cuando p.

 T diremos que

cumple p. p es verdadero en , p describe a , satisface a p. Cuando p.

 F diremos que P , diremos que P , diremos que

p es falso en , no satisface a p. Cuando p es verdadero para todo estado p es v alida. Formalmente

x@ xD x@

P: P: P:

p. y.

Cuando p es verdadero para alg un estado p es satisfactible. Formalmente : p. y .

Cuando p es falso para todo estado p es no satisfactible. Formalmente Cuando p :

P , diremos que

q, diremos que

p. y .

p es m as fuerte que q , q es m as d ebil que p.

1.3. SENTENCIAS DE PROGRAMA Cuando p

 q, diremos que
l

p es equivalente a q .

1.2.1

Sintaxis

Como mencionamos en la secci on 1.1 en nuestro trabajo expresaremos la formalizaci on a un nivel sem antico utilizando el enfoque denominado shallow embedding. Este nivel de desarrollo sem antico pudo verse claramente al denir predicados como funciones de los estados abstractos al reticulado de valores de verdad. De todas maneras, resulta engorroso y poco intuitivo escribir un predicado como una funci on, por lo cual este enfoque permite el uso de las expresiones usuales que denotan esta sem antica a la manera de abreviaciones, esto es, como objetos de car acter sint actico fuera de la l ogica. De esta forma las expresiones booleanas usuales abreviar an directamente los predicados vistos anteriormente. Por ejemplo, si el espacio de estados son las funciones entre variables y valores en (dotados de la aritm etica usual), la expresi on booleana n 0 ^ a n abreviar a el predicado x .n 0 ^ .a .ny (o lo que es lo mismo x .n 0y X x .a .ny). De aqu en adelante estas abreviaturas las se nalaremos con el s mbolo :

n0^an

 x

.n 0 ^ .a .ny .

Con las expresiones universales y existenciales procederemos de forma si. milar. Por ejemplo, dado el espacio de estados  Var , la expresi on x@x : x y 0 : x y 1 y representar a el nmo x i : I.i : R.i P.i y, . . . con I  , R.i  x i .y 0y y P.i  x i .y 1y. De forma general, si las expresiones r y p abrevian los predicados r y p respectivamente, entonces

x @ v1 , , vk

:r : py

 x i1 , , ik

: I.i1 . .ik : R.i1 . .ik

P.i1 . .ik y

i1 , , vk ik sq y i1 , , vk ik sq , donde rv1 i1 , , vk ik s es la actualizaci on usual de la funci on .


De manera an aloga se representar an las expresiones cuanticadas existenciales:

con I  k , . R.i1 . .ik .  r.p rv1 . P.i1 . .ik .  p.p rv1

x D v1 , , vk
1.3

:r : py

 x i1 , , ik

: I.i1 . .ik : R.i1 . .ik

X P.i1 . .ik y

Sentencias de programa

Como ya mencionamos, los programas imperativos trabajan alterando sucesivamente la memoria. Esto es, en cada paso de ejecuci on de una sentencia de programa, la memoria (representada por un estado en particular), es modicada produciendo un estado nuevo. En esta secci on nos concentraremos en el modelado de las ejecuciones individuales de estas sentencias. En la secci on siguiente veremos c omo modelar programas en general.

CAP ITULO 1. SISTEMAS DE TRANSICIONES

Existen varias formas de denotar sentencias en un nivel sem antico. Si las sentencias son deterministas una forma usual es denotarlas como funciones desde un estado inicial a otro nal. Un problema que surge es el de signicar la no terminaci on: pueden existir estados iniciales desde los cuales una sentencia no termina, por lo cual la funci on que la denota no est a denida para todos los puntos del espacio de estados. Ante este problema existen dos opciones: utilizar funciones parciales (funciones sobre un dominio m as peque no que el considerado) o hacerlas totales con tipo Y tKu donde la no terminaci on es indicada expl citamente con el estado nal especial denominado bottom (K) [MM04, secci on 5.1]. Ambos enfoques poseen sus desventajas. La primera opci on introduce funciones que no pueden ser aplicadas libremente a un argumento por m as que posea el tipo correcto. El segundo m etodo tiene la ventaja de utilizar funciones totales, pero a costa de destruir la homogeneidad del espacio de estados. Otra forma de denotar sentencias es utilizando relaciones. De esta manera, el conjunto sentencias ser an las relaciones entre estados: Sent .  Bool

lo cual permitir a homogeneizar el espacio de estados. Adem as podremos denotar sentencias no deterministas: una sentencia de programa podr a ser especicada de forma tal que desde un estado inicial haya un conjunto de estados nales alcanzables. El incluir esta posibilidad permite modelar programas con elecciones de cambio de estado externas al mismo (por ejemplo por intervenci on del usuario, por decisi on de un scheduler, etc.). En este contexto, una sentencia s ser a determinista cuando la cardinalidad del conjunto s. es menor o igual a uno (Card.ps. q 1) para todo . Cuando esta cardinalidad es igual a cero para todo la sentencia no termina. Notar adem as que Sent puede ser visto como la extensi on puntual de los predicados a los estados, esto es Sent  Pred. Por lo tanto Sent es un reticulado booleano y completo at omico ya que hereda estas propiedades de Pred y adem as puede demostrarse que es at omico [BAW98, teorema 9.1]. Nuestra decisi on de utilizar relaciones para formalizar la sem antica de las sentencias no est a libre de problemas; si estas son no deterministas es imposible signicar las computaciones individuales que no terminan (para el caso determinista la u nica computaci on se representa simplemente con la relaci on vac a). De todas maneras en esta exposici on nos va a interesar signicar solo los estados alcanzables desde un estado inicial independientemente de cualquier elecci on no determinista que pueda hacer abortar el programa. Como vimos, una sentencia toma un estado inicial y devuelve un conjunto de estados que representan las posibles elecciones no deterministas de la sentencia. Adem as, si este conjunto es vac o querr a signicar que la sentencia no termina para ese estado en particular. En este sentido deniremos la siguiente terminolog a. Terminolog a Dados s : Sent y : s. ser a denominado conjunto de estados alcanzables por s a partir de . Cuando s. Cuando

 false diremos que la sentencia s no termina desde . x @ : : s.  false y diremos que la sentencia s no termina .

1.3. SENTENCIAS DE PROGRAMA Cuando Cuando

x @ : : ps.  falseq y diremos que la sentencia s es total . x @ : : Card.ps.q 1 y diremos que la sentencia es determinista .
l

Ejemplo 1.1 A continuaci on presentaremos dos constructores de sentencias que utilizaremos m as adelante. Dado el espacio de funciones entre estados denido como . Fun  , deniremos las siguientes funciones:

x y : Fun Sent r s : Pred Sent . xf y..1  f.  1 . 1 rbs..  b. ^  1 . A la primera (x y) la denominaremos actualizaci on funcional y suele utilizarse para modelar asignaciones. A la segunda (r s) la denominaremos suposici on, la
cual relaciona un estado nal id entico al inicial siempre y cuando el predicado sea verdadero en el mismo. Si el predicado es falso en un estado la sentencia no termina desde . Ambas sentencias son deterministas. Vamos a denir tambi en el operador sobre sentencias denominado composici on secuencial como composici on de relaciones: ; : Sent Sent Sent . ps1 ; s2 q..1  x D 2 : : s1 ..2 ^ s2 .2 .1 y . Notar que si ambos par ametros del operador son deterministas el resultado tambi en lo es. Utilizando estos constructores b asicos podemos desarrollar sentencias m as complejas. Un programa que utilizaremos m as adelante es la composici on secuencial de una suposici on con una actualizaci on funcional rbs; xf y. Su denici on puede derivarse a partir de las de los constructores b asicos:

  

prbs; xf yq..1
{ Denici on de composici on secuencial }

x D 2 x D 2

: : rbs.. 2 ^xf y. 2 . 1 y : : b. ^

{ Denici on de suposici on y actualizaci on funcional }

 2 ^ f.2  1 y

{ Rango unitario } b. ^ f.

 1

. . prbs; xf yq..1  b. ^ f.

Por lo tanto

 1

Esta construcci on opera sobre un estado inicial aplicando la actualizaci on funcional, siempre y cuando el estado inicial satisfaga el predicado de la suposici on. Si un estado no la satisface la sentencia no termina desde ese estado. Puede demostrarse que cualquier sentencia s determinista puede escribirse de la forma rbs; xf y, tomando a b el dominio de la relaci on y a f la funci on que asigna a cada estado su relacionado. Utilizando el operador de elecci on esto . u ltimo puede escribirse como f.  .ps. q . l

10

CAP ITULO 1. SISTEMAS DE TRANSICIONES

1.3.1

Sintaxis

Siguiendo el estilo de formalizaci on shallow embedding (secci on 1.1, p ag. 1) introduciremos algunas construcciones del lenguaje. La suposici on a nivel sint actico ser a denida como sigue. Si b es un predicado y B una expresi on booleana, tal que B  b entonces la sentencia de suposici on rBs ser a denida como: rBs  rbs . La sentencia denominada usualmente como asignaci on m ultiple ser a una . abreviaci on de la actualizaci on funcional. Por ejemplo, si  Var , entonces x, y : y 1, n  xf y

con f.

 rx .y 1, y .ns

Notar que si el conjunto de variables Var es nito resulta totalmente v alido expresar las actualizaciones funcionales de esta manera siempre que el poder expresivo de las expresiones lo permitan. Esto es, si el conjunto de variables es . Var  tv1 , , vn u y existen expresiones e1 , , en tal que ei abrevia la funci on x pf.q.vi y entonces v1 , , vn : e1 , , en

 xf y

Tambi en utilizaremos como expresiones de sentencias la siguiente construcci on que denominaremos asignaci on guardada : B v1 , , vk : e1 , , ek con B

 rbs; xf y  xf y
.

b
skip abort

v1 , , vk : e1 , , ek

Otras abreviaciones que utilizaremos ser an

B skip

 xIdy  rfalses  r bs

con Id la funci on identidad

con B

b

Las dos primeras denotan las sentencias skip y abort usuales. La u ltima se utiliza para escribir una suposici on en la forma de sentencia guardada.

1.4

Transformadores de predicados

Un transformador de predicados [DS90, BAW98] ser a una funci on de Pred en si mismo. La noci on de transformador de predicados nos permitir a, a partir de una programa en Sent, denir distintas sem anticas. A continuaci on las desarrollaremos.

1.4. TRANSFORMADORES DE PREDICADOS

11

1.4.1

Strongest postcondition

La sem antica de strongest postcondition ser a denida a partir del transformador de predicados sp. El mismo toma una sentencia y un predicado y devuelve el conjunto de estados que est an relacionados, por medio de la sentencia, con alguno contenido en el predicado par ametro: sp : Sent Pred Pred . sp.s.p. 1  x D : p. : s.. 1 y Otra forma de ver este transformador es pensar el predicado sp.s.p como el conjunto de estados alcanzables desde los estados en p por la sentencia s: . sp.s.p  x : p. : s. y .

Ambas deniciones son equivalentes ya que

: p. : s. y . 1

 xD

: p. : s.. 1 y

por la denici on de supremo en la secci on 1.2. Ejemplo 1.2 Veamos el resultado de aplicar este transformador de predicados a la sentencia rbs:

  

sp.rbs.p. 1

{ Denici on de sp }

xD xD

: p. : rbs.. 1 y : p. : b. ^

{ Denici on de suposici on }

 1 y

{ Rango unitario } p. 1 ^ b. 1 .

. Por lo tanto sp.rbs.p. 1  p. 1 ^ b. 1 . Utilizando la denici on de conjunci on de predicados (secci on 1.2), esta equivalencia puede expresarse de forma simple como sp.rbs.p

pXb

la cual expresa que los estados alcanzables desde el predicado p por la ejecuci on de la sentencia rbs deben cumplir el predicado b. Si esto no sucede la sentencia no termina. l Ejemplo 1.3 Veamos el resultado de aplicar este transformador de predicados a la sentencia rbs; xf y:

sp.prbs; xf yq.p. 1

{ Denici on de sp }

xD

: p. :

prbs; xf yq..1 y

12

CAP ITULO 1. SISTEMAS DE TRANSICIONES

  

{ Denici on de rbs; xf y en ejemplo 1.1 }

xD

: p. : b. ^ f.

 1 y

xD

{ Intercambio }

: p. ^ b. : f. f.

 1 y  1 y
.

{ Conjunci on de predicados }

x D : pp X bq. :

Este u ltimo resultado expresa que los estados alcanzables desde el predicado p por la ejecuci on de rbs; xf y son la imagen de la funci on f sobre el conjunto de estados p X b. l El trasformador sp posee las siguientes propiedades sobre las sentencias: Propiedades 1.4 (sp en sentencias) sp.rbs.p  b X p sp.xf y.p  p f 1 siempre que f tenga inversa sp.ps1 ; s2 q.p  sp.s2 .psp.s1 .pq La demostraci on es directa a partir de la denici on de sp.

1.4.2

Weakest liberal precondition

Otra sem antica usual es la denida a partir del transformador weakest liberal precondition. El transformador toma una sentencia y un predicado, devolviendo el conjunto de estados tales que, si la sentencia termina, lo hace a un estado perteneciente al predicado par ametro: wlp : Sent Pred Pred . wlp.s.q.  x @ 1 : s.. 1 : q. 1 y Una formulaci on equivalente, aplicando la denici on de . wlp.s.q.  s. q

(secci on 1.2), es:

Notar, a partir de esta u ltima denici on, que si para un estado particular la sentencia s no termina (s. es el conjunto vac o), este pertenece al resultado del transformador (o sea a wlp.s.q ). Con ello se observa claramente que el transformador wlp no signica la terminaci on de la sentencia7 . Ejemplo 1.5 Veamos el resultado de aplicar el transformador wlp al programa rbs; xf y:

wlp.prbs; xf yq.q. { Denici on de wlp }

x @ 1 : prbs; xf yq..1 :

q. 1 y

7 Con el n de capturar la no terminaci on de los programas, en la literatura [DS90] se dene adem as el transformador weakest precondition. En este trabajo no lo utilizaremos ya que la terminaci on no ser a una propiedad que nos interese al momento de renar programas concurrentes, como veremos m as adelante.

1.4. TRANSFORMADORES DE PREDICADOS

13

    

{ Denici on de rbs; xf y en ejemplo 1.1 }

x @ 1

: b. ^ f. : f.

 1 :
b.

q. 1 y

x @ 1
b. b.

{ Intercambio }

 1 :

q.1 y

{ Rango unitario }

q.pf.q

{ Composici on de funciones }

pq f q.
.

{ Denici on de

pb q f q.

}
wlp.prbs; xf yq.q .  bqf .

Por lo tanto:

Este u ltimo resultado expresa que los estados en que la sentencia rbs; xf y si termina lo hace en q , son aquellos que no pertenecen a b o que aplicados a f pertenecen a q . l El resultado puede tambi en deducirse de las siguientes propiedades particulares del transformador sobre las sentencias: Propiedades 1.6 (wlp en sentencias) wlp.rbs.q wlp.xf y.q wlp.ps1 ; s2 q.q

  

bq qf wlp.s1 .pwlp.s2 .q q

La demostraci on es directa a partir de la denici on de wlp.

1.4.3

Propiedades de los transformadores

Los transformadores de predicados en general, como funciones de predicados en predicados, pueden ser organizados seg un cierta jerarqu a de propiedades [DS90, cap tulo 6] que se preservan como homomorsmos entre reticulados [BAW98, cap tulo 16]. Presentaremos las mismas teniendo en mente el reticulado Pred aunque tambi en pueden ser generalizadas a cualquier reticulado completo e incluso a otros tipos de conjuntos parcialmente ordenados (veremos esto m as detalladamente en el cap tulo 2). Denici on 1.7 (Monoton a) Un transformador de predicados F : Pred Pred es mon otono si preserva la relaci on . Esto es, para todo par de predicados X, Y : Pred se cumple: X

Y F.X F.Y

Denici on 1.8 (Juntividad) Un transformador de predicados es estricto si preserva false y es no interrumpible 8 si preserva true. Adem as es positivamente conjuntivo si preserva nmos no vac os de predicados y es positivamente disyuntivo si preserva supremos no vac os de predicados.
8 En

ingl es terminating o nonaborting.

14

CAP ITULO 1. SISTEMAS DE TRANSICIONES Formalmente, dado F : Pred Pred, F es estricto si F.false

 false.

F es no interrumpible si F.true

 true.  x i
: I.i : F.pP.iq y .

F es positivamente conjuntivo si, para todo conjunto de ndices I con I  H y para todo P : Pred, se cumple: F. x

i : I.i :

P.i y

Esta propiedad indica que un transformador distribuye con respecto a conjunciones no vac as de predicados. F es positivamente disyuntivo si, para todo conjunto de ndices I I  H y para todo P : Pred, se cumple: F. x

con

i : I.i :

P.i y

 x i

: I.i : F.pP.iq y .

Esta propiedad indica que un transformador distribuye con respecto a disyunciones no vac as de predicados. Un transformador es universalmente conjuntivo si preserva nmos arbitrarios de predicados (es no interrumpible y positivamente conjuntivo). Un transformador es universalmente disyuntivo si preserva supremos arbitrarios de predicados (es estricto y positivamente disyuntivo). l Otra propiedad interesante es la que permite la noci on de continuidad de transformadores. Para presentarla deniremos antes el concepto de conjunto dirigido y conjunto codirigido. Denici on 1.9 (Conjunto dirigido) Un subconjunto C de un poset pP, q es dirigido si todo par de elementos en C tienen cota superior en el mismo:

x @ a, b x @ a, b

: a, b P C :

xDc xDc

:cPC : ac^bcyy .

De forma dual, un subconjunto C de un poset pP, q es codirigido si todo par de elementos en C tienen cota inferior en el mismo: : a, b P C : :cPC : ca^cbyy .

Ejemplos de conjuntos dirigidos son las cadenas, las partes de un conjunto .X y el conjunto vac o. A partir de esta denici on introduciremos el concepto de continuidad de un transformador: Denici on 1.10 (Continuidad) Un transformador de predicados es or-continuo (and-continuo ) si es disyuntivo (conjuntivo) sobre conjuntos dirigidos (codirigidos) no vac os. Formalmente, dado F : Pred Pred, F es or-continuo si, para todo conjunto de ndices I con I  para todo P : Pred tal que tP.i | i P I u es dirigido, se cumple: F. x

Hy

i : I.i :

P.i y

 x i

: I.i : F.pP.iq y .

1.4. TRANSFORMADORES DE PREDICADOS

15

F es and-continuo si, para todo conjunto de ndices I con I  H y para todo P : Pred tal que tP.i | i P I u es codirigido, se cumple: F. x

i : I.i :

P.i y

 x i

: I.i : F.pP.iq y .

Como mencionamos, estas propiedades pueden ser ordenadas seg un cierta jerarqu a: Teorema 1.11 (Jerarqu a de propiedades) Dado un transformador de predicados F : Pred Pred se cumplen las siguientes implicaciones: F es universalmente conjuntivo F es positivamente conjuntivo F es and-continuo F es mon otono y de forma dual F es F F F universalmente disyuntivo es positivamente disyuntivo es or-continuo es mon otono

Veamos ahora, cuales de estas propiedades son satisfechas por los transformadores sp y wlp: Propiedades 1.12 (Transformadores sp y wlp) Dado s : Sent 1. sp.s es universalmente disyuntivo. A partir de esta propiedad se puede deducir que es estricto (sp.s.false  false), mon otono y or-continuo. 2. wlp.s es universalmente conjuntivo. A partir de esta propiedad se puede deducir que es es no interrumpible (wlp.s.true  true), mon otono y and-continuo9 . 3. Si s es determinista, sp.s es positivamente conjuntivo. 4. Si s es determinista, wlp.s es positivamente disyuntivo. 5. Si s es total entonces wlp.s es estricto (wlp.s.false 6. Si s es determinista entonces wlp.s.pP

 false).

Qq  wlp.s.P wlp.s.Q

(wlp distribuye con la implicaci on). 7. Si s es determinista y total entonces para todo predicado P se cumple wlp.s. P

wlp.s.P .

9 Esto conrma lo mencionado al comienzo de esta secci on: esta sem antica no discrimina la no terminaci on ya que abort cumple esta propiedad igual que cualquier otra sentencia.

16

CAP ITULO 1. SISTEMAS DE TRANSICIONES

n Demostracio La demostraci on de las propiedades 1 a 4 pueden encontrarse en [DS90, BAW98]. A continuaci on demostraremos las siguientes. 5. Utilizando que s. es no vac o para cualquier (s. termina) tenemos:

  

wlp.s.false. { Denici on de wlp } 1 x @ : s..1 : false.1 y { Denici on de false } 1 x @ : s..1 : F y { s. es no vac o y t ermino constante } F

6. Consideremos los casos s. de forma determinista).

 false y s.  t u (s. no termina o termina

Caso (s.

    

 false) pwlp.s.P wlp.s.Qq.

{ L ogica de predicados, denici on de wlp } 1 1 1 1 x @ : s.. : P. y x @ : s..1 : Q.1 y { Rango vac o por caso } TT { L ogica } T { Rango vac o por caso } 1 x @ : s..1 : pP Qq.1 y { Denici on de wlp } wlp.s.pP Qq.

Caso (s.

    

 t u) pwlp.s.P wlp.s.Qq.

{ L ogica de predicados, denici on de wlp } 1 1 1 1 x @ : s.. : P. y x @ : s..1 : Q.1 y { Rango unitario por caso } P. Q. { L ogica de predicados } pP Qq. { Rango unitario por caso } x @ 1 : s..1 : pP Qq.1 y { Denici on de wlp } wlp.s.pP Qq.

1.5. SISTEMAS DE TRANSICIONES 7. Demostraremos esta propiedad utilizando las anteriores:

17

   

wlp.s. P { L ogica de predicados } wlp.s.pP falseq { s es determinista y propiedad 6 } wlp.s.P wlp.s.false { s termina para cualquier estado y propiedad 5 } wlp.s.P false { L ogica de predicados } wlp.s.P

A continuaci on presentaremos algunas propiedades que relacionan los transformadores sp y wlp. La siguiente muestra que la 3-upla de Hoare tpu s tq u puede ser interpretada con la f ormula cl asica p wlp.s.q o utilizando el transformador sp: Propiedad 1.13 (Equivalencia sp wlp) Para toda sentencia s y predicados p q se cumple: p

wlp.s.q 

sp.s.p

Otra propiedad interesante es la que sugiere cierta noci on de dualidad entre los transformadores. Propiedad 1.14 (Dualidad entre sp y wlp) Dada la sentencia s, denimos como s1 a su relaci on inversa10 . Entonces se cumple: sp.s.p  pwlp.s1 . pq . l La demostraci on es directa de la denici on de los transformadores.

1.5

Sistemas de transiciones

En la secci on anterior vimos como utilizando un modelo relacional es posible representar las sentencias individuales de un programa. Esto nos permiti o denotar sentencias simples como asignaciones guardadas. En esta secci on extenderemos el formalismo para poder representar programas m as complejos que contengan bucles y saltos no estructurados11 . Sea S un conjunto nito de sentencias (S Sent). Sea L un conjunto nito que representa los posibles valores del contador de programa al cual denominaremos conjunto de locaciones. Sea TranL,S las relaciones entre dos locaciones y sentencias en S : . TranL,S  L S L Bool Una relaci on : TranL,S puede ser vista como un conjunto de 3-uplas en L S L a las que llamaremos transiciones. La primera y tercera coordenadas de una transici on ser an denominadas locaci on de salida y locaci on de llegada
10 La 11 Tambi en

inversa de una relaci on r se dene de forma usual como r1 .a.b denominados sentencias goto.

r.b.a.

18

CAP ITULO 1. SISTEMAS DE TRANSICIONES

respectivamente. Dada una transici on con locaci on de salida l y locaci on de llegada l1 diremos que es una transici on saliente desde l y que es una transici on entrante hacia l1 . Sea PredL la extensi on puntual de los predicados a las locaciones: PredL .  L Pred .

Un elemento de tipo PredL representa un predicado para cada locaci on o m as concretamente, dene un conjunto de estados para cada locaci on. Llamaremos predicado de un sistema de transiciones a un elemento de PredL , aunque tambi en los nombraremos predicados cuando la distinci on con los elementos de Pred se sobreentienda a partir del contexto. Diremos adem as que un par estado/locaci on pertenece a un predicado de un sistemas de transiciones cuando el estado pertenezca a la valuaci on del predicado en la locaci on. A los pares estado/locaci on lo denominaremos conguraciones . Por u ltimo deniremos el conjunto de conguraciones iniciales : PredL . Generalmente, para programas simples, evaluado en las locaciones (.l) es satisfactible solo en una de ellas, la cual representa el punto de ejecuci on inicial del programa. Llamaremos locaciones iniciales a las locaciones l P L tales que .l es satisfactible. Como veremos luego, la caracterizaci on de conguraciones iniciales omitiendo se nalar expl citamente las locaciones iniciales nos permitir a homogeneizar la noci on de predicado sobre un sistema de transiciones. Un sistema de transiciones TS, ser a una 4-upla que contiene un conjunto de locaciones, un conjunto nito de sentencias S , una relaci on en TranL,S y un conjunto de estados iniciales, esto es: TS .  pL, S , , q ,

con S Sent, : TranL,S y : PredL . A continuaci on veremos de que forma se pueden modelar programas con sistemas de transiciones. Ejemplo 1.15 Comenzaremos mostrando c omo modelar un programa simple. El siguiente inicializa la variable n y despu es comienza un bucle donde esta se incrementa hasta llegar al valor N no negativo: Programa 1.1

tN 0u n : 0; do n N n : n 1
od

El primer paso de modelado consiste en denir las locaciones como puntos de ejecuci on en el programa. En este ejemplo alcanza con denir las locaciones l0 , l1 y l2 , como se muestra en el siguiente programa.

1.5. SISTEMAS DE TRANSICIONES Programa 1.2 l0 : tN 0u n : 0; l1 : do n N n : n 1 od l2 :

19

Las locaciones l0 , l1 y l2 indican el comienzo del programa, la condici on del bucle y la nalizaci on del programa respectivamente. Con ello el conjunto de locaciones ser a denido como L  tl0 , l1 , l2 u. A continuaci on, para denir la relaci on se procede a generar una transici on por cada par de locaciones seg un el ujo del programa en cuesti on. En nuestro caso basta con una transici on de l0 a l1 ejecutando la inicializaci on del bucle, una transici on de l1 en si mismo ejecutando el cuerpo del bucle siempre y cuando se cumpla la condici on, y una transici on desde l1 a l2 en la nalizaci on del bucle cuando esa condici on no se cumpla: .  x ls , s, lt

ls

 l0 ^ lt  l1 ^ s  pn : 0q _ ls  l1 ^ lt  l1 ^ s  p n N n : n 1q _ ls  l1 ^ lt  l2 ^ s  p n N skipqy .

Tambi en

puede ser denido como un conjunto de transiciones: .  t pl0 , n : 0, l1 q,

pl1 , pl1 ,

nN nN

n : n 1, l1 q, skip, l2 q u .

Como el programa comienza en la locaci on l0 , el conjunto de estados iniciales ser a denido como el predicado N 0 en la misma y false (o el conjunto vac o de estados) en las dem as locaciones: .  x l p l  l0 N 0 l  l0 false qy .

o de igual manera .l

.  pl  l0 q X N 0

Por lo tanto, el programa 1.1 puede ser modelado con el sistema de transiciones TS  pL, S , , q con L, y denidos anteriormente y el conjunto de sentencias S formado por aquellas que aparecen en la segunda coordenada de cada transici on: l S  tn : 0, n N n : n 1, n N skipu .

20

CAP ITULO 1. SISTEMAS DE TRANSICIONES

Ejemplo 1.16 A continuaci on desarrollaremos un ejemplo donde mostraremos la posibilidad de modelar un programa con saltos no estructurados. Sea el programa con las locaciones agregadas: Programa 1.3 l0 : tN 0u do y N x : x y ; l1 : if x 0 goto l2 x 0 y : y 1 od l2 :

Sobre este programa, el sistema de transiciones constar a de las locaciones L  tl0 , l1 , l2 u, con una transici on de l0 a l1 (ingresando al bucle y ejecutando la asignaci on a la variable x), una transici on de l0 a l2 (por la nalizaci on del bucle), una transici on de l1 a l2 (por la ejecuci on del salto no estructurado) y una transici on de l1 a l0 (ejecutando la asignaci on a la variable y ). Esto es .  t p l0 ,

pl0 , pl1 , pl1 ,

y N x : x y, l1 q, y N skip, l2 q, x 0 skip, l2 q, x 0 y : y 1, l0 q u .

El conjunto de estados iniciales ser a denido como el predicado N la locaci on l0 y false en las dem as locaciones: .l .  pl  l0 q X N 0 .

0 en

Por u ltimo, el conjunto S estar a formado por las sentencias que aparecen como segundas coordenadas de cada transici on: . S  t y N x : x y, y N skip, x 0 skip, x 0 y : y 1 u . l

1.5.1

Gr aco de transiciones

Una manera usual de representar un sistema de transiciones es mediante un grafo. En el mismo, cada nodo representa una locaci on y sus aristas denotan las transiciones particulares: las aristas se etiquetan con la sentencia correspondiente a la transici on representada, donde sus nodos de salida y llegada ser an las locaciones de salida y llegada respectivamente. Tambi en se suele agregar el predicado .l a los nodos que representan locaciones de entrada. Los grafos de transiciones 1.1 y 1.2 (p ag. 21) representan los sistemas de transiciones de los programas 1.1 y 1.3 respectivamente.

1.5. SISTEMAS DE TRANSICIONES Grafo de transiciones 1.1

21 Programa 1.1

tN 0u
l0

n : 0

l1

nN nN

n : n 1

skip

l2

Grafo de transiciones 1.2 y

Programa 1.3

N x : x y
l1

tN 0u

l0

x 0 y : y 1

N skip

x 0 skip

l2

1.5.2

Sistemas de transiciones ejecutables

Al modelar programas con sistemas de transiciones una pregunta que nos podemos hacer es si el conjunto total de programas modelados son ejecutables en una computadora. Una restricci on b asica que poseen estos programas es que no debe ser posible elegir un n umero innito de alternativas en un tiempo nito. Si la m aquina intenta hacer esta elecci on, la ejecuci on podr a no terminar, ya que debe asignar una m nima cantidad de tiempo en cada caso, o de otra forma podr a solo considerar un subconjunto nito de las posibles elecciones. Observando la denici on del tipo Sent como relaciones arbitrarias, si la imagen de una relaci on posee cardinalidad innita esta condici on claramente no se cumple ya que desde un estado la ejecuci on necesitar a poder realizarse eligiendo entre una cantidad innita de alternativas. Esta ausencia en la ejecutabilidad de los programas est a ligada a la falta de or-continuidad del transformador de weakest precondition (de manera dual and-continuidad de sp) como vimos en la secci on 1.4.3. En [BAW98, cap tulo 22] se describe este fen omeno, mostrando que la propiedad de continuidad en la

22

CAP ITULO 1. SISTEMAS DE TRANSICIONES

weakest precondition de relaciones se comprueba u nicamente si tienen imagen nita (cada estado est a relacionado solo con un conjunto nito de estados). En nuestro trabajo podemos simplicar a un m as esta condici on sin limitar el poder expresivo de los sistemas de transiciones imponiendo como restricci on que las sentencias en Sent sean deterministas: como las sentencias son los bloques constitutivos de los sistemas de transiciones el no determinismo puede modelarse con m ultiples transiciones deterministas desde una misma locaci on de la forma que se hizo en los ejemplos. La nitud de las elecciones desde una locaci on est a garantizada por el hecho de que en un sistema de transiciones . TS  pL, S , , q la relaci on es nita. Sumado al hecho de que cualquier sentencia determinista puede ser escrita como una suposici on compuesta con una actualizaci on funcional (ejemplo 1.1), para modelar programas podemos restringir el conjunto nito S a sentencias de la forma rbs; xf y, o como una asignaci on guardada B v1 , , vk : e1 , , ek si la cantidad de variables es nita. De todas maneras, esta caracterizaci on solo es posible cuando estamos modelando programas ejecutables. En este cap tulo continuaremos trabajando con sentencias generales para simplicar los resultados. En pr oximos cap tulos volveremos a se nalar esta restricci on.

1.6

Transformadores de predicados en sistemas de transiciones

En la secci on 1.4 denimos transformadores de predicados sobre el dominio Pred. En esta secci on generalizaremos esos operadores al dominio PredL aprovechando que el mismo es la extensi on puntual del anterior, y por lo tanto es un reticulado completo y booleano ya que hereda estas propiedades por ser la extensi on puntual de Pred y adem as es at omico. A partir de este hecho, extenderemos punto a punto las operaciones denidas sobre Pred (secci on 1.2) a PredL . Dado un sistema de transiciones . TS  pL, S , , q, sean P Q predicados en PredL y l P L, denimos la siguientes operaciones: . True.l  true (J en PredL ) . False.l  false (K en PredL ) . pP X Qq.l  P.l X Q.l ([ en PredL ) . pP Y Qq.l  P.l Y Q.l (\ en PredL ) . p P q.l  P.l ( en PredL ) . pP  Qq.l  P.l  Q.l (  en PredL ) . pP Qq.l  P.l Q.l ( en PredL ) P P . Q  x@l . Q  x@l : l P L : P.l : l P L : pP

Q.l y  Qq.l y

(orden en PredL ) (igualdad en PredL )

Los nmos y supremos en PredL se denen punto a punto de forma an aloga. Sean I conjuntos cualesquiera y P : PredL , entonces: . x i : I.i : P.i y .l  x i : I.i : P.i.l y ( nmo en PredL ) . x i : I.i : P.i y .l  x i : I.i : P.i.l y (supremo en PredL )

1.6. TRANSFORMADORES DE PREDICADOS EN ST

23

De aqu en adelante, en el caso que el conjunto L est e numerado (como en los ejemplos anteriores) denotaremos un predicado el PredL como una lista de predicados (en Pred) donde cada posici on contendr a su valor en cada locaci on. As , . en el ejemplo 1.15 el conjunto de estados iniciales ser a:  rN 0, false, falses. Claramente las operaciones en PredL pueden ser instrumentadas aplicando punto a punto las denidas en Pred sobre cada elemento de estas listas.

1.6.1

Strongest postcondition

. Dado un sistema de transiciones TS  pL, S , , q, el transformador strongest postcondition sobre ese sistemas de transiciones ser a un operador que toma el conjunto de transiciones, un predicado en el sistema y devuelve un predicado en el mismo: SP : TranL,S PredL PredL . SP. .P.l1  x l, s : .l.s.l1 : sp.s.pP.lq y

Para cada locaci on, este transformador devuelve la uni on (supremo) de la transformaci on sp sobre las transiciones entrantes a la misma. De forma intuitiva el resultado del transformador se puede caracterizar como las conguraciones (estados/locaciones) alcanzables mediante un paso de ejecuci on del programa desde las conguraciones del predicado par ametro. Ejemplo 1.17 Sea el sistema de transiciones correspondiente al programa 1.1 (grafo de transiciones 1.1). Calcularemos el resultado de este transformador con respecto al . estado inicial  rN 0, false, falses. Para ello deberemos obtener el supremo de aplicar sp sobre cada transici on entrante a cada locaci on. Comencemos por calcular SP. ..l0 . En este caso no existen transiciones cuya locaci on de llegada sea l0 ; esto es .l.s.l0 para todo l y s. Por lo tanto el transformador en l0 es el supremo con rango vac o: SP. ..l0

 false

La locaci on l1 tiene dos transiciones entrantes: una parte de l0 y otra de l1 . En estas locaciones vale N 0 y false respectivamente. Para esta u ltima el transformador sp dentro del supremo devuelve false ya que el mismo es estricto. Calculemos el resultado sobre la primera locaci on:

   

sp.pn : 0q.pN

0q.1

{ Desplegado de abreviaciones } sp.xx rn 0syy.x .N { Denici on de sp }

0y.1

xD xD

: .N : .N

0 : rn 0s  1 y 0
:

{ Actualizaci on de y separaci on de t ermino } 1 .n  0 ^ 1 .N

 .N ^ x @ v P Var
:v

:v

n^v N :
.v

.v

 1 .v y y

1 .N

{ Intercambio, l ogica, distributividad }

0 ^ 1 .n  0 ^ x D : : 1 .N  .N ^ x @ v P Var

n^v N :

 1 .v y y

24

CAP ITULO 1. SISTEMAS DE TRANSICIONES

{ Instanciaci on por 1 } 1 .N

0 ^ 1 .n  0

Por lo tanto

sp.pn : 0q.pN

0q  N 0 ^ n  0 N 0^n0
.

y este resultado ser a el mismo que el del transformador SP en la locaci on l1 : SP. ..l1

La locaci on l2 tiene solo una transici on entrante desde l1 . Pero como es falso en l1 y sp es estricto obtenemos: SP. ..l2

 false

El resultado nal de aplicar el transformador ser a entonces SP. .  rfalse, N

0 ^ n  0, falses

el cual muestra que los estados alcanzables desde los estados iniciales en despu es de un paso de ejecuci on del programa est an u nicamente en la locaci on l1 , antes de comenzar el bucle. De esta forma el programa con las anotaciones parciales obtenidas ser a: Programa 1.4 l0 : tN 0u n : 0; l1 : tN 0 ^ n  0u do n N n : n 1 od l2 :

l
1.6.2 Weakest liberal precondition

El transformador weakest liberal precondition puede ser extendido tambi en a predicados sobre sistemas de transiciones: WLP : TranL,S . WLP. .Q.l 

PredL PredL x l1 , s : .l.s.l1 :

wlp.s.pQ.l1 q y

El mismo en cada locaci on devuelve la intersecci on ( nmo) de la aplicaci on del transformador wlp sobre cada transici on saliente desde la misma. El resultado de este transformador puede caracterizarse de forma intuitiva como el conjunto de conguraciones (estados/locaciones) tales que si en el sistema de transiciones se ejecuta una sentencia desde alguna de ellas, si la sentencia termina lo hace a alguna conguraci on perteneciente a Q.

1.6. TRANSFORMADORES DE PREDICADOS EN ST

25

Ejemplo 1.18 Consideremos el programa 1.5 junto con su grafo de transiciones. En el mismo se ha anotado el nal del programa (locaci on l3 ) con la poscondici on q . Programa 1.5 l0 :

if b0 l1 : s0 b1 l2 : s1 l3 : tq u

rb0 s
l0

l1 s0

tqu
l3

rb1 s
l2

s1

En este ejemplo obtendremos el conjunto de estados a partir de los cuales si el programa termina en l3 lo hace en un estado que satisface q . Notar que no interesa si el programa alcanza otra locaci on distinta a l3 . Si alcanza estas locaciones puede hacerlo en cualquier estado pero si llega a l3 debe cumplir q . Este resultado puede ser obtenido aplicando el transformador WLP al predicado . Q  rtrue, true, true, q s. Sea el sistema de transiciones descripto por el grafo del programa 1.5. Calcularemos el resultado del transformador en cada locaci on. Desde l0 solo hay dos transiciones salientes hacia l1 y l2 por lo que el c alculo del nmo de la denici on de WLP se reduce al c alculo de una intersecci on:

  

WLP. .Q.l0 { Denici on de Q } WLP. .rtrue, true, true, q s.l0 { Denici on de WLP } wlp.rb0 s.true true

X wlp.rb1 s.true

{ wlp es no interrumpible }

Desde l1 (respectivamente l2 ) solo hay una transici on saliente hacia l3 , por lo que el resultado es simplemente wlp.s0 .q (respectivamente wlp.s1 .q ). Desde l3 no hay transiciones salientes por lo que el nmo es true (J del reticulado Pred). El resultado nal ser a: WLP. .rtrue, true, true, q s  rtrue, wlp.s0 .q, wlp.s1 .q, trues , lo cual muestra que si despu es de un paso de ejecuci on el programa llega a l3 en un estado de q , entonces si parti o de l1 lo hizo desde un estado en wlp.s0 .q , o si parti o de l2 lo hizo desde un estado en wlp.s1 .q . El mismo razonamiento puede aplicarse para obtener que sucede despu es de dos pasos de ejecuci on. Calculando el resultado del transformador sobre el u ltimo resultado y teniendo en cuenta que wlp.rbs.q  b q obtenemos: WLP. .rtrue, wlp.s0 .q, wlp.s1 .q, trues  rb0 wlp.s0 .q X b1 wlp.s1 .q, true, true, trues

26

CAP ITULO 1. SISTEMAS DE TRANSICIONES

o, junto con el c alculo anterior:

pWLP. q2 .Q  rb0 wlp.s0 .q X b1 wlp.s1 .q, true, true, trues


La interpretaci on de este resultado es la siguiente: si despu es de dos pasos de ejecuci on el programa llega a l3 en un estado de q , entonces si parti o de l0 lo hizo desde un estado en b0 wlp.s0 .q X b1 wlp.s1 .q . Notar que este es el resultado cl asico de la aplicaci on del transformador weakest liberal precondition a la sentencia condicional [DS90]. Utilizando los c alculos de WLP. y pWLP. q2 podemos realizar las anotaciones en el siguiente programa: Programa 1.6

tb0 wlp.s0 .q if b0 l1 : twlp.s0 .qu s0 b1 l2 : twlp.s1 .qu s1 l3 : tq u


l0 :

X b1 wlp.s1 .qu

l
1.6.3 Propiedades de los transformadores

En la secci on 1.4.3 se denieron ciertas propiedades de los transformadores de predicados en general (monoton a, juntividad y continuidad) y vimos que los transformadores de predicados wlp y sp cumplen algunas de ellas. Estas propiedades fueron denidas en el reticulado Pred pero, como veremos en el pr oximo cap tulo, pueden ser planteadas sobre otros reticulados y posets. Ya que PredL es tambi en un reticulado y los transformadores WLP y SP son funciones sobre el mismo, veremos como estas propiedades se extienden naturalmente a este dominio. Propiedades 1.19 (Transformadores SP y WLP) . Dado un sistema de transiciones TS  pL, S , , q SP. es universalmente disyuntivo: SP. . x

i : I.i :

P.i y

 x i

: I.i : SP. .pP.iq y

para todo conjunto de ndices I y para todo P : tanto es estricto (SP. .False  False).

PredL . Por lo

Esta propiedad indica que el transformador SP es distributivo con respecto a uniones arbitrarias de elementos en PredL . Con esta propiedad y la jerarqu a dada en el teorema 1.11 se deduce que SP es tambi en or-continuo y mon otono.

1.6. TRANSFORMADORES DE PREDICADOS EN ST WLP. es universalmente conjuntivo: WLP. . x

27

i : I.i :

P.i y

 x i

: I.i : WLP. .pP.iq y

para todo conjunto de ndices I y para todo P : tanto es no interrumpible (WLP. .True  True).

PredL . Por lo

Esta propiedad indica que el transformador WLP es distributivo con respecto a intersecciones arbitrarias de elementos en PredL . Con esta propiedad y la jerarqu a dada en el teorema 1.11 se deduce que WLP es tambi en and-continuo y mon otono. l En la secci on 1.4.3 (propiedades 1.12) vimos que los transformadores sp y wlp eran positivamente disyuntivos y conjuntivos respectivamente solo si la sentencia era determinista. Para extender esta propiedades a SP y WLP primero necesitamos denir este concepto en el marco de los sistemas de transiciones. Denici on 1.20 (Determinismo) . Un sistema de transiciones TS  pL, S , , q ser a determinista cuando todas sus sentencias s P S sean deterministas (Card.s 1) y en toda locaci on las sentencias en cada par de sus transiciones salientes tengan dominios disjuntos. Esto es, para todo par de transiciones distintas y con igual locaci on de salida pl, s, l1 q y pl, s , lq se cumple Dom.s X Dom.s  H. Propiedades 1.21 (SP y WLP deterministas) . Dado un sistema de transiciones TS  pL, S , , q Si TS es determinista, el transformador SP. es positivamente conjuntivo. Si TS es determinista, WLP. es positivamente disyuntivo.

Todas estas propiedades pueden ser demostradas utilizando las propiedades 1.12 y la denici on de los transformadores. A partir del ejemplo 1.18 puede vislumbrarse que las 3-uplas de Hoare pueden extenderse a sistemas de transiciones. Por ejemplo la proposici on tu tQu puede interpretarse como WLP. .Q . Al igual que con sp es posible utilizar el transformador SP para denotar esta misma proposici on: Propiedad 1.22 (SP WLP equivalencia) . Para todo sistema de transiciones TS  pL, S , , q y predicados P , Q se cumple: P WLP. .Q  SP. .P Q . l De aqu en adelante usaremos la notaci on tP u tQu para indicar las condiciones booleanas P WLP. .Q o SP. .P Q indistintamente. La dualidad entre los transformadores sp y wlp (propiedad 1.14) tambi en tiene su correlato en el contexto actual: Propiedad 1.23 (Dualidad SP y WLP) . Dado el sistema de transiciones TS  pL, S , , q, denimos la inversa del conjunto de transiciones como

1 .l.s.l1  .l1 .s1 .l

28

CAP ITULO 1. SISTEMAS DE TRANSICIONES

para todo l, l1 P L y s P S (de forma intuitivamente el grafo de 1 tiene los mismos nodos que , con las echas en direcci on opuesta y con las sentencias inversas). Entonces se cumple: SP. .P

 pWLP. 1 .

Pq .

La demostraci on es directa por la propiedad 1.14 y la denici on de los transformadores.

1.7

Sem antica operacional

En las secciones anteriores hemos hablado de pasos de ejecuci on de un sistema de transiciones de manera informal. En esta secci on aclararemos este concepto especicando una sem antica operacional de los sistemas de transiciones. De esta manera veremos c omo las ejecuciones describen el comportamiento operacional de los sistemas de transiciones a trav es de los pasos de ejecuci on del programa que representa. Para comenzar deniremos formalmente el concepto de conguraci on. Una conguraci on ser a un par donde la primera componente es un estado y la segunda una locaci on. La misma representar a el valor de las variables junto con el valor del contador de programa (locaci on) en un momento de la ejecuci on. Denici on 1.24 (Conguraci on) . Llamaremos conjunto de conguraciones al conjunto  L (pares locaciones y estados) y a cada elemento del mismo una conguraci on. l Adem as, representaremos la transformaci on de las conguraciones por cada paso de ejecuci on de un programa. Denici on 1.25 (Relaci on de transici on) . Sea TS  pL, S , , q un sistema de transiciones. Llamaremos relaci on de transici on de TS a la denida como ;: Bool . pl, q ; pl1 , 1 q 

x D s : .l.s.l1 :

s.. 1 y

Por ultimo deniremos el concepto de ejecuci on en un sistema de transiciones. Denici on 1.26 (Ejecuci on) . Sea TS  pL, S , , q un sistema de transiciones. Una ejecuci on nita de TS ser a una secuencia nita de conguraciones : r0..ns pL q con n P que comienza en y cumple la relaci on de transici on, esto es:

.l0 .0 ^ x @ i : 0 i n : |rp0 , l0 q  .0s|

.i ; .pi 1q y

Notar que bajo esta denici on una conguraci on pl, q es por s sola una ejecuci on si satisface .l.

1.7. SEMANTICA OPERACIONAL Una ejecuci on innita

29

N pL q que comienza en y cumple la relaci on de transici on, esto es:


.l0 .0 ^ x @ i : i 0 : |rp0 , l0 q  .0s| .i ; .pi 1q y

de TS ser a una secuencia innita de conguraciones

Llamaremos de forma gen erica ejecuci on tanto a ejecuciones nitas como innitas. l Con esta caracterizaci on deniremos la sem antica operacional de un sistema de transiciones: Denici on 1.27 (Sem antica operacional) . Dado un sistema de transiciones TS  pL, S , , q su sem antica operacional estar a dada por el conjunto de todas las ejecuciones posibles: TS

t |

es ejecuci on de TSu .

En la secci on 1.6 se mencion o de manera informal el comportamiento de los transformadores SP y WLP. Ahora, dentro de este contexto operacional, estos transformadores pueden ser descriptos formalmente. Veamos primero el caso . del transformador SP. Dado un sistema de transiciones TS  pL, S , , q, P : PredL , l1 : L y :

     

SP. .P.l1 . 1 { Denici on de SP }

x l, s : .l.s.l1 : x D l, s : .l.s.l1 :

sp.s.pP.lq y . 1

{ Denici on de supremo } sp.s.pP.lq. 1 y : P.l. : s.. 1 y y s.. 1 y s.. 1 y y

{ Denici on de sp }

x D l, s : .l.s.l1 : x D
{ Anidado }

x D l, s, : .l.s.l1 ^ P.l. :
{ Anidado }

x D l, x D l,

: P.l. :

x D s : .l.s.l1 :

{ Denici on de relaci on de transici on } : P.l. : pl, q ; pl1 , 1 q y . SP. .P.l1 . 1

Por lo tanto

 D l,

: P.l. : pl, q ; pl1 , 1 q

lo cual muestra que el transformador SP devuelve las conguraciones alcanzables en un paso de ejecuci on desde el predicado P .

30

CAP ITULO 1. SISTEMAS DE TRANSICIONES Realicemos el mismo an alisis para el transformador WLP:

      

WLP. .Q.l.

x l1 , s : .l.s.l1 : x @ l1 , s : .l.s.l1 :
{ Anidado }

{ Denici on de WLP }

wlp.s.pQ.l1 q y .

{ Denici on de nmo } { Denici on de wlp }

wlp.s.pQ.l1 q. y : s.. 1 : Q.l1 . 1 y y Q.l1 . 1 y

x @ l1 , s : .l.s.l1 : x @ 1

x @ l1 , s, 1 : .l.s.l1 ^ s..1 : x @ l1 , 1 : x D s : .l.s.l1 :


{ Intercambio }

{ Partici on de rango generalizada }

s.. 1 y : Q.l1 . 1 y Q.l1 . 1 y

{ Denici on de relaci on de transici on }

x @ l1 , 1 : pl, q ; pl1 , 1 q : x @ l1 , 1

: : pl, q ; pl1 , 1 q

Q.l1 . 1 y . : : pl, q ; pl1 , 1 q

Por lo tanto WLP. .Q.l.

 @ l1 , 1

Q.l1 . 1

lo cual muestra que si se realiza un paso de ejecuci on desde una conguraci on que pertenece al resultado del transformador (WLP. .Q), se termina en el predicado Q. Esta descripci on de SP y WLP por medio de la sem antica operacional coincide con la dada informalmente en la secci on 1.6. El pr oximo teorema plasma el resultado de estas dos demostraciones: Teorema 1.28 (Transformadores en funci on de transiciones) . Dado un sistema de transiciones TS  pL, S , , q, los transformadores strongest postcondition y weakest precondition pueden ser descriptos como: WLP. .Q.l. SP. .P.l1 . 1

 x @ l1 , 1 : pl, q ; pl1 , 1 q : Q.l1 .1 y  x D l, : P.l. : pl, q ; pl1 , 1 q y .

Para reforzar a un m as esta relaci on entre la sem antica operacional y la descripta en las secciones anteriores, mostraremos que el conjunto de conguraciones resultante de aplicar n veces el transformador strongest postcondition sobre las conguraciones iniciales , est a formado por las n- esimas conguraciones de las ejecuciones. El siguiente teorema describe esta propiedad: Teorema 1.29 . Sea TS  pL, S , , q un sistema de transiciones. Entonces para toda conguraci on pl1 , 1 q se verica

pSP. qn ..l1 .1  D
con Dom. el dominio de .

TS

^ n P Dom.

.n  pl1 , 1 q

1.7. SEMANTICA OPERACIONAL

31

n Demostracio Demostraremos este teorema por inducci on en n. En la demostraci on utilizaremos la notaci on de listas para denotar secuencias al estilo [BSB08]. En particular usaremos el operador n que devuelve la lista de los primeros n elementos de una secuencia y el operador pl, q que pega un elemento al nal de una secuencia nita. Caso base (n  0) Demostraremos la doble implicaci on. ()

^ 0 P Dom. : .0  pl1 , 1 q y { Instanciaci on  rpl1 , 1 qs } rpl1 , 1 qs P TS ^ 0 P t0u ^pl1 , 1 q  pl1 , 1 q  { L ogica de predicados } 1 rpl , 1 qs P TS { Denici on 1.26 de ejecuci on } xD
:

TS

.l1 . 1

()

 

xD P

: TS

TS

^ 0 P Dom.

.0  pl1 , 1 q y .l1 . 1

{ Metateorema del testigo 1.44 (p ag. 38) }

^ 0 P Dom. ^

.0  pl1 , 1 q .l1 . 1

{ Denici on 1.26 de ejecuci on } T

Paso inductivo Supongamos la hip otesis inductiva:

   

pSP. qn ..l1 .1  D pSP. qn1 ..l1 .1


SP. .ppSP. qn .q.l1 . 1

TS

^ n P Dom.

.n  pl1 , 1 q

{ Desplegado de composici on } { SP en funci on de transiciones (teorema 1.28) }

x D l, : pSP. qn ..l. : pl, q ; pl1 , 1 q y


:

{ Hip otesis inductiva }

x D l, : x D x D l, ,
:

TS

^ n P Dom.

.n  pl, q y : pl, q ; pl1 , 1 q y

^ n P Dom. ^ .n  pl, q : pl, q ; pl1 , 1 q y  { Rango unitario (pl, q  .n) } x D : P TS ^ n P Dom. : .n ; pl1 , 1 q y P
TS

{ Partici on de rango generalizada }

32 Por lo tanto,

CAP ITULO 1. SISTEMAS DE TRANSICIONES

pSP. qn1 ..l1 .1  D xD  xD


() : :

TS

^ n P Dom.

.n ; pl1 , 1 q

Para nalizar, demostraremos

P P

TS TS

^ n P Dom.

.n ; pl1 , 1 q y : .pn 1q  pl1 , 1 q y

^ n 1 P Dom.

por doble implicaci on y aplicando el metateorema del testigo [BSB08, metateorema 5.29] sobre los existenciales:

TS

^ n P Dom. ^
TS

.n ; pl1 , 1 q

{ Denici on 1.26 de ejecuci on }

pn 1q pl1 , 1 q P

^ n P Dom.

pn 1q pl1 , 1 q P TS ^ n 1 P Dom.p pn 1q pl1 , 1 qq ^p pn 1q pl1 , 1 qq.pn 1q  pl1 , 1 q { Instanciaci on existencial de por pn 1q pl1 , 1 q } x D : : P TS ^ n 1 P Dom. ^ .pn 1q  pl1 , 1 q y { Intercambio } x D : P TS ^ n 1 P Dom. : .pn 1q  pl1 , 1 q y
Por lo tanto se demuestra

{ Manejo de secuencias }

P xD xD xD
()

TS :

^ n P Dom. ^ P
TS

.n ; pl1 , 1 q : .pn 1q  pl1 , 1 q y

^ n 1 P Dom. ^ n P Dom.
:

y aplicando el metateorema del testigo tenemos : :

P P

TS TS

.n ; pl1 , 1 q y : .pn 1q  pl1 , 1 q y .

^ n 1 P Dom.

P P

TS TS :

^ n 1 P Dom. ^ .pn 1q  pl1 , 1 q ^ n P Dom. ^


TS .n ; pl1 , 1 q : .n ; pl1 , 1 q y

{ Denici on 1.26 de ejecuci on } { Instanciaci on }

xD

^ n P Dom.

1.7. SEMANTICA OPERACIONAL Por lo tanto se demuestra

33

P xD xD xD
: :

TS :

^ n 1 P Dom. ^ .pn 1q  pl1 , 1 q P


TS

^ n P Dom.

.n ; pl1 , 1 q y .pn 1q  pl1 , 1 q y

y aplicando el metateorema del testigo tenemos

P P

TS TS

^ n 1 P Dom. ^ n P Dom.
:

.n ; pl1 , 1 q y ,

con lo cual naliza la prueba del teorema.

34

CAP ITULO 1. SISTEMAS DE TRANSICIONES

Ap endice 1.A

Propiedades de expresiones cuanticadas

En este ap endice daremos las propiedades de las expresiones cuanticadas que se utilizan en las demostraciones de este trabajo. Las mismas ser an expuestas en la forma de axiomas, teoremas y metateoremas como en [BSB08]. Axioma 1.30 (Rango vac o) Cuando el rango de especicaci on es vac o, la expresi on cuanticada es igual al elemento neutro e del operador `:

x` i
Si

:F: T

ye

` no posee elemento neutro, la expresi on no est a bien denida.

Axioma 1.31 (Rango unitario) Si el rango de especicaci on consiste en un solo elemento, la expresi on cuanticada es igual al t ermino evaluado en dicho elemento:

x` i

:iN : T

y  T pi : N q

Otra forma de escribir esta regla es hacer expl cita la dependencia de T de la variable i:

x` i

: i  N : T.i y  T.N

Axioma 1.32 (Partici on de rango) Cuando el rango de especicaci on es de la forma R _ S y adem as se cumple al menos una de las siguientes condiciones: el operador

` es idempotente,

los t erminos booleanos R y S son disjuntos, la expresi on cuanticada puede reescribirse como sigue:

x` i

:R_S : T

y  x` i

:R: T

y ` x` i

:S: T

El hecho que la igualdad sea una relaci on sim etrica, permite indistintamente reemplazar cualquiera de los dos miembros por el otro, vale decir que la regla de partici on de rango puede leerse tambi en de derecha a izquierda. Lo mismo ocurre con todas las reglas que siguen. Axioma 1.33 (Partici on de rango generalizada) Si el operador ` es idempotente y el rango de especicaci on es una cuanticaci on existencial, entonces:

x` i : x D j

: S.i.j : R.i.j y : T.i y  x` i, j : S.i.j ^ R.i.j : T.i y

Axioma 1.34 (Regla del t ermino) Cuando el operador ` aparece en el t ermino de la cuanticaci on, la expresi on cuanticada puede reescribirse de la siguiente manera:

x` i

:R: T

` G y  x` i

:R: T

y ` x` i

:R: Gy

1.A. PROPIEDADES DE EXPRESIONES CUANTIFICADAS

35

Axioma 1.35 (Regla del t ermino constante) Si el t ermino de la cuanticaci on es constantemente igual a C , la variable cuanticada i no aparece en C, el operador ` es idempotente y el rango de especicaci on es no vac o, entonces:

x` i

:R: CyC

Axioma 1.36 (Distributividad) Si b es distributivo a izquierda con respecto a las siguientes condiciones: el rango de especicaci on es no vac o, el elemento neutro del operador entonces:

` y se cumple al menos una de

` existe y es absorbente para b,

al menos una de las condiciones anteriores, entonces:

x` i : R : x b T y  x b x` i : R : T y An alogamente, si b es distributivo a derecha con respecto a ` y se cumple x` i


:R: T

b x y  x` i

:R: T

ybx

Axioma 1.37 (Anidado) Cuando hay m as de una variable cuanticada y el rango de especicaci on es una conjunci on de t erminos booleanos, uno de los cuales es independiente de alguna de las variables de cuanticaci on, la expresi on cuanticada puede reescribirse de la siguiente manera:

x` i, j

: R.i ^ S.i.j : T.i.j y  x` i : R.i :

x` j

: S.i.j : T.i.j y y

Axioma 1.38 (Cambio de variable) Si las variables en una secuencia j no se encuentran como variables en libres en el rango R ni el t ermino T entonces pueden renombrarse las variables:

x` i

:R: T

y  x` j

: Rpi : j q : T pi : j q y

Este axioma puede tambi en escribirse usando una referencia expl cita a i:

x` i

: R.i : T.i y  x` j : R.j : T.j y

Todas estas reglas pueden particularizarse, reri endose a operadores concretos. Es lo que haremos en adelante, con los operadores m as usuales. Teorema 1.39 (Cambio de variable) Si f es una funci on que tiene inversa (es biyectiva) en el rango de especicaci on y j es una variable que no aparece en R ni en T , las variables cuanticadas pueden renombrarse como sigue: La inversa en el rango considerado se denotar a con f 1 . La propiedad de ser inversa puede escribirse como

x` i

: R.i : T.i y  x` j : R.pf.j q : T.pf.j q y

@ @ i, j

: R.i ^ R.pf.j q : f.i  j

 i  f 1 .j

36

CAP ITULO 1. SISTEMAS DE TRANSICIONES

n Demostracio Comenzamos la demostraci on con la expresi on m as complicada

x` j x` j

: R.pf.j q : T.pf.j q y : R.pf.j q :

= { Rango unitario (introducci on de la cuanticaci on sobre i) }

x` i

: i  f.j : T.i y y

= { Anidado }

x` i, j x` i, j

: R.pf.j q ^ i  f.j : T.i y : R.i ^ i  f.j : T.i y

= { Leibniz }

= { Anidado }

x` i

: R.i :

x` j

: i  f.j : T.i y y :j

= { Inversa }

@` i : R.i : @` j
: R.i : T.i y

 f 1 :

T.i

DD

= { Rango unitario, j no es libre en T }

x` i

Teorema 1.40 (Separaci on de un t ermino izquierdo)

x` i

: 0 i n 1 : T.i y  T.0 ` x` i : 0 i n : T.pi 1q y

Teorema 1.41 (Separaci on de un t ermino derecho)

x` i

: 0 i n 1 : T.i y  x` i : 0 i n : T.i y ` T.n

Para el cuanticador universal hay una regla extra, cuya importancia radica en el hecho que provee un modo de pasar del rango al t ermino y viceversa: Regla de intercambio :

x@i

: R.i : T.i y

 x@i  x@i

: T : R.i _ T.i y : : R.i T.i y .

Las cuanticaciones universal y existencial est an vinculadas a trav es de dos reglas importantes, que son una generalizaci on de las leyes de De Morgan: Reglas de De Morgan:

x @ i : R.i : x D i : R.i : x@x

T.i y T.i y

 x D i : R.i :  x @ i : R.i :

T.i y T.i y .

Teorema 1.42 (Instanciaci on) : : f.x y f.Y

n Demostracio Probemos su equivalente

x@x

: : f.x y ^ f.Y

 x@x

: : f.x y

1.A. PROPIEDADES DE EXPRESIONES CUANTIFICADAS

37

   

x@x x@x

: : f.x y : T : f.x y :T

{ Rango T }

{ Absorbente del

x@x

Y xY

_}

: f.x y

{ Partici on de rango }

x@x x@x

: T : f.x y ^ x @ x : x  Y : f.x y : : f.x y ^ f.Y

{ Rango T y Rango unitario (notar que valen las hip otesis) }

Otras propiedades de los cuanticadores universales y existenciales son expuestas en la forma de metateoremas ya que su validez es demostrada utilizando el mismo esquema de demostraci on. Metateorema 1.43 (Generalizaci on) P es un teorema si y solo si x @ i : : P y es un teorema n Demostracio La demostraci on puede hacerse por doble implicaci on. Una de ellas es inmediata por la propiedad de instanciaci on. Para ver la otra mostraremos c omo transformar una demostraci on de P en una de x @ i : : P y . Supongamos que tenemos una demostraci on de P de la siguiente forma:

P { Raz on 1 } P1 . . .


de

Pn T

{ Raz on n 1 }

x@i : : P y : x@i : : P y  { Raz on 1 } x @ i : : P0 y   x@i x@i


T . . .

Podemos construir entonces de manera mec anica la siguiente demostraci on

{ Raz on n 1 } :: Ty { T ermino constante }

: : Pn y

38

CAP ITULO 1. SISTEMAS DE TRANSICIONES

Metateorema 1.44 (Testigo) Si k no es libre en P ni en Q entonces x D i : : P es un teorema. n Demostracio xDi : : P y Q

y Q si y solo si P pi : kq Q

    

{ implicaci on }

xDi

:: P P

y_Q

{ de Morgan }

x@i

:: :: ::

y_Q

{ cambio de variables, k no es libre en P }

x@k

P pi : k q y _ Q P pi : k q _ Q y

{ distributividad, k no es libre en P }

x@k

x @ k : : P pi : kq Q y Aplicando el metateorema 1.43 de la cuanticaci on universal, vemos que la u ltima l nea es un teorema si y solo si P pi : k q Q lo es. l

{ implicaci on }

Cap tulo 2

Invariantes
En el cap tulo anterior formalizamos el concepto de sistema de transiciones y vimos como estos pueden ser utilizados para denotar programas. Adem as generalizamos el concepto de predicados y transformadores sobre esta formalizaci on. Vimos por u ltimo como los transformadores pueden usarse para denotar un paso de ejecuci on en la sem antica operacional. En este cap tulo veremos el concepto cl asico de invariante [DS90] generalizado a sistemas de transiciones, signicando propiedades que se cumplen durante m ultiples pasos de ejecuci on de un sistema de transiciones. Para ello primero desarrollaremos la teor a de puntos jos que ser a utilizada m as adelante sobre transformadores de predicados permiti endonos caracterizar distintas formas de invariancia.

2.1

Puntos Fijos

Antes de comenzar exponiendo la teor a de puntos jos propiamente dicha desarrollaremos las estructuras algebraicas y sus propiedades para tal n. Estas ser an una extensi on de las propiedades en las secciones 1.4.3 y 1.6.3 pero aplicadas a posets en general lo cual nos permitir a denir distintas condiciones de existencia de los puntos jos de funciones.

2.1.1

Estructuras algebraicas y juntividad

Para denir las propiedades de juntividad deniremos estructuras un poco m as simples que reticulados: Denici on 2.1 (Semireticulado) Dado un poset pP, q no vac o Ser a un \-semireticulado (semi-reticulado con supremo) si todo par de elementos tiene menor cota superior. Para todo par de elementos x, y P P esta ser a denotada por x \ y . De forma dual, ser a un [-semireticulado (semi-reticulado con nmo) si todo par de elementos tiene mayor cota inferior. Para todo par de elementos x, y P P esta ser a denotada por x [ y . 39

40

CAP ITULO 2. INVARIANTES Si el poset es [-semireticulado y adem as todo subconjunto no vac o tiene mayor cota inferior ( nmo) entonces diremos que es un [-semireticulado casi completo. Claramente estas estructuras tienen menor elemento K como el nmo de todo el conjunto P . De forma dual, si el poset es \-semireticulado y adem as todo subconjunto no vac o tiene menor cota superior (supremo) entonces diremos que es un \-semireticulado casi completo. Claramente estas estructuras tienen mayor elemento J como el supremo de todo el conjunto P .

Por ejemplo, el poset de los n umeros naturales p , q es un reticulado ya que es un \-semireticulado y [-semireticulado, no es un reticulado completo ya que no tiene m aximo elemento J pero es un [-semireticulado casi completo ya que todo subconjunto no vac o tiene nmo. Notar el conjunto vac o no tiene nmo en ya que su conjunto de cotas inferiores es y este no tiene m aximo elemento (carece del 8).

Otras estructuras necesarias para denir otros tipos de juntividades son los cpos y co-cpos : Denici on 2.2 (cpo y co-cpo) Dado un poset pP, q no vac o ser a cpo (conjunto parcialmente ordenado) si todo subconjunto dirigido (denici on 1.9, p ag. 14) tiene menor cota superior (supremo). Notar que un cpo tiene menor elemento K ya que el conjunto vac o es dirigido. De forma dual, ser a co-cpo si todo subconjunto codirigido (denici on 1.9) tiene mayor cota inferior ( nmo). Notar que un co-cpo tiene mayor elemento J ya que el conjunto vac o es codirigido. Ser a cpo local si todo subconjunto dirigido y acotado superiormente tiene supremo. De forma dual, ser a co-cpo local si todo subconjunto codirigido y acotado inferiormente tiene nmo. l Por ejemplo, el reticulado de los n umeros naturales p , q no es cpo ya que el mismo es un conjunto dirigido y no posee supremo (no posee elemento 8) pero es un cpo local. Notar que estas u ltimas deniciones permiten extender la noci on de continuidad dada en la denici on 1.10 (p ag. 14) a cpos y co-cpos. M as adelante explicitaremos la denici on sobre estas nuevas estructuras. Todo reticulado completo posee la propiedad de ser cpo y co-cpo ya que posee nmo y supremo para cualquier subconjunto. Por lo tanto estas estructuras son m as d ebiles que los reticulados completos. Como veremos existe una relaci on entre semireticulados casi completos y reticulados completos: Teorema 2.3 Dado un poset pP, q no vac o, las siguientes proposiciones son equivalentes: pP, q tiene mayor elemento pP, q es reticulado completo.

J y es [-semireticulado casi completo. pP, q tiene menor elemento K y es \-semireticulado casi completo.

2.1. PUNTOS FIJOS

41

Notar que a partir de este teorema no es necesario hacer la distinci on entre [-semireticulado completo y \-semireticulado completo ya que las nociones son equivalentes. La demostraciones de este teorema pueden encontrarse en [DP90, teorema 2.16]. Existe adem as otra propiedad que relaciona cpos locales con semireticulados casi completos: Teorema 2.4 Si el poset pP, q es [-semireticulado casi completo entonces es cpo local. Y de forma dual, si es \-semireticulado casi completo entonces es co-cpo local. l Esto quiere decir que la propiedad de ser semireticulado casi completo es m as fuerte que la de ser cpo local. La demostraci on puede encontrarse en [MRS93]. A partir de estas estructuras generalizaremos los diferentes tipos de juntividad ya presentados en la secci on 1.4.3 : Denici on 2.5 (juntividad) Dado un poset pP, q no vac o y una funci on f : P

P. f es mon otona si para todo par de elementos x, y P P x y f.x f.y .

se cumple:

Si pP, q tiene menor elemento

K, f es estricta si f.K  K. Si pP, q tiene mayor elemento J, f es no interrumpible si f.J  J. Si pP, q es un [-semireticulado casi completo, f es positivamente conjuntiva si el nmo distribuye sobre subconjuntos no vac os arbitrarios. Esto es, para todo conjunto de ndices I con I  H y para todo C : P se cumple: f. x

i : I.i :

C.i y

 xi

: I.i : f.pC.iq y .

De forma dual, si pP, q es un \-semireticulado casi completo, f es positivamente disyuntiva si para todo conjunto de ndices I con I  H y para todo C : P se cumple: f. x

i : I.i :

C.i y

 xi

: I.i : f.pC.iq y .

Si pP, q es un reticulado completo, f es universalmente conjuntiva si es no interrumpible y positivamente conjuntiva . O sea es conjuntiva para subconjuntos arbitrarios. Si pP, q es un reticulado completo, f es universalmente disyuntiva si es estricta y positivamente disyuntiva . O sea es disyuntiva para subconjuntos arbitrarios. Si pP, q es un cpo, f es \-continua si es disyuntiva sobre conjuntos dirigidos no vac os. Esto es, para todo conjunto de ndices I con I  H y para todo C : P tal que tC.i | i P I u es dirigido, se cumple: f. x

i : I.i :

C.i y

 xi

: I.i : f.pC.iq y .

42

CAP ITULO 2. INVARIANTES De forma dual, si pP, q es un co-cpo, f es [-continua si es conjuntiva sobre conjuntos codirigidos no vac os. Esto es, para todo conjunto de ndices I con I  H y para todo C : P tal que tC.i | i P I u es codirigido, se cumple: f. x

i : I.i :

C.i y

 xi

: I.i : f.pC.iq y .

Como ya vimos es el cap tulo anterior para el caso restringido de Pred y PredL los diferentes tipos de juntividad pueden ser ordenados seg un su fortaleza: Teorema 2.6 (Jerarqu a de juntividades) Sobre los dominios en que est en denidos los siguientes tipos de juntividad, se cumple que: universalmente conjuntivo(disyuntivo) positivamente conjuntivo(disyuntivo) [(\)-continuo mon otono l Adem as vimos que WLP es universalmente conjuntivo por lo que es positivamente conjuntivo, [-continuo y mon otono. Las propiedades duales se cumplen para el transformador SP.

2.1.2

Puntos jos

Dado un poset pP, q un punto jo de una funci on f : P P ser a un elemento x P P tal que f.x  x . Claramente no cualquier funci on denida sobre un poset . posee punto jo. Por ejemplo en el poset p , q la funci on f.n  n 1 no lo tiene. Si una funci on en un poset posee puntos jos, otra pregunta posible es sobre la existencia de de los menores y mayores entre ellos. Esto es, existe un elemento x P P tal que f.x  x (es punto jo) y x @ y P P : f.y  y : x y y para el caso del menor o x @ y P P : f.y  y : y x y para el caso del mayor punto jo. En el caso que existan denotaremos .f y .f al menor y mayor punto jo respectivamente. A continuaci on veremos algunos teoremas que aseguran su existencia bajo ciertas restricciones.

Teorema 2.7 (Knaster-Tarski) Dado un poset pP, q y una funci on mon otona (denici on 1.7) f : P P . Si pP, q es un reticulado completo entonces existen el menor y mayor punto jo y est an caracterizados como .f .f

x P P  x  x xPP

: f.x x : x y : x f.x : x y

(caracterizaci on ) (caracterizaci on )

La demostraci on del teorema puede encontrarse en [BAW98, cap tulo 19]. A un elemento x P P tal que f.x x (x f.x) lo llamaremos pre(pos)-punto jo. El teorema muestra que bajo sus condiciones el mayor y menor punto jo existen y son el nmo y supremo de los pre-puntos jos y los pos-puntos jos respectivamente. Como vimos en el cap tulo anterior Pred y PredL son reticulados completos, por lo cual puede aplicarse este teorema de existencia. De todas formas, la

2.2. INVARIANTES

43

caracterizaci on de los puntos jos como supremos o nmos de conjuntos, aunque u til al momento de demostrar sus propiedades, puede ser engorrosa si queremos obtenerlos efectivamente. Esto es debido a que los conjuntos de pre y pos-puntos jos pueden ser muy grandes (incluso pueden llegar a ser no numerables). A continuaci on desarrollaremos un teorema que caracteriza los puntos jos como l mite de secuencias numerables. Teorema 2.8 Dado un cpo pP, q toda funci on \-continua f : P P tiene un menor punto jo dado por .f  x n P : : f n .K y .

De forma dual, dado un co-cpo pP, q toda funci on tiene un mayor punto jo dado por .f

[-continua f : P P

Notar en el teorema que el supremo sobre el conjunto tf n .K | n P u est a bien denido ya que es dirigido (es una cadena). Esta propiedad puede demostrarse gracias la monoton a de la funci on f (continuo implica mon otono por teorema 2.6). Lo mismo sucede en la parte dual del teorema. Cabe mencionar que para toda funci on mon otona en general, el l mite x n P : : f n .K y existe para alg un ordinal jo en el poset [BAW98, cap tulo 19]. Pidiendo continuidad de f podemos alcanzarlo simplemente con el primer ordinal . En la secci on anterior vimos que p , q es un [-semireticulado casi completo pero no es un cpo (aunque es un cpo local por teorema 2.4). La funci on . f : denida como f.n  n 1 claramente es mon otona y no posee punto jo. Queda por investigar bajo que condiciones se puede asegurar la existencia de puntos jos en semireticulados casi completos. Teorema 2.9 Dado pP, q un [-semireticulado casi completo y f : P P una funci on mon otona. Si existe un pre-punto jo de f entonces tiene menor punto jo dado por: .f  x x P P : f.x x : x y .

 xn P N

: : f n .J y .

N N

De forma dual, si pP, q es un \-semireticulado casi completo y f tiene al menos un pos-punto jo, el mayor punto jo est a dado por: .f

 xx P P

: x f.x : x y .

Por lo tanto podemos asegurar la existencia de puntos jos en semireticulados casi completos u nicamente si la funci on en cuesti on tiene al menos un pre(pos)-punto jo. Cabe agregar que si el poset es un cpo local el menor punto jo tambi en existe y es caracterizado por x n P : : f n .K y para alg un ordinal (la propiedad dual tambi en se cumple). Las demostraciones de estas propiedades pueden encontrarse en [MRS93].

2.2

Invariantes

En esta secci on deniremos distintos conceptos de invariantes como propiedades que se cumplen a lo largo de todos los pasos de ejecuci on de un sistema de transiciones. El primero estar a relacionado con su sem antica operacional (secci on 1.7).

44

CAP ITULO 2. INVARIANTES

Denici on 2.10 (Invariante) . Dado un sistema de transiciones TS  pL, S , , q, P : PredL es un invariante si todas las conguraciones en todas la ejecuciones de TS satisfacen P :

^pl, q P : P.l. y . Esta situaci on ser a denotada como TS | lP . Cuando se sobreentienda del contexto escribiremos simplemente lP . l
, l, : TS A continuaci on veremos algunas propiedades de los invariantes. Propiedades 2.11 (Invariantes) Dado un sistema de transiciones TS PredL se cumple: 1. 2. 3. 4. .  pL, S , , q y dos predicados P, Q :

x@

lTrue. lP P . lP ^ P Q lQ. lP ^ lQ lpP X Qq.

Estas propiedades pueden ser demostradas f acilmente a partir de la denici on anterior. Probar que un predicado P es un invariante puede ser engorroso utilizando la sem antica operacional. Afortunadamente podemos utilizar las sem anticas WLP y SP para denir otro tipo de invariancia que, como veremos ma s adelante, est a relacionada con la anterior. Denici on 2.12 (Invariante inductivo) . Dado un sistema de transiciones TS  pL, S , , q, : PredL es un invariante inductivo si se cumple: 1. 2.

, tu tu

Si solo se cumple la condici on 2 diremos que es un invariante inductivo candidato. l Recordemos que tu tu denota tanto a WLP. . como a SP. . (secci on 1.6.3). Como puede verse, esta nueva denici on caracteriza a un invariante como un predicado que se cumple inicialmente (condici on 1) y se preserva por aplicaci on de los transformadores (condici on 2). Si se cumple solo la u ltima condici on ser a solamente un invariante inductivo candidato. De aqu en adelante usaremos letras griegas para denotar invariantes inductivos. El siguiente lema muestra la relaci on entre ambas deniciones de invariante. Lema 2.13 . Dado un sistema de transiciones TS  pL, S , , q, si : PredL es un invariante inductivo entonces se cumple TS | l (es invariante).

2.2. INVARIANTES

45

n Demostracio . Supongamos TS  pL, S , , q y un invariante inductivo del mismo. Sea P TS (una ejecuci on de TS). Veremos que todas las conguraciones en cumplen . La prueba ser a por inducci on en la longitud de . Caso base .l0 .0 |rpl0 , 0 q  .0s| { .l0 .0 |rpl0 , 0 q  .0s| { T Paso inductivo (Hip otesis inductiva .li .i ) .li1 .i1 |rpli1 , i1 q  .pi 1qs| { Denici on de invariante inductivo } SP. ..li1 .i1 |rpli1 , i1 q  .pi 1qs| es ejecuci on (denici on 1.26) }

(por denici on de invariante inductivo) }

x D l, : .l. : pl, q ; pli1 , i1 q y |rpli1 , i1 q  .pi 1qs|


.li .i ^pli , i q ; pli1 , i1 q |rpli1 , i1 q  .pi 1q ^pli , i q  .is| { Hip otesis inductiva y denici on de ejecuci on 1.26 } T { Instanciaci on l con .i }

{ Resultado en secci on 1.7 }

Las condiciones en la denici on 2.12, que caracterizan un invariante inductivo, resultan m as simples de vericar con la l ogica que la de invariante a secas (denici on 2.10) ya que se utiliza la sem antica de transformadores en vez de la operacional. En este sentido, una pregunta posible es si nos podemos manejar u nicamente con la denici on de invariante inductivo para demostrar propiedades sobre los sistemas de transiciones. El pr oximo teorema responde esta pregunta. Teorema 2.14 (Regla del invariante) . Dado un sistema de transiciones TS  pL, S , , q. Un predicado P : PredL es invariante (TS | lP ) si y solo si existe : PredL tal que 1. 2. 3.

, tu tu y P,

o sea es un invariante inductivo m as fuerte que P .

46 n Demostracio Demostraremos la doble implicaci on.

CAP ITULO 2. INVARIANTES

() Como es un invariante inductivo, por lema 2.13 tambi en es un invariante a secas (l). Por lo tanto, utilizando la propiedad 2.11.3 y la hip otesis P se demuestra que P es un invariante (lP ). () Como PredL es un reticulado completo, podemos denir . @  i :iP

N : pSP. qi. D

Demostraremos primero que as denido es un invariante inductivo:

@ { Denici on } i :iP N : pSP. qi. D  { Partici on de rango, rango unitario } @ D pSP. q0 . Y i : i P N : pSP. qi1 .  { SP es universalmente disyuntiva } @ D 0 pSP. q . Y SP. . i : i P N : pSP. qi .  { Denici on de y simplicaci on } Y SP. .
Entonces, seg un la demostraci on

^ SP. .

y por lo tanto es un invariante inductivo. Queda por demostrar que as denida es m as fuerte que P :

{ Denici on de } @ D i : i P N : pSP. qi . P { Propiedad de supremo en reticulados completos } @@ D i : i P N : pSP. qi . P


Utilizando principalmente el teorema 1.29 (p ag. 30) demostraremos el termino de la cuanticaci on universal pSP. qn . P para todo n P o lo que es lo mismo pSP. qn ..l1 . 1 P.l1 . 1 para toda conguraci on pl1 , 1 q:

  

pSP. qn ..l1 .1 P.l1 .1 xD


{ Teorema 1.29 } : : :

TS TS

^ n P Dom. ^ n P Dom.

: :

.n  pl1 , 1 q y P.l1 . 1 .n  pl1 , 1 q P.l1 . 1 y .n  pl1 , 1 q P.l1 . 1 y

{ L ogica de predicados }

x@ x@

{ Intercambio }

TS : n P Dom.

2.3. INVARIANTES Y PUNTOS FIJOS

47

  

{ Instanciaci on universal, fortalecimiento de t ermino }

x@ x@ x@
T

P P

TS :

x @ l,

: : pl, q P

P.l. y y
: P.l. y y

{ Intercambio } : TS :

x @ l, : pl, q P ^pl, q P

{ Anidado } , l, :

TS

: P.l. y

{ Denici on 2.10 con P invariante }

Por lo tanto es un invariante inductivo m as fuerte que P y naliza la prueba del teorema. l El teorema sirve como regla para establecer si un predicado P : PredL es un invariante: P es invariante si encuentro un invariante inductivo m as fuerte. Esta regla es correcta y relativamente completa [BBM97, p ag. 3]. A partir de este u ltimo teorema podemos formular una denici on alternativa de invariante: Denici on 2.15 (Invariante) . Dado un sistema de transiciones TS  pL, S , , q un predicado P es invariante del mismo cuando exista un predicado tal que se cumple 1. es un invariante inductivo, 2.

P.

Si solo se cumple 1. es un invariante inductivo candidato y 2.

entonces P ser a llamado invariante candidato.

Un ejemplo de invariante inductivo para cualquier sistema de transiciones es el predicado True (tambi en es un invariante a secas); este predicado cumple trivialmente las condiciones de la denici on 2.12 pero no sirve de mucho al momento de vericar si un predicado arbitrario P es invariante. Esto es debido a que por la denici on anterior debe vericarse True P y por lo tanto lo u nico que podemos probar es que True es un invariante.

2.3

Invariantes y puntos jos

Planteada la pregunta si un predicado P es un invariante, a partir de la u ltima observaci on puede percibirse que el problema reside en la posibilidad de encontrar un invariante inductivo lo sucientemente fuerte. En esta secci on veremos como se pueden caracterizar distintos tipos de invariantes inductivos seg un su fortaleza apoy andonos en la teor a de puntos jos desarrollada en la secci on 2.1.

48

CAP ITULO 2. INVARIANTES

2.3.1

Propagaci on hacia adelante

Seg un denici on 2.15 si queremos probar la invariancia de predicado P podr amos intentar encontrar el predicado m as fuerte tal que 1.

2. SP. .

Y SP. .

y con el mismo intentar probar la condici on nes pueden conjugarse en una equivalente:

P . Las dos primeras condicio ,

por lo tanto lo que debemos encontrar es el predicado m as fuerte que cumpla esta u ltima condici on. Observando la parte izquierda de esta ecuaci on, denamos la funci on sobre el reticulado pPredL , q F , .X . 

Y SP. .X

de forma tal que la u ltima ecuaci on pueda escribirse en la forma del pre-punto jo F , . . Por lo tanto lo que queremos encontrar es el menor predicado tal que esta u ltima ecuaci on se cumpla, es decir queremos encontrar el menor pre-punto jo de la on existe ya que PredL funci on F , en el reticulado. El resultado de la ecuaci es un reticulado completo y adem as por teorema 2.7 (Knaster-Tarski) coincide con el menor punto jo de F , : .F ,

 x X

: F , .X

X:

Por lo tanto el invariante inductivo que intentamos encontrar es justamente el on .F , P menor punto jo .F , . Solo resta ver si se cumple la condici para comprobar si P es un invariante. A partir de este desarrollo introduciremos la siguiente denici on y teorema. Denici on 2.16 (Propagaci on hacia adelante) . Dado un sistema de transiciones TS  pL, S , , q deniremos el transformador F , : PredL PredL como F , .X . 

Y SP. .X

Este transformador es positivamente disyuntivo por lo que seg un teorema 2.6 es \-continuo y mon otono. Aunque SP es universalmente disyuntivo el nuevo transformador no hereda esta propiedad ya que F , .False  (no es estricto). Lema 2.17 Dado un sistema de transiciones TS inductivo. .  pL, S , , q, .F , es un invariante

n Demostracio .F , es pre-punto jo de F , .  { Denici on de punto jo } F , .p.F , q

.F ,

2.3. INVARIANTES Y PUNTOS FIJOS

49

 

{ Denici on de F , }

Y SP. .p.F , q .F , .F , .F ,
l

{ L ogica de predicados }

SP. .p.F , q

{ Denici on 2.12 } .F , es un invariante inductivo

Lema 2.18 . Dado un sistema de transiciones TS  riante inductivo.

pL, S , , q, .F , es el menor inval

n Demostracio Sea un invariante inductivo del sistema. Entonces y SP. . Por nimo de los lo tanto es un pre-punto jo de F , . Como .F , es el m pre-puntos jos entonces es menor que . l Teorema 2.19 . Dado un sistema de transiciones TS  pL, S , , q, un predicado P sobre el l mismo es invariante si y solo si se cumple .F , P . n Demostracio La demostraci on de este teorema se deriva de los lemas anteriores y el teorema 2.14. l as fuerte del sistema de Notar que seg un este teorema .F , es el invariante m transiciones. nmo de los pre-puntos jos puede ser La denici on de .F , como el engorrosa al momento de intentar calcularlo ya que al menos habr a que obtener todos los pre-puntos jos del transformador F , . Pero, ya que PredL es un cpo podemos aplicar el teorema 2.8 y presentarlo como l mite de una secuencia numerable de predicados: .F ,

@  i

:iP

N:

i F , .False

Vamos a denominar la secuencia en cuesti on como 0 , 1 , denida como . n n  F on n1  F , .n . Mostraremos , .False. Ver que con esta denici a partir de ella cual es el signicado de aquel l mite. El primer elemento de la secuencia es el m nimo elemento False del reticulado pPredL , q. Veamos el segundo:

 

1 { Denici on de 1 } F , .False { Denici on de F , }

Y SP. .False

50

CAP ITULO 2. INVARIANTES

 

{ SP es estricto }

Y False

{ False es el menor elemento del reticulado } .

Por lo tanto el segundo elemento de la secuencia es el conjunto de conguraciones iniciales . El tercer elemento es claramente 2  Y SP. . lo cual nos dice que este resultado es el conjunto de conguraciones iniciales m as las alcanzables despu es de un paso de ejecuci on del sistema de transiciones. Veamos el cuarto elemento de la secuencia: 3

   

{ Denici on de 3 } F , .2 { Denici on de F , }

Y SP. .2 Y SP. .p Y SP. .q Y SP. . Y pSP. q2 .


.

{ Denici on de 2 }

{ Disyuntividad de SP }

Con lo cual 3 es conjunto de conguraciones iniciales m as las alcanzables despu es de uno o dos pasos de ejecuci on del sistema de transiciones (teorema 1.29, p ag 30). Puede demostrarse f acilmente por inducci on que n1

@  Y i

: 0 i n : pSP. qi .

es decir n1 es el conjunto de conguraciones iniciales m as las alcanzables durante n pasos de ejecuci on. Adem as, a partir de esta ecuaci on, la secuencia forma una cadena ascendente comenzando desde False: False , p0 q F , p1 q F , p2 q lo omoon F loooomoooon loooomoooon loooomoooon
0 1 2 3

El l mite de esta secuencia existe (es .F , ) y coincide el conjunto de conguraciones alcanzables desde en cualquier n umero de iteraciones del sistema de transiciones. Ejemplo 2.20 Bajo esta perspectiva analicemos el sistema de transiciones 2.1 correspondiente al programa 1.1 (p ag. 18) formulado en el cap tulo anterior:

2.3. INVARIANTES Y PUNTOS FIJOS Grafo de transiciones 2.1

51 Programa 1.1

tN 0u
l0

0 : n : 0

l1

1 :

nN

n : n 1

2 :

nN

skip

l2

El predicado 0 es el m nimo del reticulado False o utilizando la notaci on de listas 0  rfalse, false, falses. Obtengamos el siguiente predicado de la cadena:

   

1 { Denici on de 1 } F , .False { Denici on de F , }

Y SP. .False Y False

{ SP es estricto }

{ False es m nimo del reticulado } .

Por lo tanto 1

 . Veamos el siguiente elemento de la cadena:

   

2 { Denici on de 2 y F , }

Y SP. .1

{ Resultado anterior sobre 1 }

Y SP. .

{ Notaci on en PredL como lista. Denici on de SP (ver ejemplo 1.17) }

rN 0, false, falses Y rfalse, sp.0 .pN 0q Y sp.1 .false, falses

{ Denici on de sp. sp es estricto }

rN 0, false, falses Y rfalse, pN 0 ^ n  0q Y false, falses  { \ en Pred y PredL . Aritm etica } rN 0, n  0 ^ n N, falses

52

CAP ITULO 2. INVARIANTES

Este resultado muestra que 2 denota las conguraciones que se alcanzan despu es ejecutar la sentencia n : 0 (el primer paso de ejecuci on) m as las conguraciones iniciales en . Calculemos ahora 3 : 3

  

{ Denici on de 3 y F , }

Y SP. .2 Y SP. .rN 0, N 0 ^ n  0, falses

{ Resultado anterior sobre 2 }

{ Notaci on en PredL como lista. Denici on de SP }

rN 0, false, falses Y rfalse, sp.0 .pN 0q Y sp.1 .pN 0 ^ n  0q, sp.2 .pN 0 ^ n  0qs 
{ Denici on de sp }

rN 0, false, falses Y rfalse, pN 0 ^ n  0q Y pN 0 ^ n  1q, N  0 ^ n  0s 


{ L ogica de predicados, aritm etica }

rN 0, false, falses Y rfalse, 0 n 2 ^ n N, n  0 ^ n  N s  { \ en PredL } rN 0, 0 n 2 ^ n N, n  0 ^ n  N s


Este resultado muestra que 3 representa las conguraciones en el estado inicial m as las alcanzables durante dos iteraciones del bucle. Por inducci on se puede probar que i2

 rN 0, 0 n i 1 ^ n N, 0 n i ^ n  N s

Claramente este conjunto enumerado de f ormulas forma una cadena ascendente en PredL . Calculando el l mite x i : i P : i y obtenemos el menor punto jo

.F ,

 rN 0, 0 n N, 0 n  N s

Este resultado muestra que en la locaci on l1 el programa 2.1 tiene como invariante m as fuerte a 0 n N y en la locaci on l2 a 0 n  N . De esta u ltima observaci on y el teorema 2.19 se deduce que cuando el programa termina se cumple n  N .

2.3. INVARIANTES Y PUNTOS FIJOS

53

Por u ltimo, con este resultado podemos anotar el programa 1.1 (p ag. 18) con el nuevo invariante: Programa 2.1 l0 : tN Programa 1.1 anotado

0u n : 0; l1 : t0 n N u do n N n : n 1
l2 : tn  N u od

2.3.2

Propagaci on hacia atr as

Otra estrategia para probar la invariancia de un predicado puede derivarse tomando la denici on 2.15 (p ag. 47) desde otra perspectiva. Dado un predicado P intentaremos encontrar un predicado tal que verique 1. 2.

WLP. . P.

Para corroborar si P es un invariante restar a vericar . Sin esta condici on es solo un invariante inductivo candidato. Notar que esta condici on ser a necesaria si es el predicado m as d ebil que verica las condiciones 1 y 2. Las mismas pueden conjugarse en una equivalente:

X WLP. .

por lo tanto lo que debemos encontrar es el predicado m as d ebil que cumpla esta u ltima ecuaci on. A partir de la parte derecha, denamos la funci on sobre el reticulado pPredL , q B ,P .X .  P

X WLP. .X
.

de forma tal que la u ltima ecuaci on puede escribirse como

B ,P .

Como PredL es un reticulado completo, haciendo el an alisis dual del transformador de propagaci on hacia adelante podemos deducir que el m aximo punto jo de la ecuaci on existe y es el m aximo de los pos-puntos jos de B ,P : .B ,P

 x X

:X

B ,P .X :

por lo tanto el mismo es el invariante candidato que deseamos encontrar. A partir de este desarrollo introduciremos la siguiente denici on y teorema.

54

CAP ITULO 2. INVARIANTES

Denici on 2.21 (Propagaci on hacia atr as) . Dado un sistema de transiciones TS  pL, S , , q y un predicado P : PredL sobre el mismo deniremos el transformador B ,P : PredL PredL como B ,P .X .  P

X WLP. .X

Este transformador es positivamente conjuntivo por lo que seg un teorema 2.6 es [-continuo y mon otono. Aunque WLP es universalmente conjuntivo B ,P no hereda esta propiedad ya que B ,P .True  P (es interrumpible). El siguiente lema muestra que el m aximo punto jo .B ,P es solo un invariante inductivo candidato. Lema 2.22 . Dado un sistema de transiciones TS  pL, S , , q, .B ,P es un invariante inductivo candidato. l n Demostracio .B ,P es pos-punto jo de B ,P .  { Denici on de punto jo }

.B ,P .B ,P .B ,P

B ,P .p.B ,P q

{ Denici on de B ,P }

P X WLP. .p.B ,P q

{ L ogica de predicados } { Denici on 2.12 }

WLP. .p.B ,P q
l

.B ,P es un invariante inductivo candidato.

Adem as, este invariante inductivo candidato es el mayor (m as d ebil) de los incluidos en la propiedad P (m as fuertes que P ): Lema 2.23 . Dado un sistema de transiciones TS  pL, S , , q, .B ,P es el mayor invariante inductivo candidato m as fuerte que P . l n Demostracio Sea un invariante inductivo candidato del sistema tal que P . Por ser invariante inductivo candidato se cumple WLP. . Por lo tanto es un pos-punto jo de B ,P y como .B ,P es el m aximo de los pos-punto jos entonces es mayor que . l Este u ltimo lema junto con la denici on de invariante 2.15 (p ag. 47) muestran que a partir de .B ,P solo se puede deducir que P es un invariante candidato. El siguiente teorema agrega la condici on necesaria para que el predicado sea un invariante: Teorema 2.24 . Dado un sistema de transiciones TS  pL, S , , q, un predicado P es invariante del mismo si y solo si se cumple .B ,P . l n Demostracio La demostraci on de este teorema se deriva de los lemas anteriores y el teorema 2.14. l

2.3. INVARIANTES Y PUNTOS FIJOS

55

Notar que a partir de este teorema .B ,P puede ser visto como el conjunto de estados iniciales m as d ebil a partir del cual el predicado P es invariante. De igual manera que con el m nimo punto jo .F , el m aximo punto jo .B ,P puede escribirse como el l mite de una cadena ya que PredL es un co-cpo: .B ,P Vamos a denominar la secuencia en cuesti on como 0 , 1 , donde denimos . n n  B . True . Ver que con esta denici on n1  B ,P .n . Mostraremos ,P a partir de ella cual es el signicado de aquel l mite. El primer elemento de la secuencia es el m nimo elemento True. Veamos el segundo:

@  i

:iP

N:

i B ,P .True

   

1 { Denici on de 1 } B ,P .True { Denici on de B ,P } P P P

X WLP. .True

{ WLP es no interrumpible }

X True

{ True es el mayor elemento del reticulado }

Por lo tanto el segundo elemento de la secuencia es el conjunto de conguraciones iniciales P . El tercer elemento es 2  P X WLP. .P lo cual nos muestra que es el conjunto de conguraciones que cumplen P y desde las cuales si el programa termina lo hace a alguna conguraci on en P . El cuarto elemento de la secuencia es:

   

3 { Denici on de 3 } B ,P .2 { Denici on de B ,P } P X WLP. .2 { Denici on de 2 } P P

X WLP. .pP X WLP. .P q

{ Conjuntividad de WLP }

X WLP. .P X pWLP. q2 .P

Con lo cual 3 es conjunto de conguraciones que cumplen P y desde las cuales si el programa termina en una o dos iteraciones lo hace hacia alguna en P . Puede demostrarse por inducci on que n1

@ P X i

: 0 i n : pWLP. qi .P

por lo tanto n1 es el conjunto de conguraciones que cumplen P y desde las cuales si el programa termina durante n pasos de ejecuci on lo hace a alguna n en P . Como n  B . True esta misma ecuaci o n puede escribirse como ,P
n B ,P .True 

@ i : 0 i n : pWLP. qi.P D

56

CAP ITULO 2. INVARIANTES

A partir de estas ecuaciones se puede ver que la secuencia forma una cadena descendente comenzando desde True: True B ,P p0 q B B ,P p2 q ,P p1 q loooomoooon lo omoon loooomoooon loooomoooon
0 1 2 3

El l mite de esta secuencia existe y es el conjunto de conguraciones desde las cuales si el programa termina en cualquier n umero de iteraciones lo hace hacia alguna en P . Cabe agregar que como los elementos de la secuencia son mayores al invariante inductivo candidato .B ,P , por denici on 2.15 (p ag. 47) estos son invariantes candidatos. Solo si se verica .B ,P ser an adem as invariantes a secas (no necesariamente inductivos). Ejemplo 2.25 Bajo esta nueva perspectiva analicemos el mismo sistema de transiciones 2.1 (p ag. 51). En este ejemplo intentaremos demostrar que la propiedad n  N se . cumple al nalizar el programa, es decir P  rTrue, True, n  N s es invariante del programa (n  N se cumple en l2 ). En este caso el predicado 0 es el m aximo del reticulado True o utilizando la notaci on de listas 0  rtrue, true, trues. El siguiente elemento 1 de la cadena es P como vimos en el desarrollo anterior. Calculemos 2 :

   

2 { Denici on de 2 y B ,P } P X WLP. .1 { Resultado anterior sobre 1 } P

X WLP. .P

{ Notaci on en PredL como lista. Denici on de WLP } { Denici on de wlp. wlp es no interrumpible }

r true, true, n  N s X r true, wlp.1 .true X wlp.2 .pn  N q, true s

r true, true, n  N s X r true, true X n N n  N, true s  { [ en Pred y PredL . Aritm etica } r true, n N, n  N s

Este resultado muestra que 2 son las conguraciones desde las cuales durante un paso de ejecuci on se alcanza el conjunto de estados n  N . Calculemos ahora 3 :

  

3 { Denici on de 3 y B ,P } P X WLP. .2 { Resultado anterior sobre 2 } P

X WLP. .r true, n N, n  N s

r true, true, n  N s X r wlp.0 .pn N q, wlp.1 .pn N q X wlp.2 .pn  N q, true s

{ Notaci on en PredL como lista. Denici on de WLP }

2.3. INVARIANTES Y PUNTOS FIJOS

57

 

r true, true, n  N s X r N 0, n N n 1 N X n N, true s


{ L ogica de predicados, aritm etica }

{ Denici on de wlp }

r true, true, n  N s X r N 0, n N, true s  { [ en PredL } r N 0, n N, n  N s


4

Este resultado muestra que si comienzo el programa en alguna conguraci on N 0 si el programa termina en tres pasos lo hace en P . Calculemos ahora 4 :

   

{ Denici on de 4 y B ,P } P P

X WLP. .3

{ Resultado anterior sobre 3 }

X WLP. .r N 0, n N, n  N s

{ Notaci on en PredL como lista. Denici on de WLP }

r true, true, n  N s X r wlp.0 .pn N q, wlp.1 .pn N q X wlp.2 .pn  N q, true s


{ Demostraci on anterior }

r N 0, n N, n  N s Por lo tanto 4  3 con lo cual todos lo elementos de la cadena son iguales


a 3 y hemos alcanzado el punto jo .B ,P : .B ,P

 r N 0, n N, n  N s

Para comprobar que P es un invariante resta vericar es solo un invariante candidato) o en notaci on de listas

.B ,P

(sin esto P

r N 0, false, falses r N 0, n N, n  N s
lo cual es claramente verdadero. Por u ltimo, con este resultado podemos anotar el programa 1.1 (p ag. 18) con el nuevo invariante: Programa 2.2 l0 : tN Programa 1.1 anotado

0u n : 0; l1 : tn N u do n N n : n 1
l2 : tn  N u od

58

CAP ITULO 2. INVARIANTES

Cabe remarcar que para realizar esta anotaci on no fue necesario calcular el l mite de una cadena innita, como lo hicimos en el ejemplo 2.20 (p ag. 50), ya que en 3 se alcanza el punto jo.

2.3.3

Propiedades

Como hemos visto, dado un sistema de transiciones, el m nimo punto jo .F , caracteriza de forma exacta las conguraciones alcanzables, mientras que dado un predicado P el m aximo punto jo .B ,P colecta la m nima informaci on necesaria para probarlo. Con esta observaci on intuitiva en mente enunciaremos el siguiente teorema sobre la relaci on existente entre estos puntos jos. Teorema 2.26 . Dado un sistema de transiciones TS  pL, S , , q y un predicado P sobre el mismo las siguientes proposiciones son equivalentes: 1. 2. 3. 4.

.B ,P . .F , P . .F , .B ,P lP .B ,P

n Demostracio (1 3)

{ Lema 2.22 } .B ,P es un invariante inductivo. { Lema 2.18 } .F ,

(3

otesis .F , P 2) Por lemma 2.23 .B ,P P . Entonces por hip (2  4) Por teorema 2.19. (4  1) Por teorema 2.24.

.B ,P

La relaci on entre los distintos predicados es mostrada en el diagrama de la gura 2.1 (p ag. 59). donde las implicaciones horizontales est an dadas por las deniciones de los puntos jos. El teorema muestra que si alguna de las implicaciones hacia abajo (en el diagrama) es v alida las dem as tambi en lo son. Adem as el diagrama muestra que si P es un invariante entonces .F , es un subconjunto de .B ,P como muestra la gura 2.2 (p ag. 59). Otra relaci on interesante es la que muestra la dualidad entre ambos puntos jos: Teorema 2.27 (Dualidad entre puntos jos) . Dado un sistema de transiciones TS  pL, S , , q se cumple: .F ,

.B 1 ,

2.3. INVARIANTES Y PUNTOS FIJOS

59

Figura 2.1: Diagrama entre predicados cuando .F ,

lP .

.B ,P

Figura 2.2: Relaci on entre los puntos jos si PredL P .B ,P .F ,

lP .

n Demostracio Del teorema 1.23 (p ag. 27) se deduce la siguiente dualidad de los transformadores de propagaci on hacia adelante y atr as: F , .X

B 1 ,

X .

Utilizando este resultado se demuestra el teorema:

  

.F ,

x X

ag. 48 } { Denici on de .F , , p : F , .X

X:
1

{ Ley de Morgan } : F , .X { F , .X

 @

1, . X X : X { Cambio de variable X por Y } Y : B 1 ,


.Y

, @ X : BB

x X

X:
.

X }

 { Contrarec de la implicaci on } @ Y : Yproca D B , .Y : Y


1

Y : Y

60

CAP ITULO 2. INVARIANTES

{ Denici on de B ,P , p ag. 53 } .B 1 ,

2.3.4

M etodo de demostraci on de invariancia

En el ejemplo 2.25 vimos como la invariancia de un predicado puede ser demosi trada calculando el punto jo .B ,P si la secuencia tB ,P .Trueui0 converge. A continuaci on mostraremos la validez del m etodo desde otra perspectiva que lo relaciona al principio de inducci on. Esto nos permitir a derivar su implementaci on adem as de explorar las limitaciones que posee. La denici on 2.10 conceptualiza la noci on de invariante como un predicado que se cumple en todas las conguraciones durante la ejecuci on de un programa: . dado un sistema de transiciones TS  pL, S , , q un predicado P es invariante cuando se verica

x@
1. P C , 2. X

, l, :

TS

^pl, q P :

P.l. y .

Denamos de forma inductiva el conjunto de predicados C : PredL como la menor conjunto tal que

Bool

P C entonces SP .X P C .

Por lo visto en la secci on 1.7 (p ag. 28) el predicado SP. .Q puede ser interpretado operacionalmente como el conjunto de conguraciones alcanzables en un paso de ejecuci on desde Q SP. .X

 pl1 , 1 q | D l,

: X.l. : pl, q ; pl1 , 1 q

D(

por lo tanto para demostrar la invariancia de P como fue conceptualizada en la denici on 2.10 se puede probar que el predicado contiene todos los conjuntos denidos en C , esto es

x@X x@X

:X

PC:

Py

. El conjunto C junto con la relaci on lineal X R Y  SP. .X  Y es bien fundado por lo que se puede probar la propiedad anterior por inducci on: :X

PC:

Py PC: PC:
X

{ Inducci on }

P ^ x@X P ^ x@X

:X

P SP. .X P y P X WLP. .P y

{ Dualidad SP/WLP, propiedad 1.22 (p ag. 27) } :X X

{ Monoton a }

P ^ P WLP. .P

2.3. INVARIANTES Y PUNTOS FIJOS

61

De esta forma, a partir del principio de inducci on se puede deducir la siguiente regla para probar invariancia:

P ^ P WLP. .P lP

Notar que esta regla impone justamente las condiciones para que P sea un invariante inductivo (denici on 2.12) lo cual no siempre sucede (ver ejemplo 2.25). Adem as esta regla muestra cierta analog a con el principio de inducci on matem atica: para probar la invariancia de un predicado primero se debe probar el caso base con el cual se cumple inicialmente y el paso inductivo WLP. . indica que si el predicado se verica en alg un paso de ejecuci on, entonces se satisface en el siguiente. Por esto mismo llamamos a invariante inductivo. A partir de este desarrollo deduciremos una regla nueva para probar invariancia en base a otro principio de inducci on denominado inducci on k o k -inducci on . En el mismo se fortalece el caso base y se debilita el paso inductivo: dado un natural k jo, si quiero probar la validez de cierta propiedad P.i para todo natural i primero se prueba P.0 ^ ^ P.pk 1q (casos bases) y, suponiendo P.j ^ ^ P.pj k 1q se demuestra P.pj k q. Formalmente:

x @ i : 0 i k : P.i y ^ x @ i : 0 i : x @ j : i j i k : P.j y P.pi kq y Notar que cuando k  1 es el principio de inducci on est andar.
De igual manera, este principio de inducci on puede utilizarse para obtener una regla de demostraci on de invariancia:

x@i

: 0 i : P.i y

{ k -inducci on }

x@X

:X

PC:

Py

{ k -inducci on } @ D @ i : 0 i k : pSP. qi . P ^ x @ X@ : X P C : D D @ i : 0 i k : pSP. qi .X P pSP. qk .X P { Dualidad SP WLP, propiedad 1.22 (p ag. 27) } @ D i @ i : 0 i k : pWLP. q .P

i : 0 i k : pWLP. qi .P ^ x @ X : X P@ C :i : 0 i k : pWLP. qi.P D X pWLP. qk .P D X { Monoton a } @ D i : 0 i k : pWLP. qi .P @ D ^ i : 0 i k : pWLP. qi .P pWLP. qk .P


{ C alculo de predicados }

^ x @ X@ : X P C : @i : 0 i k :

pWLP. qi .P X pWLP. qk .P

62

CAP ITULO 2. INVARIANTES

} @ D i : 0 i k : pWLP. qi .P @ D ^ i @: 0 i k : pWLP. qi .P D i : 0 i k 1 : pWLP. qi .P


{ Monoton a
n { Caracterizaci on de B ag. 55) } ,P .True (p

k B ,P .True k1 k ^ B ,P .True B ,P .True

De esta forma, a partir del principio de k -inducci on se puede deducir la siguiente regla para probar invariancia:
k 1 k k B ,P .True ^ B ,P .True B ,P .True lP

k 1 k Notar que la condici on B ,P .True B ,P .True indica que la secuencia i k tB as esta condici on es ,P .Trueui0 converge en k pasos a B ,P .True. Adem k k k . True P y junto con equivalente a B ,P .True WLP. .pB ,P .Trueq ^ B ,P k k . True es un invariante inductivo . True se deduce que B la condici on B ,P ,P m as fuerte que P . Si esto sucede diremos que P es un k -invariante . Es f acil de ver que si P es k -invariante entonces tambi en es m-invariante para todo m k . A partir de este resultado podemos derivar el siguiente m etodo de demostraci on de invariancia: para k desde 0 intentamos vericar si P es un k -invariante. k Si la condici on B ,P .True (caso base k -inductivo) no es verdadera se puede concluir que P no es invariante ya que entonces tampoco lo ser a .B ,P (rek . True ya que es l mite de la cadena descendente) y no cordar que .B ,P B ,P se cumplir a la condici on del teorema 2.24. Si esta condici on se cumple entonces k 1 k se procede a vericar B ,P .True B ,P .True (paso k -inductivo). Si esta proposici on es verdadera el m etodo termina concluyendo que P es un k-invariante. Si no se cumple se procede a intentar demostrar si P es un pk 1q-invariante inductivo. El m etodo se puede esquematizar con el programa 2.3.

Programa 2.3 es invariante ( P , : PredL ; B ,P :xX P X WLP. .X y; Bk : True; do Bk ^ pBk B ,P .Bk q Bk : B ,P .Bk od; return Bk

Demostraci on de k -invariancia

: TranL,S ) : Bool

Una pregunta importante es si el m etodo termina para cualquier sistema de transiciones e invariante candidato P . Claramente, esto es equivalente a preguntarnos si existe alg un k tal que por k -inducci on se puede demostrar la invariancia. Suponiendo que poseemos m etodos de decisi on completos para resolver las relaciones de orden entre los predicados de la guarda del bucle, las causas

2.3. INVARIANTES Y PUNTOS FIJOS

63

k de terminaci on son la no vericaci on de la condici on B ,P .True en el caso k 1 k que P no sea invariante, o la vericaci on de B ,P .True B ,P .True para el caso que lo sea. Analicemos el primer caso: supongamos que P no es invariante y se k cumple @ k : 0 k : B ,P .True . Comenzando de esta u ltima suposici on obtenemos la siguiente equivalencia.

  

@@k

:0k:

k B ,P .True

{ C alculo de predicados }

k : 0 k : B ,P .True { Caracterizaci on de .B ,P }

@ k

.B ,P

lP

{ Teorema 2.24 }

Con lo cual hemos llegado a una contradicci on. A partir de este razonamiento por k el absurdo se puede concluir que existe k tal que no se cumple B ,P .True y esto quiere decir que en el caso que P no sea invariante el m etodo termina. La otra posibilidad es que el m etodo no termine debido a que nunca se k1 k . True B cumple la condici on B ,P .True para todo k ya que la cadena des,P i . True u es innita. Lamentablemente esto puede suceder a un cendente tB i0 ,P para sistemas de transiciones muy simples. El programa 2.4 es un ejemplo de este fen omeno. Programa 2.4 Contraejemplo de terminaci on

tn  1u l0 : do n 0 n : n 1 od l1 : tn  0u

tn  1u
l0

n 0 n : n 1

n 0 skip l1

k Sobre el mismo se puede calcular B ,P .True:

B ,P .True 2 B ,P .True 3 B ,P .True 4 B ,P .True . . .

   

rTrue, n  0s rn  0 , n  0 s rn  0 ^ n  1, n  0s rn  0 ^ n  1 ^ n  2, n  0s

k 1 Se puede demostrar por inducci on que B ,P .True  rn 0 _ n k, n  0s. . Todos los elementos de esta secuencia son implicados por  rn  1, Falses pero la secuencia no converge en un n umero nito de pasos y su nmo es rn 0, n  0s (n  0 al terminar es invariante).

64

CAP ITULO 2. INVARIANTES

En el desarrollo de esta secci on nos hemos enfocado en el m etodo para probar invariancia basado en el transformador de propagaci on hacia atr as. Como se mostr o en el ejemplo 2.20 tambi en es posible utilizar el transformador de propagaci on hacia adelante para calcular el m nimo punto jo .F , . El m etodo es esquematizado en el programa 2.5. Programa 2.5 M etodo utilizando propagaci on hacia adelante

es invariante1 ( P , : PredL ;

F , :xX Y SP. .X y; Fk : False; do Fk P ^ pF , .Fk Fk q Fk : F , .Fk od; return Fk P

: TranL,S ) : Bool

Como veremos el m etodo puede ser implementado tambi en con el programa 2.3 en la forma es invariantep , P, 1 q: reemplazando P , y por , P y 1 en aquel programa, el c alculo de B 1 , .X es equivalente a calcular F , . X (por teorema 2.27), por lo que la variable Bk almacenar a Fk . De esta manera el programa anterior calcular a la misma cadena negada. Adem as, con estos remplazos la guarda del bucle es p P q Bk ^ pBk B 1 , .Bk q lo cual, mediante el razonamiento anterior, es equivalente a Fk P ^ pF , .Fk Fk q. De tal forma, la dualidad de los m etodos es corroborada por el anterior teorema 2.27 obteniendose la siguiente equivalencia: es invariante1 pP, , q

 es invariantep

, P, 1 q .

El u ltimo m etodo tiene la ventaja de poder obtener el invariante m as fuerte del sistema de transiciones independientemente de la propiedad P que se quiera vericar: si ya obtuvimos el invariante .F , , este puede reutilizarse para probar la invariancia de cualquier propiedad P 1 vericando la validez de la implicaetodo parece promisorio, su principal desventaja ci on .F , P 1 . Aunque el m es que el c alculo del transformador SP involucra la aparici on de cuanticadores existenciales al ser aplicado a asignaciones guardadas no invertibles1 , como se muestra en el ejemplo 1.3 (p ag. 11). Esto complica la demostraci on autom atica de las implicaciones que aparecen en el m etodo como se explica en [TRSS01]. Cuando se utiliza la propagaci on hacia atr as este fen omeno no aparece debido a la eliminaci on que se produce del cuanticador universal al ser aplicado sobre este tipo de sentencias (como vimos en el ejemplo 1.5, p ag. 12). Otra debilidad del m etodo es que suele no converger en casos donde el m etodo de propagaci on hacia atr as si lo hace. Esto se debe a que por lo general los programas no alcanzan todos los estados posibles en una cantidad nita de iteraciones. El fen omeno es mostrado en los ejemplos 2.20 y 2.25 y adem as es conrmado en [BBM97]. Por lo tanto para su implementaci on efectiva se
1 Como vimos en la secci on 1.5.2 (p ag. 21) estas sentencias caracterizan los sistemas de transiciones ejecutables.

2.3. INVARIANTES Y PUNTOS FIJOS

65

hace necesaria la aplicaci on de t ecnicas de interpretaci on abstracta que ser an explicadas en el cap tulo siguiente. Por estas razones nuestro trabajo emplea principalmente el primer m etodo.

66

CAP ITULO 2. INVARIANTES

Cap tulo 3

Generaci on de invariantes lineales


i Como vimos en el cap tulo anterior la secuencia tF , .Falseui0 suele ser innita por lo que el m etodo esquematizado en el programa 2.5 puede no terminar. Una forma posible de atacar este problema es por medio de la teor a de Interpretaci on Abstracta [CC77, CC92]. A grandes rasgos esta base te orica presenta distintos marcos de trabajo con los cuales se aproxima la sem antica de strongest postcondition presentada en la secci on 1.6 (p ag. 22) mediante transformadores sobre otros dominios distintos a PredL . De esta manera se lleva el problema a dominios donde existen procedimientos que permiten obtener propiedades de forma autom atica. A continuaci on explicaremos el marco de trabajo utilizado dentro de la teor a general de interpretaci on abstracta. Un resumen y an alisis de todos los marcos de interpretaci on abstracta puede encontrarse en [CC92].

3.1

Interpretaci on Abstracta

De forma general, la interpretaci on abstracta puede denirse como una serie de m etodos desarrollados a partir de distintos marcos de trabajo para dise nar aproximaciones de la sem antica. Los mismos pueden ser utilizados para extraer informaci on de los programas con la nalidad de obtener algunas de sus propiedades de forma autom atica. Debido al objetivo de mecanizaci on en la extracci on de propiedades, las respuestas suelen ser aproximadas ya que el problema general es indecidible, con lo cual los m etodos desarrollados aunque correctos suelen ser incompletos. El marco de trabajo de interpretaci on abstracta utilizado en esta tesis consiste en la identicaci on de cuatro entidades del problema: dominio sem antico concreto, dominio sem antico abstracto, funci on de concretizaci on y operador de widening.

3.1.1

Dominio sem antico concreto

Dentro del marco general de interpretaci on abstracta, un dominio sem antico concreto se identica a partir de una abstracci on de la sem antica est andar de los programas que nos permita focalizarnos en las propiedades que nos interesan. 67

68

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

Generalmente la sem antica est andar esta dada por el conjunto de trazas de un sistema (sem antica operacional ), en el sentido desarrollado en la secci on 1.7 (p ag. 28), o por su sem antica denotacional. Nos concentraremos en el primer punto de vista ya que dentro del mismo se desarroll o nuestro trabajo1 . Ejemplo 3.1 Como vimos en la secci on 2.3.1 (p ag. 48) sobre PredL se pueden caracterizar propiedades de invariancia acordes a la sem antica operacional (sem antica de trazas ) a trav es del punto jo del transformador de propagaci on hacia adelante. En este caso nuestra sem antica est andar es la sem antica operacional y el dominio sem antico concreto ser a PredL . Notar adem as que la sem antica generada por el transformador resulta una abstracci on de la sem antica de trazas ya que nos concentramos solo en las propiedades de invariancia de los sistemas, dejando de lado otras propiedades temporales. l Teniendo este ejemplo en mente, el marco de interpretaci on abstracta supone la existencia de una funci on sem antica concreta f : P P donde P es el dominio sem antico concreto y cuyo m nimo punto jo describe las propiedades de invariancia del sistema. Para la existencia del punto jo es necesario que el dominio sem antico sea una de las estructuras se naladas en la secci on 2.1 (p ag. 39). Ejemplo 3.2 Como ya mencionamos, un dominio sem antico concreto puede ser PredL y la funci on sem antica concreta ser a F , : PredL PredL . En este caso el dominio es un cpo y la funci on sem antica es \-continua lo que garantiza la existencia del m nimo punto jo. l

3.1.2

el invariante obtenido por el m nimo punto jo de la funci on sem antica concreta. El poset ser a denominado dominio sem antico abstracto y deber a tener m nimo . elemento K7 . A partir de aqu usaremos la notaci on 7  pP 7 , 7 q para denotar . el dominio abstracto y  pP , q para el concreto Dado el dominio sem antico concreto pP , q, a partir del dominio abstracto pP 7 , 7 q se proceder a a denir una funci on mon otona e inyectiva : P 7 P denominada funci on de concretizaci on la cual permite derivar una noci on de correcci on del sistema en el dominio abstracto, esto es . sea un programa con f : P . x7

Dominio sem antico abstracto y abstracci on El siguiente paso consiste en denir un poset pP 7 , 7 q donde pueda aproximarse

entonces x7 expresa una propiedad abstracta v alida del programa.

P P 7 con .f .x7 (.f es el m nimo punto jo de f )

P su funci on sem antica concreta y

Notar adem as que por ser mon otona, si un elemento del dominio abstracto es v alido para un sistema entonces cualquier elemento mayor (en el orden 7 ) tambi en lo es.
1 En [CC92] puede encontrarse un ejemplo de utilizaci on de la sem antica denotacional como sem antica est andar.

ABSTRACTA 3.1. INTERPRETACION

69

La funci on de concretizaci on ser a la base con la cual se dene la aproximaci on de los elementos del dominio concreto. En este sentido, cuando x P P y x7 P P 7 cumplan x .x7 diremos que x7 es una abstracci on de x. Adem as la terna p, 7 , q ser a llamada simplemente abstracci on.

3.1.3

Funci on sem antica abstracta

Una vez denida la funci on de concretizaci on se procede a aproximar la funci on sem antica concreta. Para ello utilizaremos el siguiente concepto. Denici on 3.3 (Funci on sem antica abstracta) Dada una abstracci on p, 7 , q con la funci on sem antica concreta f : P P , una funci on mon otona f 7 : P 7 P 7 ser a llamada funci on sem antica abstracta de f si

@ @ x, x7

:xPP

^ x7 P P 7 : x .x7 f.x .pf 7 .x7 q

Esta denici on formaliza la noci on de aproximaci on de la funci on sem antica concreta f por la funci on f 7 . En el diagrama 3.1 se esquematiza esta relaci on. Figura 3.1: Propiedad de la funci on sem antica abstracta x7
f7

f 7 .x7

.x7 x

.pf 7 .x7 q f.x

La ultima denici on es frecuentemente utilizada en la literatura [CC92, Mon00]. El siguiente lema muestra una caracterizaci on m as simple de la funci on sem antica abstracta. Lema 3.4 (Funci on sem antica abstracta) Dada una abstracci on p, 7 , q con la funci on sem antica concreta f : P P . Una funci on f 7 : P 7 P 7 es una funci on sem antica abstracta de f si y solo si para todo x7 P P 7 se cumple f.p.x7 q .pf 7 .x7 q. l n Demostracio () Por reexividad del poset pP 7 , q se cumple .x7 .x7 , entonces, utilizando la denici on anterior, f.p.x7 q .pf 7 .x7 q por ser f 7 una funci on sem antica abstracta.

70

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

() Supongamos x P P y x7

P P 7 tal que x .x7 , entonces

Por transitividad f.x .pf 7 .x7 q y por lo tanto f 7 es una funci on sem antica abstracta de f . l La idea general de este marco de interpretaci on abstracta es aproximar el punto jo .f de la funci on sem antica concreta calculando el l mite de la funci on f 7 en el dominio abstracto. Para ello utilizaremos el siguiente teorema. Teorema 3.5 . . Dada una abstracci on p, 7 , q con  pP , q un cpo, 7  pP 7 , 7 q un poset con m nimo elemento K7 , f : P P una funci on sem antica concreta \-continua y f 7 una funci on sem antica abstracta mon otona, entonces: 1. el supremo

f.x { Suposici on y f mon otona } f.p.x7 q { Hip otesis de caso de prueba } .pf 7 .x7 q

@ i : i P N : .pf 7piq.K7q D existe, y


.f

2. es mayor al m nimo punto jo de f , esto es

@ i

:iP

N : .pf 7piq.K7q D

n Demostracio 1. Por monoton a de f 7 y , el conjunto .pf 7piq .K7 q | i P es dirigido (es una cadena ascendente) por lo tanto como es un cpo, el supremo existe. 2. Primero demostremos por inducci on que f i .K .pf 7piq .K7 q para todo i P . El caso base se demuestra f acilmente ya que K .K7 por ser el m nimo elemento de .

N(

Para el paso inductivo supondremos f i .K .pf 7piq .K7 q. Por denici on 3.3 entonces se cumple f pi1q .K .pf 7pi1q .K7 q. Con esta demostraci on concluimos @ i : i P : f i .K .pf 7piq .K7 q con lo cual:

D N @ @ i : i P N : f i.K .pf 7piq.K7q D @ { Existencia y denici on de supremos en conjuntos dirigidos } @ DD @ i : i P N : f i .K j : j P N : .pf 7pjq .K7 q
@ { Denici n de supremo } D @ j : j P N : .pf 7pjq.K7q D i : i PoN : f i .K  { Punto jo de funciones continuas (teorema 2.8) } @ D .f j : j P N : .pf 7pj q .K7 q

Este teorema nos brinda un m etodo para aproximar en el dominio abstracto el m nimo punto jo .f similar al descripto en el programa 2.5 (p ag. 64): dada una funci on sem antica abstracta f 7 : P 7 P 7 de la concreta f , se comienza el proceso iterativo desde el m nimo abstracto K7 y se calcula la ca7 7 7 7p 2q 7 dena tK , f .K , f .K , u hasta que .pf 7pkq .K7 q sea igual a .pf 7pk1q .K7 q.

ABSTRACTA 3.1. INTERPRETACION

71

Notar adem as que como la funci on de concretizaci on es inyectiva y mon otona esta u ltima vericaci on puede realizarse sobre el dominio abstracto como f 7pk1q .K7 7 f 7pkq .K7 . Con esta u ltima modicaci on el m etodo puede esquematizarse con el programa 3.1. Programa 3.1 aproximar .f (f 7 : P 7 Aproximaci on de .f

7 :K7 ; Fk
do

P7 ) : P7

pf 7 .Fk7 7 Fk7 q 7 : f 7 .F 7 Fk k

od;

7 return Fk

Este m etodo presenta dos problemas: el procedimiento intenta calcular efectivamente el supremo i : i P : f 7piq .K7 el cual puede no existir ya que P 7 no es necesariamente un cpo. Adem as, aunque exista, el procedimiento puede no terminar debido a que la cadena tK7 , f 7 .K7 , f 7p2q .K7 , u puede ser innita. Ambos inconvenientes son atacados en la teor a de interpretaci on abstracta como veremos en la secci on siguiente.

3.1.4

Widening

Con el n de asegurar la convergencia del m etodo esquematizado en el programa 3.1 este marco de interpretaci on abstracta postula una manera de transformar la secuencia tK7 , f 7 .K7 , f 7p2q .K7 , u mediante la aplicaci on de un operador denido en el dominio sem antico abstracto. Denici on 3.6 (Operador de widenig) . Dado un dominio sem antico abstracto 7  pP 7 , 7 q, un operador binario : P 7 P 7 P 7 ser a llamado operador de widening si 1. para todo x, y : P 7 se cumple x 7 x y

7 x y

2. para toda cadena ascendente x0 7 x1 7 x2 7 en P 7 la cadena . 1 1 1 1 1 . x1 0 , x1 , x2 , denida como x0  x0 y xi1  xi xi1 converge en un n umero nito de pasos. l

1 1 1 Notar que as denida, x1 0 , x1 , x2 , es una cadena ascendente ya que xi por el punto anterior.

7 x1i1

Teorema 3.7 . . Dada una abstracci on p, 7 , q con  pP , q un cpo, 7  pP 7 , 7 q un poset con m nimo elemento K7 , f : P P una funci on sem antica concreta \-continua, f 7 : P 7 P 7 una funci on sem antica abstracta mon otona y : P 7 P 7 P 7 un operador de widening.

72

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

Sea adem as, la funci on g denida de forma recursiva: g7 : P 7 . g 7 .0  K7 . g 7 .pi 1q  g 7 .i f 7 .pg 7 .iq entonces: 1. Los elementos del conjunto g 7 .i | i P nita.

N( forman una cadena ascendente

2. La concretizaci on del m aximo de este conjunto es mayor o igual al m nimo punto jo de f , esto es .f

A . 7 i

:iP

N:

g 7 .i

n Demostracio 1. Veamos primero que el conjunto es una cadena ascendente:

 

g 7 .i 7 g 7 .pi 1q { Denici on de g 7 } g 7 .i 7 g 7 .i f 7 .pg 7 .iq { Denici on 3.6 de operador de widening } T

En consecuencia g 7 .i 7 g 7 .pi 1q, para todo i P , y como f 7 es mon otona tambi en se cumple f 7 .pg 7 .iq 7 f 7 .pg 7 .pi 1qq. Por lo tanto f 7 .pg 7 .0q 7 f 7 .pg 7 .1q 7 f 7 .pg 7 .2q 7

es una cadena ascendente. En la denici on de widening 3.6, reemplazando 7 .i se deduce que g7 .0 7 g7 .1 7 g7 .2 7 es xi por f 7 .pg 7 .iq y x1 por g i una cadena nita. 2. Veamos primero por inducci on que f 7piq .K7

7 g7 .i.

Caso base

f 7p0q .K7 7 g 7 .0 { Denici on de f 7 y g 7 }

K7 7 K7

{ Reexividad de T

Paso inductivo (Hip otesis inductiva f 7piq .K7 f 7pi1q .K7

7 g7 .i)

ABSTRACTA 3.1. INTERPRETACION

73

7 7 

f 7 .pg 7 .iq

{ Hip. Inductiva y f 7 mon otona } { Denici on 3.6 de operador de widening }

{ Denici on de g 7 } g 7 .pi 1q

g 7 .i f 7 .pg 7 .iq

En consecuencia, para todo i P se cumple f 7piq .K7 7 g 7 .i. A partir de este resultado se demuestra el segundo tem del teorema:

@ i : i P N : .pf 7piq.K7q D .@ j { Teorema 3.5 y transitividad de } @ j : j P N : g7.j D .f .


{ Supremo en cpo }

@ @ i : i P N : f 7piq.K7 7 g7.i D ( { g7 .i | i P N es una cadena nita } @ @ i : i P N : f 7piq.K7 7 @ j : j P N : g7.j D D { Monoton a de } @@i : i P N @ j : j P N : g7.j D D : .pf 7piq .K7 q .
:j

PN:

g 7 .j

D
l

A partir del resultado de este teorema se puede modicar el m etodo esquematizado en el programa 3.1 para aproximar .f . Este nuevo m etodo se presenta en el programa 3.2. Programa 3.2 aproximar .f (f 7 : P 7 Aproximaci on de .f

7 G7 k :K ;

P 7 , : P 7 P 7 P 7 ) : P 7
G7 kq

do

7 7 7 pG7 k f .Gk 7 7 7 G7 k : Gk f .Gk

return G7 k

od;

El m etodo calcula la cadena ascendente g 7 .0 7 g 7 .1 7 g 7 .2 7 del teorema anterior utilizando como funci on sem antica abstracta a f 7 . Seg un el teorema la cadena es nita por lo tanto el programa termina. Cabe agregar que en la pr actica, con el n de mejorar la aproximaci on de .f , se suele comenzar el programa sin aplicar el operador de widening durante un n umero jo de iteraciones. De all en m as se aplica el operador hasta que converja en la aproximaci on. Este m etodo es esquematizado en el programa 3.3.

74

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION Aproximaci on de .f

Programa 3.3 aproximar .f (f 7 : P 7 k : 0; do k

P 7 , : P 7 P 7 P 7 , M : N) : P 7

7 G7 k :K ;

7 7 M ^ pf 7 .G7 k Gk q 7 7 G7 k : f .Gk ; k : k 1
G7 kq

od; do

7 7 7 pG7 k f .Gk 7 7 7 G7 k : Gk f .Gk

od;

return G7 k

Mediante este programa se puede calcular una aproximaci on del m nimo punto jo de la funci on sem antica concreta f al cual denotaremos con p.f q7 . A partir del teorema 3.7 se puede demostrar .f .p.f q7 . Teniendo en mente la funci on sem antica concreta F , como mencionamos en el ejemplo 3.2, podemos enunciar el siguiente teorema el cual nos permite encontrar invariantes de forma autom atica: Teorema 3.8 (Generaci on de invariantes) . Dado un sistema de transiciones TS  pL, S , , q, una abstracci on p, 7 , q . . con  pPredL , q el dominio sem antico concreto y 7  pP 7 , 7 q un dominio sem antico abstracto. Sea adem as una funci on sem antica abstracta f 7 : 7 7 P P de la funci on sem antica concreta F , : PredL PredL , junto con un operador de widening : P 7 P 7 P 7 . Entonces, la concretizaci on de la aproximaci on de p.F , q7 obtenida por medio del algoritmo 3.3 cumple .F ,

.p.F , q7

y por lo tanto .p.F , q7 es un invariante de TS.

La demostraci on de este teorema se deduce, como ya dijimos, del teorema 3.7 y el teorema 2.19 (p ag. 49).

3.2

Poliedros convexos cerrados

En la secci on anterior vimos uno de los marcos de la teor a de interpretaci on abstracta, mediante el cual, aplic andolo a un dominio sem antico abstracto en particular, nos permite encontrar una aproximaci on del m nimo punto jo .F , en un sistema de transiciones. En esta secci on desarrollaremos el dominio abstracto utilizado en este trabajo el cual estar a basado en la teor a de poliedros convexos cerrados. Los poliedros cerrados son objetos matem aticos presentados generalmente como cuerpos geom etricos cuya supercie se compone por una cantidad nita de pol gonos. A su vez son convexos cuando para dos puntos pertenecientes a el, existe un segmento de recta interno al poliedro que los une. Esto es m as

3.2. POLIEDROS CONVEXOS CERRADOS

75

f acil de entender pensando en visibilidad entre puntos [Chv83]: en un poliedro convexo todo punto tiene en su campo de visi on a los otros puntos. Estas entidades matem aticas nos servir an para denir cierta clase de predicados sobre el espacio de estados: se puede pensar a cada variable del programa como una dimensi on de n con lo cual n ser a la cantidad total de variables que aparecen en nuestro programa y un punto en este espacio se identicar a con un estado. De esta forma un poliedro cerrado convexo representar a el conjunto de estados que encierra, o sea un predicado particular en Pred. En nuestro caso un programa se representa con un sistemas de transiciones . TS  pL, S , , q y sus propiedades se expresan como elementos en PredL . Extendiendo la idea del p arrafo anterior asociaremos un poliedro a cada locaci on en L con lo cual podremos representar de forma abstracta elementos de PredL . A continuaci on desarrollaremos la teor a b asica de poliedros convexos introducida a partir de dos de sus representaciones. Como veremos luego, el manejo de ambas representaciones en paralelo, permite mecanizar de manera mas simple las operaciones necesarias al momento de buscar aproximaciones de .F , sobre este dominio sem antico abstracto.

3.2.1

Representaci on algebraica

. De aqu en adelante, supondremos un espacio de estados  Var donde . Var  tx1 , , xn u es un conjunto nito de n variables. A continuaci on veremos una formalizaci on algebraica de la noci on intuitiva de poliedro vista al principio de esta secci on, la cual nos permitir a denotarlos a trav es de expresiones. Denici on 3.9 (Desigualdad lineal) . Dada una matriz la A  r ai | 1 i n s P 1n y un elemento b P , llamaremos a la expresi on i : 1 i n : ai xi b, o en forma matricial2 . i AX b con X  r x | 1 i n s, desigualdad lineal o simplemente desigualdad. l

R D

Denici on 3.10 (Semiespacio cerrado) El subconjunto de n formado por las soluciones de una desigualdad lineal ser a llamado semiespacio cerrado (o simplemente semiespacio) de n . Esto es, una desigualdad lineal AX b denotar a un semiespacio cerrado H denido por

.  tV P Rn | AV bu

Cuando la matriz la A es distinta de cero el semiespacio cerrado puede pensarse de manera intuitiva como el conjunto de puntos a un lado de un hiperplano perpendicular al vector denido por A. Denici on 3.11 (Convexo) Un conjunto C n es convexo si y solo si para cualesquier par de elementos del conjunto, el segmento que los une est a incluido en el mismo:

x @ X1 , X2

: X1

P C ^ X2 P C : x @

: P r0..1s : X1 p1 qX2

PCyy

2 Si pensamos a A como un vector en producto escalar A X b.

Rn la desigualdad puede tambi en escribirse con un

76

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

Los semiespacios cerrados son ejemplos de conjuntos convexos. Se puede demostrar que la propiedad de convexidad es preservada por intersecciones nitas (la intersecci on de dos conjuntos convexos es convexo) pero no por uniones (la uni on de dos conjuntos convexos no es necesariamente convexa). Con estas deniciones podemos formalizar el concepto de poliedro convexo cerrado. Denici on 3.12 (Poliedro convexo cerrado) Un poliedro convexo cerrado (o poliedro convexo o simplemente poliedro) ser a una intersecci on nita de semiespacios cerrados. l Al conjunto de todos los poliedros convexos cerrados en n se lo denotar a como Poly, donde la cantidad de variables n se sobreentender a del contexto. A partir de estas deniciones denotaremos un poliedro como una conjunci on de desigualdades lineales A1 X b1 ^ ^ Am X bm . La representaci on de un poliedro P : Poly por un conjunto de desigualdades se escribir a como P .  A1 X

b1 ^ ^ Am X bm

Al conjunto de desigualdades lineales utilizado para esta representaci on lo llamaremos sistema de restricciones lineales. Cabe agregar que para simplicar esta representaci on se pueden incluir igualdades lineales de la forma AX  b. De todas maneras, no es necesario incluirlas para denir un poliedro ya que se pueden reemplazar por la conjunci on de dos desigualdades. En este trabajo utilizaremos de forma frecuente la notaci on matricial para los sistemas de restricciones lineales: si pensamos a A1 , , Am como las las de una matriz A : mn y a b1 , , bm las componentes de un vector columna B : m , podemos denotar al poliedro como

tal que, si Aj

.  AX B r , .  r aj i | 1 i n s con j  1, , m, deniremos P . A  r aj i |1in^1j . X  r xi | 1 i n s y . B  r bj | 1 j m s .

ms

Cuando el vector de variables se deduzca del contexto denotaremos al poliedro tambi en con el par pA, B q, esto es P .  pA, B q
r

En particular el poliedro que representa todo n ser a denotado por un conjunto vac o de restricciones (m  0 en la forma matricial anterior).

3.2.2

Representaci on geom etrica

Como vimos en la secci on anterior una forma de representar poliedros convexos es mediante un conjunto de desigualdades lineales. En esta secci on veremos otra forma de representaci on de tipo geom etrica. Inicialmente presentaremos la terminolog a utilizada para denotar elementos de car acter geom etrico en n .

3.2. POLIEDROS CONVEXOS CERRADOS

77

Denici on 3.13 (Combinaci on lineal) . Sea V  tV 1 , , V p u un conjunto de vectores en n y a1 , , ap escalares en , un vector de la forma de la forma i : 1 i p : ai V i ser a llamado una combinaci on lineal de los vectores V . El conjunto vectores formado por todas las combinaciones lineales de V ser a llamado subespacio lineal generado por el conjunto de vectores. l

Denici on 3.14 (Envoltura c onica) . Dado un conjunto nito de vectores V  tV 1 , , V p u y 1 , , p escalares en (n umeros reales positivos) un vector de la forma i : 1 i p : i V i ser a llamado una combinaci on lineal positiva de los vectores V . El conjunto de todas las combinaciones positivas de un conjunto V ser a llamado envoltura c onica 3 de V . l

Una intuici on geom etrica de este conjunto es pensarlo como el m nimo cono proyectado al innito, con v ertice en el origen de coordenadas cartesianas y que contiene todos los puntos de V . Denici on 3.15 (Envoltura convexa) . Dado un conjunto nito de vectores V  tV 1 , , V p u y escalares 1 , , p pertenecientes a tal que x i : 1 i p : i y  1, un vector de la forma i : 1 i p : i V i ser a llamado combinaci on lineal convexa de los vectores V . El conjunto de todas las combinaciones convexas de V ser a llamado envoltura convexa 4 de V . l

Una intuici on geom etrica de este conjunto es pensarlo como el m nimo poliedro que contiene los puntos de V . Denici on 3.16 (V ertice) Un v ertice de un poliedro convexo P P Poly ser a un vector S P P que no es combinaci on lineal convexa de otros vectores en P . Esto es, para todo conjunto . nito de vectores V  tV i , , V p u con V P y para todo conjunto de escalares positivos 1 , , p P tal que x i : 1 i p : i y  1 entonces

@@i : 1 i p :  0 _ V i  S D i

Puede demostrarse que un poliedro contiene solo una cantidad nita de v ertices. Denici on 3.17 (Rayo) Dado un poliedro convexo no vac o P P Poly, un rayo del mismo ser a un vector no nulo R tal que existe una semirrecta paralela al vector incluida en P , esto es Se dir a que dos rayos R y R1 son iguales si ambos vectores son dependientes y tienen la misma direcci on, esto es si x D : P : R  R1 y. Un rayo extremo R de un poliedro P ser a un rayo que no es combinaci on lineal positiva de otros rayos del poliedro. Esto es, para todo conjunto nito . de rayos R  tRi , , Rp u en el poliedro y para todo conjunto de escalares positivos 1 , , p P tales que R  i : 1 i p : i Ri entonces

x @ , V

:P

R ^ V P P : V R P P y R

@@i : 1 i p :

 0 _ Ri  R

3 Conical 4 Convex

hull en ingl es. hull en ingl es

78

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

De manera intuitiva si un rayo extremo es trasladado sobre un v ertice, la semirrecta desde ese v ertice hacia la direcci on del rayo coincide con un borde de una cara del poliedro. Con esta denici on se pueden denir un vocamente los rayos de un poliedro m odulo la igualdad entre ellos denida anteriormente. Puede demostrarse que un poliedro contiene solo una cantidad nita de rayos extremos. Denici on 3.18 (L nea) Dado un poliedro no vac o P P Poly, una l nea ser a un vector no nulo D tal que D y el mismo son rayos del poliedro, esto es

x @ u, V

:uP

R ^ V P P : V uD P P y

Un poliedro que tenga al menos una l nea ser a llamado cilindro. Diremos que dos l neas son iguales si son linealmente dependientes. Para poder representar un poliedro con v ertices rayos y l neas necesitaremos tambi en de los siguientes conceptos. Denici on 3.19 (Variedad lineal) Un subconjunto de un espacio vectorial resultante del traslado de un subespacio vectorial por un vector ser a llamado variedad lineal 5 . Esto es, dado E un espacio vectorial, M E es una variedad lineal si existe un subespacio L E y un elemento V P E tal que M  tV L | L P Lu. l Notar que bajo esta denici on el subespacio L est a denido un vocamente mientras V lo est a solamente m odulo L, esto es si M  M1 con M  tV L | L P Lu y M1  tV 1 L | L P L1 u entonces L  L1 y V V 1 P L. A partir de esta observaci on, la dimensi on de la variedad lineal M puede denirse como la dimensi on de L. Si la dimensi on del espacio vectorial E es n y la de una variedad lineal M E es n 1 diremos que M es un hiperplano y si la dimensi on es 1 diremos que es una recta. De esta forma tambi en podemos denir l nea como una variedad de dimensi on 1. La dimensi on de un poliedro convexo P ser a denida como la dimensi on de la menor variedad lineal que contiene a P . . Dada una variedad lineal M  tV L | L P Lu con el subespacio L ge. i nerado por una base B  B P L | 1 i m n diremos que la variedad M est a generada por pV, B q. Adem as, una variedad lineal denida como . MK  V L | L P LK con LK el subespacio ortogonal a L, ser a llamada variedad ortogonal a M. Se puede demostrar que cualquier variedad lineal contenida en un poliedro, . que es un cilindro, est a contenida en una variedad M  tV L | L P Lu con L el subespacio vectorial generado por las l neas del cilindro y V P P un punto del mismo. En este sentido se dice que las variedades lineales generadas por las l neas de un poliedro son maximales con respecto a las contenidas en el poliedro.

A partir de la denici on de v ertices, rayos y l neas vamos a construir una representaci on de poliedros convexos, comenzando con casos particulares hasta llegar a poliedros convexos generales. Un poliedro acotado ser a aquel que no tiene l neas ni rayos. Puede demostrarse que cada punto del mismo es una combinaci on lineal convexa de sus v ertices,
5 Tambi en

llamado espacio af n.

3.2. POLIEDROS CONVEXOS CERRADOS

79

por lo cual el poliedro es la envoltura convexa de los mismos. De esta forma un poliedro acotado puede ser denotado por su conjunto de v ertices u nicamente. Los puntos de un poliedro que no posee l neas pueden expresarse como una combinaci on lineal de sus v ertices m as una combinaci on lineal positiva de sus . rayos extremos. Esto es, dado P un poliedro de esta clase, con S  tS 1 , , S p u . 1 q sus v ertices y R  tR , , R u sus rayos extremos, si X P P entonces existen escalares positivos 1 , , p , 1 , , q P con x i : 1 i p : i y  1 tal que

@ i : 1 i p :

i S i

D @ i : 1 i q :

i Ri

o de igual forma P

t

@ i : 1 i p :

i S i 1 , , p , 1 , , q P

D @ i : 1 i q : Ri D | i R ^ x i : 1 i p : i y  1u

Con este resultado, un poliedro sin l neas puede denotarse con su conjunto de v ertices y rayos extremos asociados. Para el caso general en que el poliedro posea l neas (sea un cilindro) procederemos de la siguiente forma: dado un poliedro convexo P tomaremos una variedad lineal MK ortogonal a la denida por sus l neas. La intersecci on de esta variedad con el poliedro ser a llamada una secci on del poliedro. Puede demostrarse que una secci on no posee l neas y lo que es m as importante, cualquier punto del poliedro es igual a la suma de una una combinaci on convexa de los v ertices de su secci on, una combinaci on lineal positiva de sus rayos y una combinaci on lineal de las l neas del poliedro. Esto es, tomamos una base . D  tD1 , , Dt u del subespacio generado por las lineas del poliedro, al cual llamaremos LD . A partir del mismo se obtiene su subespacio ortogonal LK D y una . . El poliedro convexo denido variedad de la forma MK  V L | L P LK D . . como P 1  P X MK ser a una secci on del mismo. Sean S  tS 1 , , S p u los . 1 q 1 v ertices y R  tR , , R u los rayos extremos de P , entonces para todo elemento X P P del poliedro existen escalares positivos 1 , , p , 1 , , q P con x i : 1 i p : i y  1 y escalares arbitrarios 1 , , t P tal que

 @ i : 1 i p : i S i D i : 1 i t : i D i

D @ i : 1 i q : D @

R D Ri
i

con lo cual el poliedro P puede expresarse como el siguiente conjunto P

 t @ i : 1 i p : i S i i : 1 i q : i Ri D i : 1 i t : i D i |1 , , p , 1 , , q PR ^ 1 , , q P R ^ x i : 1 i p : i y  1 u .

La 3-upla pS , R, Dq ser a llamada marco 6 del poliedro. La parte derecha de la u ltima ecuaci on ser a llamada envoltura convexa de un marco. La misma muestra que el poliedro se genera obteniendo primero su secci on (a partir de sus v ertices y rayos extremos) y trasladando la misma sobre sus l neas.
6 Frame

en ingl es.

80

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

A partir de este resultado cualquier poliedro convexo puede denotarse con su conjunto de v ertices, rayos extremos y l neas asociadas. Si pS , R, Dq representa el poliedro P escribiremos: P .  pS , R, D q
m

El caso particular del poliedro vac o ser a representado por la tupla con tres conjuntos vac os. En funci on de lo expuesto en esta secci on y en la anterior, un poliedro convexo cerrado puede ser representado de dos formas: como el par pA, B q con lo cual el poliedro ser a el conjunto de soluciones del sistema de restricciones lineales AX B y

como un marco pS , R, Dq con lo cual el poliedro ser a su envoltura convexa. En este trabajo se utilizar an simult aneamente las dos representaciones de un poliedro. La necesidad de esta doble representaci on se debe a que algunas operaciones sobre poliedros son f acilmente implementables solo en una de ellas. A continuaci on se presentar an algoritmos para hacer la conversi on entre ambas representaciones.

3.2.3

Conversi on de marco a sistema de restricciones

Dado un poliedro P junto con su marco pS , R, Dq, esta conversi on consiste en encontrar el sistema que lo represente. A continuaci on se dar a una idea general del m etodo para obtenerlas. M as adelante profundizaremos en su implementaci on. Sea pS , R, Dq el marco de un poliedro P no vac o (P  ), donde .  tD1 , , Dt u . . Por lo expuesto en la subsecci on anterior, cada punto X  rxi |1 i ns S R D perteneciente a un poliedro P es caracterizado por la existencia de coecientes i , j , k en tal que: .  tS 1 , , S p u, .  tR1 , , Rq u,

X con

 @ i : 1 i p : i S i D i : 1 i t : i D i
i i

D @ i : 1 i q :

i Ri

0, 1 i p 0, 1 i q x i : 1 i p : i y  1

Por lo tanto, con la envoltura convexa del marco se puede caracterizar al poliedro P con una expresi on existencial sobre un sistema de restricciones en npq t con variables ligadas 1 , , p , 1 , , q y 1 , , t . Puede demostrarse que una expresi on cuanticada de este tipo es equivalente (representa el mismo poliedro) a un sistema de restricciones lineales con el cuanticador removido. Adem as, este sistema equivalente puede ser obtenido proyectando el sistema de restricciones dentro de la cuanticaci on sobre las dimensiones no cuanticadas, es decir, el poliedro cuanticado en npqt se proyecta en n

3.2. POLIEDROS CONVEXOS CERRADOS

81

eliminando de esta forma la cuanticaci on. Este m etodo de eliminaci on fue introducido por Fourier en 1827 [Fou41] y descripto por T. S. Motzkin [Mot36]. Una versi on del mismo es descripta en [Kuh56] en la forma de una aplicaci on sucesiva de la operaci on de proyecci on (que se explicar a en los pr oximos p arrafos), sobre las variables i , j , k obteni endose as un sistema de restricciones lineales en n que representa al poliedro. Este m etodo ser a presentado a continuaci on.

Proyecci on Sea AX B un sistema de m desigualdades, donde A es una matriz en mn , B es un vector columna en m , y X es el vector de variables, tal como lo muestra el siguiente gr aco:

1 1 a1 a2 a1 n   a2 a2 a2 n  1 2  ... ... . . . ...  m m m a1 a2 an looooooooooooooomooooooooooooooon


A

b1 x1   b2  x2    ...  ...  bm xn looomooon looomooon


X B

Para eliminar la variable xl , se construye un nuevo sistema (una proyecci on del anterior sobre la l- esima columna) de la siguiente forma: Cada la Ah de A tal que ah l nuevo sistema.

 0, la desigualdad Ah X bh es parte del

h2 1 Para dos las Ah1 , Ah2 de A tal que ah l .al 0 (tienen distinto signo), la h1 h h2 h1 1 2 restricci on construida por p|al |.Ah2 |al 2 |.Ah1 q.X |ah |ah l |.b l |.b es parte del nuevo sistema.

El sistema resultante contiene s olo 0s en la l- esima columna, con lo cual esa columna es independiente de xl y, por ende, puede ser eliminada. De manera intuitiva, esta operaci on se puede entender como una proyecci on en la direcci on del eje l al hiperplano denido sobre las dem as dimensiones. Utilizando esta operaci on, en el pr oximo apartado se detalla el procedimiento a seguir para lograr obtener la envoltura convexa de un marco. Envoltura convexa de un marco Para calcular la envoltura convexa de un marco pS , R, Dq correspondiente a un poliedro P , se obtendr an sucesivos sistemas de restricciones lineales denotados por los pares pA1 , B1 q, , pApqt , Bpqt q que representar an poliedros P1 , , Ppqd respectivamente. Inicialmente, el poliedro P1 tendr a como marco solo el primer v ertice S1 a partir del cual se calcula su sistema de restricciones. Desde aqu , para calcular el sistema de restricciones correspondiente al poliedro Pi1 , el algoritmo incorporar a sucesivamente un v ertice, rayo o l nea del marco pS , R, Dq al marco del poliedro Pi . De esta forma, un poliedro Pi de la secuencia ser a la envoltura convexa de los primero i elementos del marco pS , R, Dq. Finalmente el poliedro Ppqt ser a igual a P y el par pApqt , Bpqt q denotar a al sistema de restricciones Apqt X Bpqt cuyo conjunto de soluciones ser a el poliedro.

82

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

Como ya dijimos, el c alculo de las restricciones del primer poliedro ser a el sistema de restricciones denotado por pX  S1 q. Al escribir este sistema en forma matricial tendremos A1 como una matriz 2n n y B1 un vector columna con 2n las. A continuaci on se detalla este resultado:

pX  S1 q  pX S1 ^ X S1 q
Expandiendo X y S1 , y separando A1 , se obtiene:

s1 x1    s2  x2     . . . .   . .    sn  xn       s1  x1   s2  x2      . .  . . . . 
xn sn

s1 1 0 0 0    s2  0 1 0 0   x   . . . . . .. . . . . .   . 1 . . . . .      x 2 s 0 0 0 1   n   .  .   s1  1 0 0 0  .   s2  0 1 0 0  xn    . . . . . ..  . . . . . .  . . . . . sn 0 0 0 1 looomooon looooooooooooooooomooooooooooooooooon
A1 B1

Con el sistema de restricciones A1 X B1 de P1 ya obtenido, para calcular cada sistema correspondiente a Pi (1 i p q t) se procede a obtener los resultados de las siguientes funciones:

$ ' p1q & addVertexpAi1X Bi1, Siq 1 i p pAi , Bi q  ' addRaypAi1 X Bi1 , Rip q pipq p2q % addLinepAi1X Bi1, Dipqqq p q i p q t p3q @ D

El primer paso consiste en obtener p1q. Se puede demostrar que cualquier punto en el nuevo poliedro es una combinaci on convexa de otros dos puntos del poliedro anterior: X

P Pi  D X 1 , xD

:X

P Pi1 ^ 0 1 :

 X 1 p1 qSi

y como cualquier punto del poliedro anterior es soluci on de su sistema de restricciones se puede eliminar la variable cuanticada: : 0 1 : Ai1 X

pAi1 Si Bi1 q Ai1 Si y

Esta ecuaci on puede escribirse como un sistema de desigualdades con la variable nueva . Con ello, si Ai1 es de dimensi on m n y Ai es de dimensi on pm 2q pn 1q. Realizando una proyecci on sobre , se obtiene un nuevo sistema de m1 restricciones y n columnas (una columna por variable). En p2q el procedimiento es an alogo: se van agregando los rayos creando combinaciones positivas con las restricciones ya obtenidas en los pasos anteriores. Es decir que el sistema de restricciones del poliedro Pi , i P t 1 . . . u es:

xD

:P

R :

Ai1 X

Ai1 Rip Bi1 y

Aplicando proyecci on sobre en cada iteraci on se mantiene el sistema de restricciones del paso i- esimo con n variables.

3.2. POLIEDROS CONVEXOS CERRADOS

83

Finalmente, en p3q se agregan todas las l neas de una en una creando combinaciones lineales con las restricciones del paso anterior (en cada paso se proyecta el sistema sobre ):

@D

PR:

Ai1 X

Ai1 Dippqq Bi1

Simplicaci on En general, el sistema de restricciones lineales que se obtiene luego de estas operaciones de proyecci on contiene un gran n umero de restricciones irrelevantes, las cuales pueden (y por cuestiones de eciencia deben) ser eliminadas, siendo esta eliminaci on invariante para el poliedro que ellas representan. Antes de mostrar el m etodo de simplicaci on vamos a denir el siguiente concepto: Denici on 3.20 (Saturaci on) Dada una desigualdad i : 1 i n : ai xi b diremos que un v ertice . S  r si | 1 i n s satura a la misma si i : 1 i n : ai si  b. De manera intuitiva, un v ertice satura una desigualdad cuando se encuentra en el borde del semiespacio que ella dene. . Tambi en diremos que un rayo R  r ri | 1 i n s satura la desigualdad si i i : 1 i n : ai r  0. Esto es, un rayo satura una desigualdad cuando es paralelo al borde del semiespacio que ella dene. . De igual manera, una l nea D  r di | 1 i n s satura la desigualdad i si i : 1 i n : ai d  0. Es decir, una l nea satura una desigualdad cuando es paralela al borde del semiespacio que ella dene. l

D @

Conociendo el marco del poliedro, el sistema de restricciones lineales correspondiente puede ser simplicado de acuerdo a los siguientes resultados [Lan66]: Una desigualdad que nunca es saturada por un v ertice del marco es irrelevante. Una desigualdad que es saturada por todos los v ertices y todos los rayos del marco representa una igualdad, y todas las igualdades se encuentran de esta forma. Dadas dos desigualdades C i , C j , se dene una relaci on de quasi-orden entre ellas de la siguiente manera:

C i C j si y solo si C j es saturada por cada v ertice y rayo que satura a C i. A partir de esta relaci on se establece: Si C i

Si irrelevante y puede ser excluida.

C j pero C j C i , C i es irrelevante. C i C j y C j C i , una y s olo una de

las desigualdades es

Aplicando estos resultados al sistema de restricciones se obtiene un sistema minimal (sin desigualdades irrelevantes), igual al poliedro con el cual se inici o la simplicaci on. Notar adem as, que para realizar el procedimiento descripto es necesario conocer ambas representaciones.

84

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

3.2.4

Conversi on de sistema de restricciones a marco

Lo que se busca en esta conversi on es obtener todos los v ertices, rayos y l neas de un poliedro representado por un sistema de restricciones lineales7 . En la actualidad existen diversos m etodos para resolver esta conversi on, y se categorizan en dos grandes clases: los m etodos de pivoting y los de no-pivoting. Los m etodos de pivoting derivan del m etodo simplex de la programaci on lineal ([Chv83, BJS90]), el cual encuentra nuevos v ertices adyacentes a v ertices ya conocidos, usando operaciones simples de pivot. En [CH78] se sugieren varios m etodos de pivoting para resolver la conversi on del sistema de restricciones al marco de un poliedro. En particular, se detalla el m etodo de Lanery [Lan66], brevemente explicado en el pr oximo apartado. Conceptos b asicos de programaci on lineal Sea AX B un sistema de m restricciones lineales y n variables (como los usados en las secciones anteriores). Claramente, este sistema puede ser representado agregando m variables xn1 , , xnm y escribi endolo de la forma:

A i :1in:

i aj ix

xnj  bj ^ xnj 0

donde

1j

De esta manera, las soluciones sobre las variables x1 , , xn en este sistema ser an las mismas que en el anterior. Escrito en forma matricial el sistema tiene la forma:

1 1 a1 a2 a1 1 0 0 n  a2 a2 a2 0 1 0   n 1 2  . . . . . . . . .. .. . . .. .. .. . . ..  m m 0 0 1 am a a n 1 2 loooooooooooooomoooooooooooooon looooooooomooooooooon ^
A

xn1 xn2 . . . nm x

0   0      ... 
0

x1 x2 . . . xn x n 1 x n 2 . . . nm x

   b1      b2    ..     .   bm  looomooon   B

Esta forma de escribir un sistema de restricciones ser a de importancia a la hora de implementar el m etodo de Lanery. De manera general, la misma puede denirse como: Denici on 3.21 (Forma est andar) Un sistema de restricciones est a escrito en forma est andar si es de la forE mpnmq ma AX  B ^ X 0, donde A P , X P Varpnmq , B P m , E m E r1..pn mqs con Card.E  m y X P denota la matriz columna

7 Un problema af n es el llamado problema del convex hull, el cual computa las facetas del convex hull que rodea un conjunto de puntos dado.

3.2. POLIEDROS CONVEXOS CERRADOS

85

r xi | i P E s. Las variables xi | i P E se denominan variables aumentadas, ( y las variables xi | i P F con F  r1..pn mqs E se llaman variables iniciales.

En la ecuaci on matricial anterior las variables X F con F  t1, . . . , nu ser an las variables iniciales, mientras que las variables X E con E  tn 1, . . . , n mu ser an las aumentadas. Notemos que las u ltimas m columnas de la primer matriz forman la matriz identidad. Generalizando este hecho podemos expresar las siguientes deniciones: Denici on 3.22 (Base) Dado un sistema en forma est andar AX  B ^ X E 0 con A P mpnmq , una base es una sub-matriz invertible (no singular) AI de A de tama no m m, donde I es un conjunto de ndices de columnas de A con Card.I  m e I r1..pn mqs. De esta manera AI esta formado por las columnas I de la matriz A. l

Aprovechando el hecho que la base AI es invertible, el sistema puede denotarse de forma equivalente como muestra la siguiente denici on: Denici on 3.23 (Forma can onica) Dado un sistema escrito en forma forma est andar AX  B ^ X E A P mpnmq , su forma can onica con respecto a una base AI es:

pAI 1 AJ qX J  AI 1 B ^ X E 0 donde J  t1, . . . , n mu I . Se dice adem as que las variables en X I est an en


XI la base. l Denici on 3.24 (Base factible y adyacencia) E La base AI es factible si y s olo si pAI 1 B q 0. Dos bases factibles AI y AJ son adyacentes si y s olo si |I X J |  m 1. l

0 con

Si dos bases son adyacentes, la operaci on cl asica de pivot [Chv83] transforma un sistema en forma can onica con respecto a AI en uno equivalente en forma can onica con respecto a AJ . El m etodo de base articial, el cual es la inicializaci on del m etodo simplex, transforma el sistema de restricciones en forma est andar en otro equivalente en forma can onica con respecto a una base factible, siempre que esa base exista. Despu es de aplicar este paso de inicializaci on, el m etodo propuesto por Lanery [Lan66] nos permite obtener los v ertices, rayos y l neas del poliedro denido por el sistema de restricciones lineales. Antes de comenzar a explicar el m etodo de Lanery, daremos algunas deniciones geom etricas: Denici on 3.25 (Cara de un poliedro) Una cara de un poliedro P ser a un poliedro convexo C P tal que para todo punto X contenido en C , los segmentos que contienen a X y est an incluidos en P tambi en lo est an en C , esto es:

x @ X, X1 , X2 , : X P C ^ X1 , X2 P P ^ P r0..1s ^ X  X1 p1 qX2 :

X1 , X2

PCy

Una cara de un poliedro de dimensi on k ser a llamada una k -cara . Una arista de un poliedro ser a una 1-cara. Un v ertice de un poliedro que no contenga l neas ser an una 0-cara. l

86

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

Denici on 3.26 (Adyacencia) Diremos que dos v ertices pertenecientes al marco de un poliedro son adyacentes si y s olo si pertenecen a una misma cara. En el mismo sentido diremos que dos rayos del marco de un poliedro son adyacentes si y s olo si son paralelos a una misma 2-cara. Finalmente, un v ertice y un rayo del marco de un poliedro ser an adyacentes si y s olo si el v ertice pertenece a una arista del poliedro paralela al rayo. En otras palabras, el v ertice se encuentra en el extremo de una arista paralela al rayo. l Principios del m etodo de Lanery Se puede demostrado que el grafo de relaci on de adyacencia sobre el conjunto tAI u de bases factibles, que contiene a todas las variables iniciales (es decir, tal que F I ), es conexo. Por lo tanto, dada una base de tAI u, se le puede aplicar sucesivamente operaciones de pivot m as una t ecnica de recorrido exhaustiva para encontrar todas las bases factibles de un sistema de restricciones dado. A partir de este hecho, el m etodo de Lanery se basa en las siguientes propiedades: Si AI es una base factible tal que F I , entonces el vector pAI 1 B q corresponde a un v ertice del poliedro convexo denido por el sistema de restricciones inicial. A cada v ertice de un poliedro que no contiene l neas le corresponde al menos una base factible. Si dos v ertices son adyacentes, entonces hay dos bases factibles adyacentes correspondientes a cada uno de los v ertices.
F

Sea AX  B , X E 0, la forma can onica de un sistema de restricciones lineales, con respecto a la base factible AI , la cual contiene todas las variables iniciales (mismo caso anterior). Lanery muestra que si una columna i0 P pE I q satisface la condici on

P r1..ms ^ aj @ k : k P pE X I q : i 0: entonces el vector R P Rn denido por: . j R  r ri | ri  aj i ^ ai  1 s


:j
0 0

@j

aj k

0

EE

(3.1)

es un rayo extremo del poliedro. Aplicando este resultado a cada columna i0 que satisface la ecuaci on 3.1, en cada base factible correspondiente a cada v ertice S , se encuentran todos los rayos extremos adyacentes a S . Para el caso de los poliedros que contienen al menos una l nea, se sabe que no hay bases factibles que contengan a todas las variables iniciales. Sea AX  B , X E 0 la forma can onica con respecto a cualquier base factible AI . Sea i0 P pF I q una columna que satisface

@ j, k

:j

P r1..ms ^ k P I ^ aj i 0:
0

aj k

0 _ kPF

(3.2)

Sea Di0 el vector en

$ ' & 1 pDi qi  ' ai ,j % 0


0 0

esima coordenada est a denida por: Rn tal que la i- si i  i0 si i P I (j0 es el u nico ndice tal que ai0 ,j0 en otro caso

 1)

3.2. POLIEDROS CONVEXOS CERRADOS

87

entonces Lanery muestra que Di0 corresponde a una l nea del poliedro. Adem as, si AI es una base tal que cada i0 P pF I q verica la propiedad 3.2, entonces el conjunto tDi0 : i0 P pF I qu es una base de la variedad lineal m as grande contenida en el poliedro. Algoritmo para encontrar el marco de un poliedro convexo . Dado un poliedro P  AX B r , para encontrar el marco que lo representa se procede a realizar los siguientes pasos: 1. Construir la forma est andar A0 X

 B0 , X E 0, donde X P Rnm .

2. Aplicar el primer paso de inicializaci on del m etodo simplex. Si no hay bases factibles, el poliedro es vac o. En caso contrario, se obtiene un sistema A1 X  B1 , X E 0 en forma can onica con respecto a la base factible AI1 con pB1 qE 0. 3. Mientras exista una variable inicial fuera de la base que satisfaga la condici on 3.2, hacer un pivot que pone esta variable dentro de la base, removiendo una variable aumentada de la base. 4. Se obtiene un sistema A2 X  B2 , X E 0 en forma can onica con respecto a la base AI2 . Hay que considerar dos casos: (a) Si todas las variables iniciales est an en la base pF I2 q, entonces el poliedro no contiene l neas y se encontr o un v ertice. Recorriendo exhaustivamente todas las bases factibles del sistema se pueden obtener todos los v ertices junto con sus rayos adyacentes.

(b) Si pF I2 q, con lo cual hay xi1 , . . . , xi variables iniciales que est an fuera de la base y cumplen la condici on 3.2. Entonces Di1 , . . . , Di es un base de la variedad lineal m as grande contenida en el poliedro. El sistema de restricciones: AX

B ^ @k

:0k

@ j

:0j

n : pdi qj xj  0
k

DD

dene un nuevo poliedro P 1 que es una secci on del poliedro inicial P . Aplicando el algoritmo a este nuevo sistema de restricciones, el caso 4a es aplicable ya que el poliedro P 1 no contiene l neas y por lo tanto el algoritmo termina. Simplicaci on En general, el marco que se obtiene con el m etodo de Lanery tiene elementos irrelevantes, y an alogamente a lo expuesto en la secci on 3.2.3, hay que eliminarlos. En [Lan66] se propone un m etodo de simplicaci on que elimina todos los miembros irrelevantes del marco generado (cuando el sistema de restricciones del poliedro es conocido). Este m etodo es el dual al ya visto para el sistema de restricciones generado a partir de un marco (83), y se basa en los siguientes resultados: Un v ertice o un rayo que no satura ninguna desigualdad es irrelevante.

88

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION Un rayo que satura a todas las restricciones es una l nea. Dados Vi , Vj dos v ertices o dos rayos (que no sean l neas), se dene una relaci on de quasi-orden entre ellos de la siguiente manera: Vi

Vj  Vj satura a cada desigualdad que es saturada por Vi

Entonces: Si Vi

Vj pero Vi Vj , entonces Vi es irrelevante. Si Vi Vj y Vj Vi , uno y s olo uno de los dos elementos es irrelevante
y puede ser eliminado.

Aplicando estos resultados al marco antes obtenido, se obtiene un conjunto generador minimal que representa al mismo poliedro con el cual se inici o la simplicaci on. Notar adem as, que para realizar el procedimiento descripto es necesario conocer ambas representaciones. Los m etodos de no-pivoting Los m etodos de no-pivoting se basan en el algoritmo creado por Motzkin [MRTT53], el cual resuelve iterativamente el problema del c omputo de la representaci on dual para un cono poliedral8 . Dado que cualquier poliedro convexo puede ser descompuesto en un cono poliedral y en un poliedro convexo acotado9 (por el teorema de descomposici on propuesto por Motzkin en el a no 1936) esta soluci on puede ser aplicada a cualquier poliedro convexo. Un bosquejo del m etodo de Motzkin es el siguiente: en cada iteraci on, una nueva restricci on es a nadida al cono actual en un tableau 10 (que ha sido construido usando un poliedro inicial con ambas representaciones calculadas). Un nuevo cono es creado a partir de una determinada selecci on de los rayos del cono actual. Dado que esta selecci on puede abarcar rayos no extremos o redundantes, antes de una nueva iteraci on se efect ua una simplicaci on sobre los mismos. En base al algoritmo anterior han surgido distintas variantes y mejoras del mismo. Un m etodo que es muy nombrado en la literatura consultada es el m etodo de Chernikova [Che64], el cual pertenece a la categor a de no-pivoting, y est a basado en el m etodo de Motzkin, pero usa un tableau m as chico y mejorado. El mismo resuelve el caso restringido de restricciones mixtas (es decir igualdades y desigualdades), con el a nadido de una restricci on de no-negatividad de las variables (xi 0 para todo i  1 . . . n). Una extensi on del m etodo de Chernikova es el planteado por Fern andez y Quint on en [FQ88], en donde la restricci on de no-negatividad es eliminada y se agrega una heur stica para ordenar las restricciones del poliedro inicial, y as reducir el tiempo de ejecuci on del algoritmo. Le Verge en [Ver92] mejor o a un m as la performance del m etodo reduciendo el tiempo que consume el chequeo de rayos redundantes (que hasta entonces era el cuello de botella del algoritmo).
cono poliedral es un caso particular de un poliedro, el cual posee un u nico v ertice poliedro convexo acotado es un poliedro convexo que no contiene ni rayos ni l neas. 10 Un tableau es una matriz aumentada formada a trav es del reemplazo de desigualdades por igualdades.
9 Un 8 Un

3.3. INVARIANTES EN EL DOMINIO DE POLIEDROS CONVEXOS

89

En conclusi on, ha habido un gran avance en materia de generaci on del marco de un poliedro a partir del sistema de restricciones del mismo. La elecci on de cu al m etodo utilizar tendr a un impacto importante en la eciencia del algoritmo m as general en donde se lo use. En la actualidad, varias bibliotecas para el manejo de poliedros utilizan en su implementaci on interna el m etodo de Le Verge como por ejemplo [Tea02, HPR97, Wil93].

3.3

Invariantes lineales en el dominio de poliedros convexos

En esta secci on veremos como aplicar el marco de interpretaci on abstracta desarrollado al dominio de lo poliedros convexos cerrados con la nalidad de obtener invariantes de forma autom atica. Dentro de esta marco, dado un sistema de . transiciones TS  pL, S , , q, nuestro dominio concreto ser a PredL y la funci on sem antica concreta ser a F , (propagaci on hacia adelante) como ya mencionamos en los ejemplos 3.1 y 3.2 (p ag. 68). En las pr oximas secciones deniremos el dominio sem antico abstracto, la funci on sem antica abstracta y el operador de widening utilizado.

3.3.1

Abstracci on

Procederemos a construir nuestro dominio abstracto como una extensi on puntual de la misma forma que lo hicimos con Pred y PredL en el cap tulo 1. De esta forma primero estudiaremos el conjunto de poliedros convexos cerrados en n (denominado Poly) como el dominio abstracto para el conjunto de predicados simples Pred. El poset pPoly, q (poliedros con la inclusi on est andar) es un reticulado cuyas operaciones binarias de nmo y supremo son la intersecci on y la envoltura convexa respectivamente. La primera operaci on puede calcularse utilizando la representaci on del poliedro como sistema de restricciones y la segunda utilizando la representaci on como marco; sean dos poliedros p, q P Poly cuyas representaciones como sistema de restricciones y marco son

p  A1 X q  A2 X

B1 r  pS1 , R1 , D1 q B2 r  pS2 , R2 , D2 q

m m

Con estas deniciones las operaciones binarias de nmo y supremo del reticulado pueden expresarse como: p p . Xq  . _q  A1 X B 1 ^ A2 X B 2 r pS1 Y S2 , R1 Y R2 , D1 Y D2 q ([ en Poly) (\ en Poly) ,

con lo cual, para calcular estas operaciones es necesario conocer ambas representaciones justicando el uso de la doble representaci on de poliedros ya mencionada. Para calcular la relaci on de orden (inclusi on) del poset tambi en haremos uso de ambas representaciones. Sean dos poliedros p, q : Poly entonces se puede demostrar que la inclusi on p q se cumple si y solo s los v ertices de p est an

90

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

incluidos en q y los rayos y l neas de p son tambi en rayos (no necesariamente rayos extremos) y l neas de q respectivamente. Para el caso de los v ertices solo se debe comprobar que los mismos satisfagan las restricciones de q . Para el caso de las l neas se puede demostrar que una linea pertenece a un poliedro si la misma satura (denici on 3.20, p ag. 83) sus restricciones. En el caso de los rayos es necesario comprobar que los rayos del poliedro p sean tambi en de los semiespacios denidos por las restricciones de q . Veremos a continuaci on cuales son las restricciones que se deben comprobar: sea R un rayo de p y AX b una restricci on de q , utilizando la denici on 3.17 (p ag. 77) tenemos:

AR b y Realicemos un an alisis separado de los casos AR 0 y AR 0: Caso (AR 0) x @ , V : P R ^ V P q : AV AR b y { Por caso AR 0 } x @ , V : P R ^ V P q : AV AR AR b y  { Aritm etica } x @ , V : P R ^ V P q : AV b y  { V pertenece al poliedro entonces satisface la desigualdad }
AV T Caso (AR 0)

x @ , V x @ , V

:P :P

R ^ V P q : ApV Rq b y R ^ V P q :

{ Distributividad, conmutatividad con escalar }

 

x @ , V x @ , V
F

:P :P

R ^ V P q :

AV

AR b y

{ Aritm etica }

R ^ V P q : pb AV q{AR y

{ no est a acotado }

En consecuencia, un rayo R de p es tambi en de q si y solo si AR 0 para toda desigualdad AX b de q . A partir de este an alisis podemos deducir la relaci on . . de orden en el poset pPoly, q: si p  pS , R, Dq m y q  AX B r entonces . p q  x @ S, R, D : S P S ^ R P R ^ D P D : AS B ^ AR 0 ^ AD  0 y .

El reticulado posee adem as m nimo K (el conjunto vac o ) y m aximo J ( n ). En general el poset pPoly, q no es cpo local ni co-cpo11 por lo tanto no es un reticulado completo12 . Este hecho puede vericarse considerando el limite de
11 El 12 Esta

caso particular de poliedros convexos cerrados en (intervalos cerrados) es completo. incompletitud es la que diculta la utilizaci on de otro marco de interpretaci on abstracta basado en la denici on de una funci on de abstracci on o por medio de conectores de Galois.

3.3. INVARIANTES EN EL DOMINIO DE POLIEDROS CONVEXOS

91

una cadena de poliedros convergente hacia una esfera, la cual no es un poliedro y cualquier poliedro inscripto en ella puede ser renado agregando un v ertice en la misma. A continuaci on enumeraremos algunas propiedades de este dominio: Propiedades 3.27 Sean p, q, r P Poly poliedros, entonces 1. p Y q 2. 3.

p_q p X pq _ rq pp X q q _ pp X rq y su dual, p r p X pq _ rq pp X q q _ r y su dual.

Cabe mencionar que el reticulado no es modular ni distributivo, aunque cumple las dos u ltimas propiedades anes por ser reticulado. . Dado un sistema de transiciones TS  pL, S , , q deniremos el dominio abstracto PolyL de PredL como la extensi on puntual de Poly sobre las locaciones L, esto es . PolyL  L Poly y extenderemos puntualmente el m aximo, m nimo, las operaciones de intersecci on y envoltura convexa. Dados P, Q P PolyL deniremos:

J.l K.l pP X Qq.l pP _ Qq.l pP Qq.l

.  J .  K .  P.l X Q.l .  P.l _ Q.l .  x@l : l P L :

P.l

Q.l y

(J (K ([ (\ (orden

en en en en en

PolyL ) PolyL ) PolyL ) PolyL ) PolyL )

En esta secci on utilizaremos como espacio de estados indistintamente a la funciones de las variables a los valores o a n con n la cantidad de variables, en la forma que ya fue mencionada en la secci on 1.2. Esto u ltimo permite ver al conjunto de poliedros como un subconjunto propio de los predicados, es decir Poly Pred. Para simplicar a un m as la exposici on, asociaremos directamente un poliedro con su representaci on sint actica de sistema de restricciones de la misma forma que abreviamos un predicado con su sintaxis (secci on 1.2.1). De esta forma, con el dominio sem antico abstracto ya establecido procederemos denir la funci on de concretizaci on L : PolyL PredL como extensi on puntual de : Poly Pred. Esto es, si un poliedro p P Poly est a representado . de forma algebraica como p  AX B r deniremos como .p  AX B abreviando la sem antica con la sintaxis. Pensando a los poliedro como un subconjunto propio de los predicados tambi en podemos denir a como la inyecci on identidad:

: Poly Pred .  Id y con esta denici on la funci on de concretizaci on ser a: L : PolyL PredL . L .P.l  .pP.lq

92

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

. o simplemente L  Id utilizando la extensi on puntual de la identidad en L. De esta forma la abstracci on utilizada ser a pPredL , PolyL , L q.

3.3.2

Funci on sem antica abstracta

Como ya mencionamos en el ejemplo 3.2 la funci on sem antica concreta ser a el transformador de propagaci on hacia adelante F , : PredL PredL , con lo cual la funci on sem antica abstracta debe estar relacionada con aquella seg un la denici on 3.3 o su lema equivalente 3.4. Para lograrlo vamos a construir un sistema de transiciones abstracto y una jerarqu a de transformadores en el dominio abstracto an aloga a la denida en el cap tulo 1. Dado un sistema de . transiciones concreto TS  pL, S , , q tendremos para cada sentencia s P S construiremos un sentencia abstracta s7 las que formar an parte del conjunto S 7 ,

un conjunto de estado iniciales abstractos 7 : PolyL construido a partir de su contraparte concreta tal que L .7 , o simplemente 7 ya que L es la funci on identidad. . Con estos elementos deniremos TS7  pL, S 7 , 7 , 7 q como el sistema de . transiciones abstracto de TS  pL, S , , q. . Dado en sistema de transiciones TS  pL, S , , q el transformador F , se . a denido en base al deni o como F , .X  Y SP. .X el cual a su vez est transformador sp en Pred. En esta secci on haremos lo mismo para denir una 7 funci on sem antica F on y 7 ,7 : PolyL PolyL que cumpla con aquella denici 7 en base a un transformador sp en Poly. Dado que F , en el dominio concreto est a denida (secciones 2.3.1 y 1.6.1) como . F , .X  Y SP. .X con SP. .P.l1 . 

una relaci on de transiciones abstracta 7 igual que la concreta pero relacionando sentencias abstractas, esto es 7 .l.s7 .l1  .l.s.l1 ,

l, s : .l.s.l1 : sp.s.pP.lq

de manera an aloga deniremos la funci on sem antica abstracta: . 7 7 7 F 7 ,7 .X  _ SP7 . 7 .X 7 con SP7 . 7 .P.l1 . 

l, s7 : 7 .l.s7 .l1 : sp7 .s7 .pP.lq

reemplazando la cuanticaci on sobre la uni on nita en Pred por la envoltura convexa en Poly y dejando para m as adelante las deniciones de las transiciones, sentencias, estados iniciales y transformador sp7 abstractos. En este punto veremos una condici on suciente para cumplir el lema 3.4 que dene la funci on sem antica abstracta. Dado P : PolyL tenemos

F , .p L .P q

7 . es la identidad. } { Denici on de F , y F 7 ,7 L

7 .P q L .pF 7 ,7

Y SP. .P 7 _ SP7 . 7 .P

3.3. INVARIANTES EN EL DOMINIO DE POLIEDROS CONVEXOS

93

{ Extensi on puntual de propiedad 3.27(1) } { Denici on de SP y SP7 , l ogica de predicados }

7 ^ SP. .P SP7 . 7 .P

7 A 1 1^ @l : l P L : A

l, s : .l.s.l1 : sp.s.pP.lq

E A

l, s7 : 7 .l.s7 .l1 : sp7 .s7 .pP.lq

EE

{ Propiedad 3.27(1) }

@ @ l, s : l P L ^ s P S :

7 ^

sp.s.pP.lq

sp7 .s7 .pP.lq sp7 .s7 .p

{ L ogica de predicados }

@ @ p, s : p P Poly ^ s P S :

7 ^

sp.s.p

por lo tanto, si podemos construir sentencias abstractas a partir de sentencias concretas y tenemos un transformador de poliedros sp7 .s7 tal que para todo poliedro p : Poly se cumple sp.s.p sp7 .s7 .p habremos conseguido nuestra funci on sem antica abstracta. A continuaci on veremos como construir las sentencias abstractas y el transformador de poliedros sobre las mismas.

3.3.3

Sentencias abstractas

Como mencionamos en la secci on 1.5.2 para modelar programas podemos restringir el conjunto nito S a sentencias de la forma rbs; xf y. Esta elecci on se basa en el hecho que aplicaremos las t ecnicas de interpretaci on abstracta sobre programas ejecutables. Supondremos adem as que las actualizaciones funcionales pueden ser escritas como asignaciones m ultiples de la forma xi1 , , xik : ei1 , , eik con txi1 , , xik u Var ya que el conjunto de variables es nito. Teniendo en mente esta forma sint actica de las sentencias vamos a denir cierto tipo de expresiones y t erminos que utilizaremos en ellas. Denici on 3.28 (T erminos y expresiones lineales) Caracterizaremos las siguientes categor as sint acticas: T erminos aritm eticos lineales de la forma <aterm> ::= a0 a1 xi1 con xij

ak xi P Var y constantes aj P Q, j  0, , k.
k

T erminos booleanos lineales de la forma <bterm> ::= <aterm> b con constantes b P

<aterm> b

<aterm>  b

Q.

94

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION Expresiones booleanas lineales de la forma <bexp> ::= <bterm> | <bexp> ^ <bexp> | <bexp> _ <bexp> | <bexp>

Adem as, una suposici on rBs con B una expresi on booleana lineal ser a llamada suposici on lineal y una asignaci on de la forma xi1 , , xik : Ei1 , , Eik con Eij un t ermino aritm etico lineal ser a llamada asignaci on lineal. De forma general, una sentencia s denida de la forma s .  rBs; xi , , xi : Ei , , Ei
1 k 1 k

ser a llamada sentencia lineal si la suposici on y la asignaci on son lineales. A continuaci on, procederemos a transformar la suposici on y la asignaci on m ultiple de forma separada con el n de obtener s7 . Transformaci on de una suposici on lineal. Dada una suposici on lineal rBs procederemos de la siguiente manera: 1. Transformaremos la expresi on booleana B a su forma normal disyuntiva. La raz on de est a elecci on ser a explicada m as adelante (nota en p agina 95). 2. Cada t ermino booleano lineal en la expresi on B que represente una igualdad ser a reemplazado por una expresi on equivalente solo con desigualdades. Esto es, cada t ermino de la forma <bexp>  b ser a reemplazado por <bexp> b ^ p<bexp> bq. 3. De la forma normal se eliminar an las negaciones en los t erminos booleanos lineales manteni endose la equivalencia de la forma original. Esto es, si en la forma normal aparece un t erminos de la forma

pa0 a1 xi ak xi bq se reemplazar a por su equivalente pa0 q pa1 qxi pak qxi b ,


1 k 1 k

pa0 a1 xi ak xi bq se reemplazar a por su equivalente pa0 q pa1 qxi pak qxi b .


1 k 1 k

4. Cada s mbolo de desigualdad estricta se reemplazar a por el de menor o igual. Es decir, cada t ermino booleano de la forma a0 a1 xi1 ak xik b se reemplazar a por a0 a1 xi1 ak xik b. Con este paso se obtiene un predicado m as d ebil. De esta manera obtendremos una expresi on booleana lineal B1 tal que B B1 y escrito en forma normal disyuntiva, sin negaciones y donde todos lo t ermi. nos son desigualdades no estrictas. Esto es, B1  P1 _ _ Pu con cada qk ermino booleano Lji de la forma expresi on Pi de la forma L1 i ^ ^ Li y cada t <bexp> b. As , cada expresi on booleana Pk ser a una conjunci on de restricciones lineales y por lo tanto representan un poliedro. La representaci on matricial

3.3. INVARIANTES EN EL DOMINIO DE POLIEDROS CONVEXOS

95

como sistema de restricciones lineales de cada poliedro Pi se obtiene directamente de su expresi on conjuntiva, agregando coecientes nulos 0 xk cuando la variable xk no aparezca en cada restricci on lineal Lji . Su representaci on como marco se obtiene aplicando el algoritmo descripto en la secci on 3.2.4. A partir de esta u ltima se puede realizar la envoltura convexa de los poliedros Pi reemplazando la disyunciones en la forma normal B1 por el operador binario _ , deniendo as la contraparte abstracta del predicado B: B7 .  P1

_ _ Pu

Puede demostrarse que por la forma en que se obtiene este poliedro, se cumple B B7 , lo cual ser a necesario al momento de denir sp7 . 7 . De esta . forma, dada una sentencia s  rbs con b7 representado por el sistema de restricciones lineales AX B , su contraparte abstracta ser a denida por

r s7 : Pred Bool . 9 q B ^  1 Ap.X rbs7 ..1  9 : n es la aplicaci donde .X on puntual de una funci on P a cada variable en el vector de variables X . A la construcci on r s7 la denominaremos suposici on abstracta.
Nota: Cabe tambi en preguntarse si a trav es de estas transformaciones no hemos debilitado demasiado el predicado original B. Esta p erdida de informaci on en la abstracci on se produce al obtener la forma normal disyuntiva (paso 4 en el procedimiento descripto anteriormente) y en el c alculo de la envoltura convexa nal. La primer p erdida es necesaria debido a que los poliedros deben ser cerrados. Para el an alisis de la segunda hay que se nalar que al reemplazar las disyunciones por la envoltura convexa siempre se produce esta p erdida de informaci on (ver propiedad 3.27.1, p ag 91). De todas formas, podr a suceder que aplicando esta sustituci on en la forma normal conjuntiva o incluso antes de construir la forma normal se hubiera logrado obtener una abstracci on m as fuerte. Si hubi esemos tomado la primera alternativa habr amos obtenido una abstracci on m as d ebil ya que en la construcci on de la forma normal conjuntiva se utiliza la distributividad de la disyunci on respecto a la conjunci on la cual, seg un la propiedad dual 3.27.2, produce t erminos m as d ebiles en el dominio abstracto. Si tom asemos la segunda alternativa tambi en producir amos t erminos m as d ebiles ya que al construir la forma normal disyuntiva se utiliza la distributividad de la conjunci on respecto a la disyunci on lo cual fortalece el resultado en el dominio abstracto seg un la misma propiedad (no dual). l Esta transformaci on de suposiciones concretas a abstractas funciona u nicamente cuando los t erminos booleanos de la expresi on son lineales (la suposici on es una sentencia lineal). Si alg un t ermino no lo es podemos eliminarlos de la forma normal disyuntiva obteni endose un predicado m as d ebil que el original. A cuenta de este hecho la estrategia es totalmente v alida aunque podemos perder demasiada informaci on. Otra alternativa es estudiar cada uno de estos t erminos no lineales y reemplazarlos por otros lineales m as d ebiles, por ejemplo, el t ermino log.x 0 puede ser reemplazado por x 1.

96

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

Transformaci on de una asignaci on m ultiple lineal. La idea general para realizar esta transformaci on es expresar las sentencias en la forma de transformaciones lineales anes (una transformaci on lineal mas una traslaci on constante). Para hacerlo primero se reemplazar a la asignaci on con una equivalente. Dada una asignaci on lineal xi1 , , xik : Ei1 , , Eik procederemos de la siguiente manera: 1. Se agregar an las variables que no est en en el lado izquierdo de la asignaci on con expresiones en el lado derecho igual a esa misma variable. De esta manera la sentencia quedar a en la forma x1 , , xn : E1 , , En donde si . j la variable x no est e en txi1 , , xik u entonces Ej  xj .

j 1 2. Cada t ermino aritm etico lineal Ej se escribir a de la forma aj 0 a1 x j n an x agregando los sumando correspondientes a las variables que no est en en la expresi on con coeciente aj iguales a cero. i

De esta manera la asignaci on puede representarse como una transformaci on lineal af n cuya forma matricial es T X T0 con la matriz cuadrada T : nn que . representa la transformaci on lineal denida como T  r aj i | 1 i n^1 n j n s, el vector columna T0 : que representa la traslaci on denida como . . T0  r aj | 1 j n s y el vector columna de variables X  r xj | 1 j n s. 0 De forma esquem atica esta transformaci on puede escribirse como:

. T X T0 

a1 1 a2 1 . . . an 1

a1 2 a2 2 . . . an 2

... ... .. . ...

a1 n a2 n an n

   

x1 x2 . . . xn

   

a1 0 a2 0 . . . an 0

   

1 E E2  ...

2 1 2 2 2 n a2 0 a1 x a2 x . . . an x . . . n n n 1 n 2 a0 a1 x a2 x . . . an nx

1 1 1 2 1 n a1 0 a1 x a2 x . . . an x

    

En

    

Notar que vista la sentencia de asignaci on s como una actualizaci on funcional xf y con f : , la transformaci on af n es una forma de representar esta misma funci on en el ambito de los poliedros. Si f es representada por la transformaci on T X T0 entonces podemos denir la abstracci on de la sentencia . s como s7  xf y7 con

x y7 : Fun Bool . xf y7 ..1  T p.X 9 q T0  9 1 .X

3.3. INVARIANTES EN EL DOMINIO DE POLIEDROS CONVEXOS

97

A esta construcci on la denominaremos actualizaci on funcional abstracta. Esta forma para representar las asignaciones en el dominio abstracto sirve cuando el lado derecho de las mismas son t erminos aritm eticos lineales de las variables. Si la asignaci on a una variable no posee esta forma se aproximar a asumiendo que la variable puede obtener cualquier valor despu es de la asignaci on. Esto se logra eliminando la la de la transformaci on T X T0 que corresponde a dicha variable. As por ejemplo si la asignaci on en cuesti on es x1 , , xn : E1 , , En con las expresiones Ek1 , , Ekp no lineales, se puede construir la transformaci on T X T0 con T : pnpqn y T0 : np donde

T T0 X

.  r aj i | 1 i n ^ 1 j n ^ j R tk1 , , kp u s .  r aj 0 | 1 j n ^ j R tk1 , , kp u s y .  r xj | 1 j n ^ j R tk1 , , kp u s .

Con esta transformaci on la denici on de la actualizaci on funcional abstracta . xf y7 ..1  T p.X 9 q T0  9 1 .X indicar a que los estados relacionados pueden tener cualquier valor en las variables xk1 , , xkp . Transformaci on de sentencias generales. Teniendo m etodos para encontrar las versiones abstractas de las sentencias de suposici on y actualizaci on funcional, procederemos a derivar la de sentencias generales de la forma rbs; xf y. Sea las versiones abstractas de estas sentencias individuales rbs7 con su sistema de restricciones AX B asociado y xf y7 con su transformaci on af n T X T0 , si denimos la composici on secuencial abstracta como composici on de relaciones (igual que con las sentencias concretas) tendremos:

@ { Denici on de composici on secuencial } D 2 7 2 7 D : : rbs .. ^xf y .2 .1  { Denici on de suposici on y actualizaci on funcional abstractas } 2 2 2 x D : : Ap.X 9 q B ^  ^ T p 9 .X q T0  9 1 .X y  { Rango unitario } 9 q B ^ T p.X 9 q T0  9 1 .X . Ap.X
Por lo tanto la denici on de una sentencia abstracta general ser a: . prbs7 ; xf y7 q..1  Ap.X 9 q B ^ T p.X 9 q T0  9 1 .X ,

prbs7 ; xf y7 q..1

lo cual es el resultado de la aplicaci on de la transformaci on af n restringiendo el dominio al sistema lineal originado por la sentencia rbs7 .

3.3.4

Transformador de poliedros

Desarrollado el m etodo para obtener sentencias abstractas a partir de concretas obtendremos el transformador de strongest postcondition a nivel abstracto. Para sentencias concretas el transformador se deni o (secci on 1.4, p ag. 10) como sp.s.p. 1 .  D

: p. : s.. 1

98

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

. Dada la sentencia abstracta s7  rbs7 ; xf y7 representada por el sistema de restricciones AX B y la transformaci on af n T X T0 , podemos denir un transformador abstracto sp7 .s7 : Poly Poly de forma an aloga al concreto utilizando una cuanticaci on existencial:

En consecuencia podemos denir sp7 .s7 como . sp7 .s7 .p. 1  D : C p.X 9 q D : Ap.X 9 q B ^ T p.X 9 q T0

@ { Denici on an aloga a sp } D 7 D : p. : s ..1 @ { Denici on de s7 } D D : p. : prbs7 ; xf y7 q..1  { Denici on de rbs7 ; xf y7 } x D : p. : Ap.X 9 q B ^ T p.X 9 q T0  9 1 .X y  { p es un poliedro denido por el sistema CX D } x D : C p.X 9 q D : Ap.X 9 q B ^ T p.X 9 q T0  9 1 .X y
.

sp7 .s7 .p. 1

 9 1 .X

Esta expresi on puede ser simplicada mediante un reemplazo de la variables de cuanticaci on (que denota funciones de las variables a los valores) por las variables de programa x1 , , xn y la variable 1 por las variables primadas x11 , , x1n : . sp7 .s7 .p.X 1  D X : CX D : AX B ^ T X T0  X 1 , . donde X  r xi | 0 i n s es el vector columna de variables del programa y . 1 1 i X  r x | 0 i n s es el vector de variables primadas. Queda por corroborar que el resultado de aplicar este transformador da como resultado un poliedro. La u ltima denici on muestra que el transformador strongest postcondition abstracto es denotado con una cuanticaci on existencial sobre un sistema de restricciones lineales entre variables de programa y variables primadas: . sp7 .s7 .p.X 1  x D X : : CX D ^ AX B ^ T X T0 X 1 ^ T X T0 X 1 y .

Aplicando la t ecnica de eliminaci on de cuanticaci on existencial vista en la secci on 3.2.3 puede obtenerse un sistema de restricciones lineales sobre las variables libres (primadas) mediante la aplicaci on sucesiva de la operaci on proyecci on sobre las variables cuanticadas (sin primar). Por lo tanto no solo se demuestra que el resultado del transformador es un poliedro, si no que adem as tenemos un algoritmo para obtener el sistema de restricciones que lo denota. Resumiendo, si eliminamos las variables no primadas del sistema de restricciones en 2n AX

B ^ T X T0 X 1 ^ T X T0 X 1

proyect andolo sobre el espacio de las variables primadas, obtenemos un nuevo sistema en n de la forma A1 X 1 B 1 . Este u ltimo representa el poliedro resultado de la transformaci on: . sp7 .s7 . AX B r  A1 X 1 B 1 r .

3.3. INVARIANTES EN EL DOMINIO DE POLIEDROS CONVEXOS

99

Cabe agregar que el m etodo de eliminaci on existencial puede simplicarse si la transformaci on lineal T es invertible, de manera an aloga a lo que sucede en el dominio concreto (secci on 1.4.1, propiedades 1.4, p ag. 12): sp7 .s7 .p.X 1

   

{ Denici on }

xDX

: CX

D: D:

AX

B ^ T X T0  X 1 y B ^ X  T 1 pX 1 T0 q
CX

{ Algebra }

@DX @DX

: CX

AX

D D

{ Intercambio rango y t ermino } :X

 T 1 pX 1 T0 q :

D ^ AX B

{ Rango unitario }

C pT 1 pX 1 T0 qq D ^ ApT 1 pX 1 T0 qq B

Por lo tanto, para este caso, el resultado del transformador puede ser obtenido como: sp7 .s7 . AX . B r  C pT 1 pX 1 T0 qq D ^ ApT 1 pX 1 T0 qq B
r

3.3.5

Sistemas de transiciones abstractos

Como ya mencionamos en la secci on 3.3.2, dado un sistema de transiciones con. . creto TS  pL, S , , q podemos derivar uno abstracto TS7  pL, S 7 , 7 , 7 q de la siguiente manera: Para cada sentencia s P S construimos un sentencia abstracta s7 en la forma descripta en la secci on 3.3.3, las que formar an parte del conjunto S 7 . La relaci on de transiciones abstracta 7 ser a igual que la concreta pero relacionando sentencias abstractas, esto es 7 .l.s7 .l1  .l.s.l1 . El conjunto de estado iniciales abstractos 7 : PolyL ser a construido abstrayendo cada formula en : PredL de la misma forma que lo hicimos con las expresiones booleanas en las sentencias de suposici on (p ag. 94). De esta forma aseguramos que se cumpla 7 . Con este sistema en mente y a partir de la denici on del transformador de poliedros de la secci on anterior, podemos denir la funci on sem antica abstracta ya esbozada en la secci on 3.3.2:

7 .X 7 F 7 ,7
con SP7 . 7 .P.l1 . 

. 

_ SP7 . 7 .X 7

l, s7 : 7 .l.s7 .l1 : sp7 .s7 .pP.lq

Finalizada la denici on de la funci on sem antica abstracta, procederemos a completar el marco de interpretaci on abstracta deniendo un operador de widening apropiado en el dominio de poliedros.

100

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

3.3.6

Widening

El operador de widening utilizado en este trabajo es el propuesto originalmente por Cousot y Halbwachs [CH78] denominado widening est andar por su uso frecuente en distintas herramientas de vericaci on. Dados dos poliedros p, q : Poly el resultado de aplicar el operador de widening sobre los mismos ser a el poliedro convexo denido por las restricciones de p que . incluyen al poliedro q . Esto es, dado p  A1 X b1 ^ ^ Am X bm r . i (A son las las de la matriz A) y q  pS , R, Dq m , denimos el operador de widening pq . 

@@i : 1 i m ^ q

Ai X

bi

: Ai X

bi

Una manera equivalente de denir el operador es haciendo expl cito el sub. conjunto de las J r1..ms de la matriz A del poliedro p  AX B r denido como: j P J  q Aj X bj r o incluyendo implementaci on de inclusi on expuesta en la secci on 3.3.1: j

P J  x @ S, R, D

:S PS ^RPR^D PD : A S bj ^ Aj R 0 ^ Aj D  0
j

Con este conjunto de ndices as denido tenemos pq . 

@@j

:j

PJ :

Aj X

bj

Notar que para implementar este operador de widening hace falta conocer ambas representaciones de los poliedros lo cual justica tambi en la necesidad de la doble representaci on. Este operador de widening cumple las condiciones en la denici on 3.6 (p ag. 71). La condici on p p q se cumple ya que el conjunto de restricciones que representan a p q son un subconjunto de las que representan a p. La condici on q p q tambi en se cumple ya que q est a incluido en las restricciones de p q . Adem as se cumple el segundo criterio en la denici on ya que para toda cadena de poliedros x0 x1 xn la cadena 1 1 1 1 x1 0  x0 , x1  xo x1 , , xn  xn1 xn , es nita ya que en cada paso el n umero de restricciones que representa x1 n es nito y es un subconjunto de las de x1 n 1 . El operador de widening as denido trabaja solo sobre poliedros en Poly. Para utilizarlo en este trabajo hace falta extenderlo puntualmente al dominio abstracto PolyL : L : PolyL PolyL PolyL . pP L Qq.l  P.l Q.l Como mencionamos al principio de esta secci on, el operador descripto es cl asico en la literatura y es utilizado en muchas herramientas de vericaci on. Cabe agregar que otros operadores han sido estudiados y propuestos en [BHRZ03, Hal06].

3.3. INVARIANTES EN EL DOMINIO DE POLIEDROS CONVEXOS

101

3.3.7

Invariantes lineales

. Dado un sistema de transiciones concreto TS  pL, S , , q y recapitulando lo desarrollado en esta secci on, los elementos necesarios obtenidos para implementar el marco de interpretaci on abstracta de la secci on 3.1 (p ag. 67) son la abstracci on pPredL , PolyL , L q (secci on 3.3.1),

7 la funci on sem antica abstracta F on 3.3.2) 7 ,7 : PolyL PolyL (secci denida como . 7 .X  7 _ SP7 . 7 .X F 7 ,7
con SP7 . 7 .P.l1 . 

l, s7 : 7 .l.s7 .l1 : sp7 .s7 .pP.lq

el operador de widening L (secci on anterior). Con estos elementos podemos implementar el algoritmo 3.3 (p ag. 74) que genera un invariante a partir de la funci on sem antica abstracta: Programa 3.4 Generaci on de invariantes

7 aproximar .F , (F 7 ,7 : PolyL PolyL , L : PolyL PolyL PolyL , M : ) : PolyL


k : 0; do k

7 G7 k :K ;

7 .G7 G7 q M ^ pF 7 ,7 k k 7 7 7 Gk : F 7 ,7 .Gk ; k : k 1
G7 kq

od; do

7 7 pG7 k L F 7 ,7 .Gk 7 7 7 G7 k : Gk L F 7 ,7 .Gk

od;

return G7 k

El algoritmo devuelve un invariante del sistema de transiciones concreto .pF , q7 : PredL . A partir del mismo y dada una propiedad P se puede vericar su invariancia comprobando la implicaci on .pF , q7 P (propiedad 2.11(3), p ag. 44). Este uso directo del invariante generado tiene dos deciencias. Primero, la implicaci on anterior puede no ser decidible para predicados P arbitrarios. Esta limitaci on se afronta restringiendo los predicados de forma tal que existan procedimientos de decisi on para la vericaci on de la implicaci on. Como ejemplo, se puede restringir P a que sea representable de manera exacta con poliedros convexos para que la implicaci on sea decidible (como se demostr o en la secci on 3.3.1).

102

DE INVARIANTES LINEALES CAP ITULO 3. GENERACION

La segunda deciencia es que en la pr actica, el algoritmo suele encontrar invariantes demasiado d ebiles para probar propiedades arbitrarias. Esto es, el algoritmo encuentra el invariante .pF , q7 : PredL tal que .F , .pF , q7 (teorema 3.8), pero no siempre es v alida la condici on .pF , q7 P cuando P es un invariante ya que el invariante encontrado es solo una sobre aproximaci on de F , . Por esta raz on y como se mostrar a en el cap tulo 5, en este trabajo solo se utiliza el m etodo expuesto para encontrar un invariante del sistema que luego ser a empleado a n de acelerar el proceso de convergencia de la demostraci on de k -invariancia en el programa 2.3 (p ag. 62). Esta utilizaci on de los invariantes lineales generados como aceleradores de convergencia es tambi en empleada en [BBM97].

3.3.8

Implementaci on

La implementaci on del algoritmo de generaci on de invariantes lineales fue realizada como parte del trabajo de tesis nal de la Lic. Natalia Beatriz Bidart [Bid07]. Este desarrollo fue incluido en el prototipo de software que describiremos en el cap tulo 5. El algoritmo fue escrito en el lenguaje ML, en su implementaci on Standard ML of New Jersey [Sta06], utilizando la biblioteca externa NewPolka [Jea05] para la manipulaci on de poliedros.

Cap tulo 4

Implementaci on de regiones cr ticas condicionales


En cap tulos anteriores desarrollamos una formalizaci on de los sistemas de transiciones junto con diferentes t ecnicas para comprobar propiedades sobre los mismos. La principal motivaci on de este trabajo es la aplicaci on de estas t ecnicas para la optimizaci on de construcciones concurrentes utilizadas en los lenguajes de programaci on. Se entiende a estas construcciones como estructuras sint acticas de alto nivel que permiten una abstracci on del hardware o de primitivas del lenguaje para resolver de forma simple problemas de concurrencia, como por ejemplo regiones cr ticas condicionales y monitores. Por lo general, debido al alto nivel de estas construcciones, su implementaci on autom atica por medio de compiladores o generadores de c odigo suele ser poco eciente. En este mismo sentido, la t ecnica de sem aforos binarios divididos [Dij79] puede ser usada para implementar regiones cr ticas condicionales. Dada una especicaci on de un problema de esta clase, SBD brinda tanto los programas que lo implementan como los invariantes que aseguran su correcci on. Aplicando la t ecnica a casos particulares se encuentran programas que admiten ciertas simplicaciones que mejoran la eciencia. Este trabajo se concentra en el desarrollo de procedimientos autom aticos para obtenerlas. Nos enfocamos particularmente en la eliminaci on de guardas en las sentencias condicionales nales de los programas, pero el m etodo permite su generalizaci on a otros tipos de simplicaciones. El procedimiento consiste en representar de manera abstracta una implementaci on SBD de regiones cr ticas condicionales por medio de sistemas de transiciones (cap tulo 1) y hacer una b usqueda de nuevos invariantes (cap tulo 2) que avalen la correcci on de las simplicaciones. La t ecnica principalmente utilizada para ello es propagaci on hacia atr as (secci on 2.3.2, p ag.53). Como vimos, este m etodo permite constatar la invariancia de predicados sobre los sistemas de transiciones y posee la ventaja de que la cadena tendiente al punto jo es usualmente nita. Una ventaja adicional que posee la t ecnica de propagaci on hacia atr as es que los predicados intermedios son f ormulas libres de cuanticadores como se mencion o en el cap tulo 2. De esta manera, la obtenci on de los mismos puede hacerse de forma mec anica con la ayuda de chequeadores de validez de f ormulas de primer orden con teor as subyacentes denominados SMT solvers , como por 103

104

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

ejemplo CVC3 [BT07, CVC08] y Yices [yic08]. Desafortunadamente las f ormulas producidas en el proceso de c alculo de punto jo son generalmente grandes ya que en cada paso del c alculo iterativo se produce un incremento en el tama no de las mismas. Con el n de aliviar este fen omeno, se desarrollaron m etodos de simplicaci on de las f ormulas intermedias, implementados con los probadores de teoremas CVC3 e Isabelle/HOL [Pau94]. En la actualidad las herramientas denominadas en forma gen erica probadores de teoremas han demostrado una gran madurez, siendo utilizadas de manera exitosa en la vericaci on de software. Nuestro trabajo tiene un objetivo diferente: pretende atacar el problema de eciencia antes mencionado utilizando estas herramientas. La propuesta de este trabajo fue implementada en un prototipo de software escrito en el lenguaje de programaci on ML utilizando demostradores de teoremas externos para probar las implicaciones envueltas en el c alculo de punto jo y simplicar f ormulas l ogicas. El procedimiento fue probado sobre diferentes ejemplos cl asicos de programaci on concurrente. La t ecnica propuesta es incompleta ya que puede no detectar guardas cuya eliminaci on es correcta. Sin embargo en la mayor a de los ejemplos de la literatura se detectaron todas las simplicaciones posibles. Cabe remarcar que esta incompletitud no es un problema a la hora de obtener programas correctos: las implementaciones de regiones cr ticas condicionales producidas por la t ecnica SBD sin estas simplicaciones son correctas aunque menos ecientes. En este sentido, el objetivo de aplicaci on del m etodo autom atico propuesto se dirige a implementaciones de compiladores o generadores de c odigo para aumentar la eciencia de construcciones concurrentes de alto nivel. El trabajo ha sido presentado en [BB07a, BB07b]. Aqu profundizaremos estas publicaciones en detalle. En las secciones 4.1, 4.2 y 4.3 se plantea el problema con sus antecedentes. En las secciones 4.4, 4.5, 4.6 y 4.7 se presenta el m etodo propuesto con su implementaci on. Por u ltimo en las secciones 4.8 y 4.9 se muestran los resultados con sus conclusiones y los trabajos futuros propuestos.

4.1

Regiones cr ticas condicionales

Una gran cantidad de problemas concurrentes pueden ser resueltos usando los conceptos de espera condicional y exclusi on mutua. Por ejemplo en [And89] se presenta un m etodo relativamente general para resolver problemas de sincronizaci on usando espera condicional xawait.B Sy el cual sirve para resolver ambos problemas iniciales (espera condicional y exclusi on mutua). De manera general, las esperas condicionales funcionan bloqueando el proceso que ejecuta el programa hasta que la condici on B sea verdadera y en este caso el programa S se ejecuta en exclusi on mutua. Las construcciones de espera pueden aparecer en cualquier punto de los programas causando que las variables en la condiciones B y en los programas S sean compartidas por los distintos procesos que las ejecutan. Esta libertad del contexto en donde aparecen las variables produce algunas dicultades al momento de implementarlas. La forma cl asica para implementar esta construcci on es a trav es de bucles busy wait en cada guarda de las distintas esperas condicionales. El principal problema reside en que se deben chequear todas las guardas que

4.1. REGIONES CR ITICAS CONDICIONALES

105

aparecen en las distintas esperas de los procesos. Adem as, cuando se realiza esta comprobaci on, se deben bloquear todos los procesos que usen las variables de las guardas para que no intereran en el resultado de esta evaluaci on. Es importante agregar que en muchos contextos de ejecuci on concurrente, es com un que existan guardas que no sea necesario evaluar, dejando como tarea al programador la eliminaci on de las mismas para una mejora en la eciencia del sistema. A partir de esta dicultad en la implementaci on de las esperas condicionales, diversas construcciones m as simples de sincronizaci on han sido propuestas (como por ejemplo sem aforos). Estos mecanismos son menos abstractos que la espera condicional y pueden usarse para implementar esta construcci on. Esta perdida de abstracci on introduce nuevas necesidades de prueba en el proceso de desarrollo de los programas, incrementando su complejidad y por consiguiente generando nuevas posibilidades de cometer errores. La presencia de errores sutiles, tanto de correcci on (safety) como de progreso (en particular la posibilidad de deadlocks o livelocks) ha sido desafortunadamente m as la regla que la excepci on. Toda propuesta de nuevas herramientas de sincronizaci on ha sido siempre una soluci on de compromiso entre facilidad de uso y posibilidad de reducir las penalidades en eciencia. En este sentido, las regiones cr ticas condicionales fueron propuestas por C.A.R. Hoare [Hoa72] y Brinch Hansen [Han72] como una construcci on m as cercana a la espera condicional y por lo tanto m as f acil de usar correctamente. Las mismas se presentan con una notaci on estructurada para especicar sincronizaci on, donde se hace necesario declarar expl citamente las variables compartidas sobre las cuales se operar a en exclusi on mutua y que podr an aparecer en las condiciones. La construcci on de alto nivel para denotar regiones cr ticas condicionales requiere que cualquier variable compartida v sea declarada como: resource rcc pv q De esta manera se obliga a que la variable v pueda ser usada solo dentro de una regi on declarada como: region rcc B S end

Esta construcci on signica que mientras el programa S esta siendo ejecutado, ning un proceso puede acceder a la variable v y que la guarda B gobierna el acceso a esta regi on cr tica. Adem as la ejecuci on de S debe realizarse en exclusi on mutua. Una manera de implementar regiones cr ticas condicionales con construcciones m as simples fue propuesta por E.Dijkstra [Dij79] retomando ideas previas de C.A.R. Hoare [Hoa74]. La t ecnica fue denominada sem aforos binarios divididos (SBD) y utiliza una serie de sem aforos binarios para asegurar la exclusi on mutua entre las regiones. Esta metodolog a brinda tanto los programas (con sem aforos binarios) que implementan las regiones cr ticas condicionales como los invariantes iniciales que aseguran su correcci on. Debido a la generalidad de la metodolog a, los programas resultantes suelen ser poco ecientes; como veremos, en estos programas aparecen guardas en sentencias condicionales que son falsas en cualquier contexto de ejecuci on posible. Es por esto que, para mejorar la eciencia, la t ecnica incluye la eliminaci on,

106

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

mediante demostraciones de correcci on en forma manual, de estos chequeos innecesarios en los puntos en los cuales puede deducirse formalmente que una condici on ser a falsa. Dado que las secciones cr ticas suelen ser peque nas pero son invocadas numerosas veces, estos peque nos ahorros pueden representar incrementos dr asticos en la eciencia de los programas. El desarrollo en los u ltimos a nos de los demostradores (semi)autom aticos de teoremas brinda un nuevo contexto sobre el cual una parte interesante de estas simplicaciones puede hacerse de manera mec anica, abriendo la posibilidad de reducir signicativamente las penalidades en eciencia en las de construcciones de alto nivel para la construcci on de programas concurrentes. Esta nueva alternativa resulta totalmente relevante en el contexto actual ya que la necesidad de crear programas con estas caracter sticas no es nueva aunque ha tomado particular inter es en los u ltimos tiempos. La popularidad de arquitecturas paralelas, con el advenimiento de los procesadores multicore, ha renovado la necesidad de elaboraci on de t ecnicas y construcciones concurrentes para aprovechar la caracter sticas de estas arquitecturas. El problema surge debido a que actualmente estas metodolog as est an lejos de cumplir el desaf o. Conocidas cat astrofes econ omicas fueron producidas por errores en programas concurrentes [Gib94]. Problemas al intentar aprovechar estas arquitecturas para la actualizaci on del sistemas operativos SunOS est an descriptos en [Cre05]. Son tambi en destacables casos como el desarrollo del kernel de Ptolemy II [EJL 02] donde se descubrieron errores mucho tiempo despu es al probarlos en estas arquitecturas, a un cuando el desarrollo estuvo altamente testeado [Lee06]. Uno de los problemas centrales de las ciencias de la computaci on es la de proveer construcciones concurrentes de alto nivel sin penalidades en la eciencia. Al momento de atacar este problema, las construcciones concurrentes de alto nivel propuestas, como regiones cr ticas condicionales y monitores con se nalamiento impl cito, no han tenido buena aceptaci on debido a sus problemas de eciencia. La madurez que en la actualidad han obtenido los probadores de teoremas los hace una herramienta interesante a la hora de resolver estas cuestiones. Nuestro trabajo intenta mostrar esta posibilidad tomando una construcci on de alto nivel (regiones cr ticas condicionales) y mejor andola incrementando su eciencia gracias al uso de este tipo de herramientas. A continuaci on explicaremos la t ecnica SBD junto con un ejemplo de simplicaci on del programa resultante hecho en forma manual con el n de visualizar el problema que se intenta resolver.

4.2

T ecnica SBD

Los sem aforos fueron desarrollados por E. W. Dijkstra [Dijnd] como una herramienta de programaci on para sincronizar el acceso a recursos compartidos en un ambiente concurrente. Esta construcci on es presentada en la forma de un tipo abstracto de datos consistente de una variable especial denominada sem aforo, asociada a un valor dentro de un intervalo de enteros no negativos comenzando de cero, junto con las operaciones P y V sobre la misma. De manera general, dado un sem aforo s, al ejecutarse una operaci on P.s dentro de una componente concurrente, esta detiene su ejecuci on si el sem aforo posee el valor cero. En el caso que sea mayor, se decrementa este valor de manera at omica y la componente contin ua su ejecuci on. Por otro lado, si en una componente se ejecuta

4.2. TECNICA SBD

107

una operaci on V.s, el sem aforo incrementa en forma at omica su valor, siempre que no se haya llegado al l mite superior de su rango, en cuyo caso la operaci on es neutra sobre el sem aforo. Esto permite que si el sem aforo hubiera tenido el valor nulo, las posibles componentes bloqueadas en operaciones P.s contin uen su ejecuci on. Los sem aforos que admiten cualquier valor no negativo son denominados sem aforos generales y los restringidos a los valores 0 y 1 son llamados sem aforos binarios. En estos u ltimos, la operaci on V incrementa el sem aforo solo si tiene el valor cero. Una descripci on m as detallada de esta construcci on puede encontrarse en [And91, cap. 4]. Los sem aforos binarios pueden asegurar de manera muy simple exclusi on mutua y por lo tanto son buenos candidatos para implementar regiones cr ticas. Una manera particular de usar los sem aforos binarios provee un m etodo para implementar regiones cr ticas condicionales. Describiremos aqu estas ideas brevemente, remitiendo a la literatura para una presentaci on m as completa [Dij79, Dij80b, And99, Sch97, Hoo86, MvdS89, Hoo90, BB07a]. . Un conjunto SBD  ts0 , . . . , sn u de sem aforos binarios se denominar a sem aforo binario dividido 1 si en cualquier momento de la ejecuci on del programa a lo sumo uno de ellos toma el valor 1. Esto es equivalente a requerir la invariancia de la siguiente propiedad: 0x

i : 0 i n : s y 1 . i

Toda ejecuci on de una regi on cr tica comenzar a entonces din amicamente con una operaci on P sobre alguno de los elementos del SBD y terminar a con un V sobre un elemento del mismo conjunto (no necesariamente el mismo). El invariante garantiza entonces exclusi on mutua entre estas dos operaciones. Adem as de la exclusi on mutua, los sem aforos en SBD satisfacen la siguiente regla del domin o [MvdS89]: si la ejecuci on de una regi on cr tica termina con una operaci on V sobre un sem aforo s, entonces la pr oxima operaci on P deber a ocurrir sobre el mismo sem aforo s. Esto permite asumir la precondici on de cualquier operaci on V como poscondici on de su correspondiente operaci on P. Esta regla puede formularse en t erminos axiom aticos como la invariancia global del siguiente predicado: . SBD 

x@s

: s P SBD : s  0

_ Is y

(4.1)

donde Is es un predicado que se cumple antes de todo comando V.s y despu es de su correspondiente P.s. De forma resumida, la t ecnica para implementar regiones cr ticas condicionales consiste en asociar cada elemento del conjunto SBD con una condici on de la regi on cr tica. Ser a tambi en necesario agregar un sem aforo neutral para el caso en el que ninguna condici on sea verdadera. Luego, toda regi on cr tica estar a din amicamente prejada por un P asociado con su precondici on. Adem as, debe tenerse cierto cuidado para introducir sucientes operaciones V con el n de asegurar progreso. A continuaci on ilustraremos el m etodo de forma general solo con dos regiones condicionales para facilitar la exposici on.
1 El nombre del conjunto es el mismo que el que utilizamos para denominar la t ecnica. Esta ambig uedad ser a resuelta seg un el contexto en el que se presente.

108

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

Sean dos programas S0 , S1 asumiendo como precondiciones respectivamente B0 y B1 y estados iniciales de las variables , nuestro objetivo ser a implementar las regiones cr ticas condicionales resource rcc pv q Precondici on: SCC0 : region rcc B0

S0 end

SCC1 : region rcc

B1

S1 end

Supongamos adem as que las regiones cr ticas deben preservar cierto invarian. te I . Usaremos entonces un SBD compuesto por dos sem aforos SBD  ts0 , s1 u uno para cada condici on y otro sem aforo m para cuando ninguna de las dos se satisfaga. Dos contadores b0 , b1 ser an necesarios para contar la cantidad de procesos comprometidos respectivamente con la ejecuci on de P.s0 , P.s1 y poder as asegurar la ausencia de deadlocks. El siguiente invariante caracteriza la soluci on basada en SBD: . SBD  ps0  0 _ pB0 ^ b0 0qq ^ ps1  0 _ pB1 ^ b1 0qq ^ pm  0 _ pp B0 _ b0  0q ^p B1 ^ b0 0 ^ b1 0 ^ I

_ b1  0qqq

donde los primeros tres t erminos conjuntivos representan, cada uno, la parte del invariante s  0 _ Is en la ecuaci on 4.1 que le corresponde a un sem aforo entre la ejecuci on de las operaciones P-V. Los dos t erminos siguientes representan las restricciones de los contadores (deben ser mayores e iguales a cero) y el u ltimo es el invariante propio del problema. El programa 4.1 (p ag. 109) muestra la implementaci on obtenida por la t ecnica SBD, junto con su anotaci on completa, para la primer regi on cr tica condicional. En el programa se ha se nalado el c odigo correspondiente a la parte del protocolo de entrada y salida de la regi on cr tica. La primera se ejecuta solamente si el sem aforo neutral m est a habilitado. Notar que su poscondici on indica que no puede haber procesos esperando ingresar a sus regiones si sus condiciones correspondientes son verdaderas (los contadores b0 y b1 iguales a cero indican que no hay procesos esperando). A continuaci on se verica la condici on B0 . Si esta condici on es falsa no es necesario liberar procesos ejecutando S0 bloqueados en s0 . Adem as, por la anterior poscondici on, si hay procesos en s1 (b1 0) su condici on no se cumple y tampoco es necesario desbloquearlos. Por lo tanto, la u nica alternativa en este caso es habilitar procesos nuevos, permitiendo el progreso, ejecutando V.m. En el caso que la guarda sea verdadera se habilita el sem aforo (con el comando V.s0 ) para permitir reasumir alguna ejecuci on de S0 . Despu es de la ejecuci on del protocolo de entrada, el proceso queda esperando en el sem aforo de su condici on (sem aforo s0 ) hasta que sea despertado. Se puede notar que aqu hay una redundancia de esperas en sem aforos, no tenida en cuenta en el protocolo de entrada: si se cumple B0 no puede haber otros procesos esperando en s0 (por poscondici on de P.m), por lo cual el mismo proceso que veric o la guarda ser a el liberado. En este sentido, m as adelante veremos como simplicar el programa. El protocolo de salida se ejecuta despu es de acceder a la regi on cr tica. Aqu se verica si hay procesos en espera cuya condici on sea verdadera. En

4.2. TECNICA SBD Programa 4.1

109 Componente SCC0 generada por SBD Protocolo de entrada

P.m; tI ^p B0 _ b0  0q ^p B1 _ b1  0qu b0 : b0 1; tI ^p B0 _ b0  1q ^p B1 _ b1  0 ^ b0 0qu if B0 tI ^ B0 ^ b0 0u V.s0 B0 tI ^p B0 _ b0  0q ^p B1 _ b1  0qu V.m ;

t I ^ B0 ^ b0 0u b0 : b0 1; t I ^ B0 u t
S0 Iu if B0 ^ b0 B1 ^ b1 Protocolo de salida

P.s0 ;

0 tI ^ B0 ^ b0 0u 0 tI ^ B1 ^ b1 0u
V.s1 V.s0

B0

_ b0  0q ^p B1 _ b1  0q tI ^p B0 _ bo  0q ^p
V.m

B1

_ b1  0qu

estos casos se despierta el proceso correspondiente. Notar que esta elecci on se hace de manera no determinista lo que permite agregar prioridades a la implementaci on nal. En el caso que no se cumpla ninguna de estas condiciones, se libera el sem aforo m asegurando progreso. Como ya se mencion o, esta soluci on puede simplicarse de manera general distribuyendo ambas asignaciones a b0 (tambi en puede distribuirse el incremento dado que b0 no aparece en B0 ), y simplicando luego el cuerpo en la primer alternativa (eliminando las operaciones P-V y luego el incremento seguido del decremento de b0 ). La simplicaci on mejora algo la eciencia al evitar una salida innecesaria de una regi on cr tica. La nueva soluci on, utilizada en este trabajo, se muestra en el programa 4.2 (p ag. 110). El m etodo SBD es aplicable a problemas con una cantidad arbitraria de regiones cr ticas condicionales. De manera general, la t ecnica SBD toma como entrada un conjunto tS0 , , Sm1 u de programas a ejecutarse en exclusi on mu-

110 Programa 4.2

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES Componente SCC0 generada por SBD

P.m; tI ^p B0 _ b0  0q ^p B1 _ b1  0qu if B0 tI ^ B0 ^ b0  0 ^p B1 _ b1  0qu skip B0 tI ^ B0 ^p B1 _ b1  0qu b0 : b0 1 ; tI ^p B0 _ b0  0q ^p B1 _ b1  0qu V.m; P.s0 ; tI ^ B0 ^ b0 0u b0 : b0 1 ; tI ^ B0 u S0 tI u if B0 ^ b0 0 tI ^ B0 ^ b0 0u V.s0 B1 ^ b1 0 tI ^ B1 ^ b1 0u V.s1 p B0 _ b0  0q ^p B1 _ b1  0q tI ^p B0 _ bo  0q ^p B1 _ b1 V.m

 0qu

tua, junto con sus condiciones asociadas tB0 , , Bm1 u, un conjunto de estados iniciales y un invariante global I , donde m es el n umero de regiones cr ticas condicionales que se desea implementar. Como resultado de su aplicaci on la t ecnica genera de manera autom atica una serie de m programas SCC0 , , SCCm1 que implementan las regiones cr ticas condicionales con sem aforos. El esquema de un programa SCCi se muestra en 4.3 (p ag. 111). En el mismo se utilizan m sem aforos s0 , , sm1 mas uno neutral sm , junto con m contadores b0 , , bm1 , siendo el invariante de la implementaci on SBD: . SBD 

x @ i : 0 i m : si  0 _ pBi ^ bi 0q y ^psm  0 _ x @ j : 0 j m : Bj _ bj  0 yq ^ x @ j : 0 j m : bj 0 y ^ I .

(4.2)

El tipo de simplicaciones realizadas en esta u ltima implementaci on son aplicables a cualquier problema de regiones cr ticas condicionales. Muchos problemas espec cos admiten otras simplicaciones adicionales que dependen de las particularidades de los mismos. Como ya se mencion o, el objetivo de este trabajo es realizar estas simplicaciones de manera autom atica. Con el n de

4.2. TECNICA SBD Programa 4.3 P.sm ; if Bi Bi

111 Componente SCCi generada por SBD

skip bi : bi 1 ;
V.sm ; P.si ; bi : bi 1

; tI ^ Bi u Si tI u if B0 ^ b0 0 V.s0 B1 ^ b1 0 V.s1 . . . Bm1 ^ bm1 0 V.sm1

x@j

:0j

m:

Bj

_ bj  0 y V.sm

mostrar las caracter sticas de las mismas, presentamos a continuaci on el siguiente ejemplo tomado de [Hoo90]. Ejemplo 4.1 (Productor/Consumidor en buer acotado) Consideremos el problema cl asico del Productor/Consumidor comunic andose a trav es de un buer acodado. El problema contiene dos clases de procesos: los procesos de tipo productor producen ciertos datos que ser an enviados a trav es de un buer acotado a procesos de tipo consumidor para su utilizaci on. Se necesita sincronizaci on para evitar escribir en un buer lleno o leer de un buer vac o y esto determina las correspondientes guardas. Adem as la lectura y escritura del buer debe estar dentro de una regi on cr tica. A continuaci on mostraremos los programas de estos procesos junto con sus regiones cr ticas condicionales: resource prod cons pp : int, d : int, buf : arrayr0, N q of T q .  p0^d0^N 0 produce.x; Prod: region prod cons Cons: region prod cons p d N buf.pp mod N q : x; p : p 1 end p d 0 y : buf.pd mod N q; d : d 1; end; consume.y

La constante N es el tama no del buer, p es el contador de elementos producidos y d es el de elementos consumidos. Con el n de eliminar detalles irrelevantes, nos vamos a concentrar solo en la sincronizaci on, dejando de lado el acceso al buer, el cual puede ser agregado a

112

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

la soluci on nal. Adem as, ya que las condiciones de las regiones cr ticas solo hacen referencia a la diferencia entre p y d, realizaremos un cambio de coordenadas a una sola variable n igual a p d. Esta variable denotar a la cantidad de elementos que se encuentran en el buer. Haciendo estas modicaciones, podemos encontrar el siguiente problema equivalente: resource prod cons pn : intq .  n0^N Prod: region prod cons nN end

0
n 0 n : n 1 end

n : n 1

Cons: region prod cons

De esta manera, gracias a que las regiones at omicas consisten de solo un comando, puede encontrarse f acilmente el siguiente invariante global: I .  0nN .

Con esta especicaci on del problema implementaremos las regiones cr ticas condicionales utilizando la t ecnica SBD con tres sem aforos, uno para cada condici on (s y t) m as uno neutral (m) que asegure exclusi on mutua cuando las condiciones no se cumplan o no hayan procesos esperando entrar en las regiones. Adem as agregaremos los dos contadores de procesos b y c. El invariante que caracteriza la implementaci on SBD ser a entonces: . SBD 

ps  0 _ pn N ^ b 0qq ^ pt  0 _ pn 0 ^ c 0qq ^ pm  0 _ ppn  N _ b  0q ^pn  0 _ c  0qqq ^0nN ^b0^c0 .

Notar que las condiciones fueron simplicadas usando el invariante global I . A continuaci on se muestran los programas generados por la t ecnica: Programa 4.4 Prod: P.m; if n N nN Productor/Consumidor Cons: P.m; if n 0 skip n  0 c : c 1; V.m; P.t ; c : c 1 ; n : n 1; if n N ^ b 0 V.s n 0 ^ c 0 V.t pn  N _ b  0q ^ pn  0 _ c  0q V.m

; n : n 1; if n N ^ b 0 V.s n 0 ^ c 0 V.t pn  N _ b  0q ^ pn  0 _ c  0q V.m

skip b : b 1; V.m; P.s ; b : b 1

La soluci on puede ser simplicada eliminando varias condiciones a la salida de las secciones cr ticas (if nal), dado que puede asegurarse que nunca ser an

4.2. TECNICA SBD

113

satisfactibles. Evitar el chequeo de estas guardas tendr a un impacto importante en la eciencia de este programa, dado que en general las secciones cr ticas no son extensas pero son ejecutadas muchas veces. La primera observaci on sobre estos programas es que despu es de haberse producido un elemento el buer el mismo no puede quedar vac o. Utilizando esta idea mostraremos la correcci on de la condici on de prueba marcada con signo de pregunta: Programa 4.5 Prod: P.m; if n N skip n  N b : b 1; V.m ; P.s ; b : b 1 ; tn N u n : n 1; tn 0?u if n N ^ b 0 V.s n 0 ^ c 0 V.t pn  N _ b  0q ^pn  0 _ c  0q V.m Este predicado puede ser probado f acilmente ya que wp.pn : n1q.pn 0q es igual a n 0 lo cual es implicado por el invariante global I . El an alisis sim etrico puede ser aplicado al programa consumidor obteni endose la precondici on n N de su if nal (despu es del decremento de la variable n). Adem as, con estas anotaciones, las guardas de las sentencias pueden ser simplicadas: Programa 4.6 Productor/Consumidor Productor

Prod: Cons: P.m; P.m; if n 0 skip if n N skip n  N b : b 1; V.m ; n  0 c : c 1; V.m ; P.s ; b : b 1 P.t ; c : c 1 ; ; tn N u tn 0u n : n 1; n : n 1; tn 0u tn N u if n N ^ b 0 V.s if b 0 V.s c 0 V.t n 0 ^ c 0 V.t pn  N _ b  0q ^ c  0 V.m b  0 ^pn  0 _ c  0q V.m Observando el comportamiento operacional de los programas, resulta poco probable que un productor libere (mediante una operaci on V) a otro productor, lo cual implicar a la posible eliminaci on de la primer guarda del if nal en este programa. Esta sospecha en el comportamiento del sistema surge de la observaci on que la asignaci on n : n 1 no puede volver verdadero al predicado

114

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

n N . Para justicar este hecho, es necesario un razonamiento m as complejo, pero una caracter stica del m etodo aqu presentado es que si se sospecha sobre la validez de cierta propiedad solo tenemos que intentar probarla. En este sentido, el procedimiento que se describe a continuaci on ser a totalmente automatizado. Para eliminar esta guarda necesitaremos probar la validez de la condici on de prueba (negaci on de la guarda) se nalada con signo de pregunta:

Programa 4.7 Prod: P.m; if n N skip n  N b : b 1; V.m ; P.s ; b : b 1 ; tn N u n : n 1; tn 0utn  N _ b  0?u if n N ^ b 0 V.s c 0 V.t pn  N _ b  0q ^ c  0 V.m

Productor

Calculando el transformador de weakest precondition sobre este predicado obtenemos que n 1  N _ b  0 debe cumplirse despu es del primer if . Sobre su primera rama esta condici on se cumple debido a que es implicada por la componente del invariante Im correspondiente al sem aforo m. Aplicando el transformador sobre la segunda se obtiene el predicado n 1  N _ b  1 como poscondici on para P.s. El m etodo cl asico para su vericaci on consiste en fortalecer de manera guiada el invariante Is , de forma tal que implique la condici on de prueba. De esta forma propondremos fortalecer la parte del invariante correspondiente al sem aforo s:

s0

_ pn 1  N ^ b 0q

Este nuevo invariante fortalecido requiere que todo V.s tenga como precondici on n 1  N ^ b 0, en particular dentro del programa consumidor. A continuaci on se detallan los programas con sus anotaciones y esta u ltima condici on de prueba:

4.2. TECNICA SBD Programa 4.8

115 Productor/Consumidor

Prod: Cons: P.m tn  N _ b  0u; P.m; if n N tb  0u skip if n 0 skip n  N b : b 1; V.m ; n  0 c : c 1; V.m ; P.s ; b : b 1 P.t ; c : c 1 tn 1  N u ; tn 0u ; tn N u tn 1  N _ b  0u n : n 1; n : n 1; tn N u tn 0u tn  N _ b  0u if b 0 tn 1  N ?u V.s n 0 ^ c 0 V.t if n N ^ b 0 V.s c 0 V.t b  0 ^pn  0 _ c  0q V.m pn  N _ b  0q ^ c  0 V.m La misma requiere como precondiciones v alidas a n1  N _ b  0 antes de su if nal y n  N _ b  0 antes del decremento n : n 1. En el if precedente, el invariante asociado al sem aforo m asegura su validez, pero en la operaci on P.t su nueva poscondici on deber a cumplir n  N _ b  0. La estrategia usual en estos casos es fortalecer la parte del invariante correspondiente al sem aforo t con esta condici on: t0

_ pc 0 ^ n 0 ^pn  N _ b  0qq

Este invariante genera nuevas condiciones de prueba con respecto a las operaciones V.t, o sea deben tener como precondici on v alida el fortalecimiento n  N _ b  0. La anotaciones en el anterior programa productor muestran que este requerimiento adicional es alcanzado mientras que en el consumidor queda la obligaci on de prueba se nalada: Programa 4.9 Cons: P.m tn  N _ b  0u; if n 0 skip n  0 c : c 1; V.m ; P.t ; c : c 1 tn  N _ b  0u ; tn 0u tn  N _ b  0u n : n 1; tn N u tn 1  N _ b  0u if b 0 tn 1  N u V.s n 0 ^ c 0 tn  N _ b  0?u V.t b  0 ^pn  0 _ c  0q V.m Esta u ltima condici on no puede ser vericada a menos que fortalezcamos nuevamente el invariante del sistema. La forma de este fortalecimiento puede Consumidor

116

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

intuirse observando la naturaleza sim etrica del problema e intentando eliminar tambi en la segunda guarda del u ltimo comando if del consumidor (un consumidor no necesita liberar a otro consumidor). Esto trae como consecuencia la necesidad de fortalecer a un m as el invariante y procediendo de manera similar puede encontrarse el invariante nal: . SBD 

ps  0 _ b 0 ^ n N ^pn 1  N _ 1  bq ^pc 1 _ n  0qq ^ pt  0 _ c 0 ^ n 0 ^p1  n _ 1  cq ^pb 1 _ n  N qq ^ pm  0 _ ppn  N _ b  0q ^pn  0 _ c  0qqq


Productor/Consumidor Cons: P.m; if n 0 skip n  0 c : c 1; V.m ; P.t ; c : c 1 ; n : n 1; if b 0 V.s b  0 V.m

resultando una implementaci on SBD con las guardas eliminadas: Programa 4.10 Prod: P.m; if n N nN

; n : n 1; if c 0 V.t c  0 V.m

skip b : b 1; V.m ; P.s ; b : b 1

N otese que dos guardas han sido completamente eliminadas y las otras simplicadas, pasando de evaluar ocho desigualdades a s olo dos. El m etodo propuesto en este trabajo s olo realiza la eliminaci on de las guardas, no las simplicaciones. Sin embargo, dado que los invariantes ya est an calculados el proceso de simplicaci on de guardas es elemental. Cabe adelantar que mediante el m etodo propuesto en este trabajo se obtiene un invariante m as d ebil y no es necesario eliminar ambas guardas al mismo tiempo. Esto es debido a la naturaleza de la t ecnica donde utilizamos propagaci on hacia atr as lo cual envuelve el c alculo del mayor punto jo mostrado en la secci on 2.3.2 (p ag. 53). A partir del desarrollo del ejemplo puede vislumbrarse la metodolog a propuesta en este trabajo: partiendo del invariante inicial, se elige una guarda a eliminar y se propaga, mediante el transformador wp, la negaci on de la guarda en cuesti on. El proceso fortalece aquel invariante de manera gradual (obteni endose invariantes intermedios) hasta deducir la validez de la negaci on de la guarda. Como se mostrar a m as adelante, el fortalecimiento gradual del invariante es an alogo al m etodo iterativo de propagaci on hacia atr as expuesto en la secci on 2.3.2 (p ag. 53), donde la propiedad a demostrar es justamente la negaci on de la guarda. El problema de vericaci on y eliminaci on de guardas nales superuas en implementaciones de regiones cr ticas condicionales no es nuevo. A continuaci on se detallan algunos antecedentes de nuestro trabajo.

4.3. ANTECEDENTES

117

4.3

Antecedentes

La idea general de la t ecnica SBD fue descubierta por C.A.R. Hoare en [Hoa74] como una forma de implementar monitores con sem aforos. En ese art culo la misma no es recomendada por razones de eciencia, aconsej andose implementar los monitores directamente en el hardware o en los sistemas operativos. La t ecnica fue despu es sistematizada por E.W. Dijkstra en [Dij79]. All adem as se demuestran de forma manual las mejoras que haremos de manera autom atica en nuestro trabajo. Como antecedente de este trabajo, en la literatura se pueden encontrar dos trabajos que intentan aplicar t ecnicas asercionales de car acter mec anico para el an alisis y mejoramiento de eciencia. En [Cla79] se muestra un m etodo para encontrar invariantes de regiones cr ticas condicionales de manera autom atica. El mismo consiste en el c alculo del menor punto jo del transformador de propagaci on hacia adelante, utilizando solamente la t ecnica de abstracci on por poliedros convexos presentada en el cap tulo 3. El m etodo presentado solo puede aplicarse a sistemas de regiones cr ticas condicionales con una cantidad de procesos en ejecuci on jo y peque no. En la publicaci on se muestra la aplicaci on del m etodo sobre el problema de lectores y escritores con solo dos lectores y un escritor. Nuestro trabajo resuelve el mismo tipo de problema para una cantidad no acotada de procesos haciendo una abstracci on de las colas de procesos como se ver a en la secci on siguiente. La complejidad de este modelo de concurrencia hace que el uso exclusivo del m etodo de Cousot no alcance para obtener invariantes lo sucientemente fuertes como para eliminar los chequeos innecesarios. En nuestro trabajo se intent o usar esta t ecnica pero los invariantes obtenidos fueron m as d ebiles que los invariantes que provee la t ecnica SBD (ecuaci on 4.2) lo cual no permite resolver el problemas de eliminaci on de guardas nales. Otro trabajo, a un m as cercano al nuestro, es presentado en [Sch76]. El mismo muestra un m etodo para implementar regiones cr ticas condicionales de manera eciente, disminuyendo la cantidad de chequeos innecesarios para una cantidad no acotada de procesos. Dado un conjunto de regiones cr ticas condicionales: RCCi : region rcc Bi

Si end

con

i  1, , m 1 ,

el m etodo construye una relaci on ea entre pares de regiones cr ticas condicionales tal que pRCCk , RCCj q P ea si la ejecuci on de Sk puede cambiar de false a true la evaluaci on de Bj en cualquier elemento del espacio de estados (no solamente los estados alcanzables). Notar que esta fue la intuici on inicial para eliminar la primera guarda en el ejemplo anterior, aunque hubo que demostrarla. A partir de esta relaci on se implementa un sistema de colas de espera donde un proceso RCCk libera a un proceso encolado RCCj si pRCCk , RCCj q P ea. De esta forma, despu es de ejecutarse RCCk solo hay que evaluar las guardas de los procesos bloqueados ejecutando RCCj siempre que pRCCk , RCCj q P ea. Esta simple idea para eliminar chequeos innecesarios no funciona sobre implementaciones SBD. Tomemos como contraejemplo el siguiente sistema de regiones cr ticas condicionales, el cual es una variaci on del problema productor/consumidor: al problema del ejemplo 4.1 agreguemos una componente que consuma siempre y cuando el buer tenga solo un elemento, esto es:

118

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES resource p c pn : intq .  n0^N Prod: region p c n N n : n 1 end

.  0nN Cons: region p c n 0 n : n 1 end

Cons1: region p c

n  1 n : n 1 end

En este ejemplo la relaci on ea ser a: ea .  tpProd, Consq, pProd, Cons1q, pCons1, Prodq, pCons1, Cons1q, pCons, Prodq, pCons, Cons1qu .

Por la misma se puede deducir que un productor no puede liberar a otro productor. Como veremos este resultado no es aplicable a implementaciones SBD. Veamos la siguiente traza de ejecuci on con un buer de tama no dos (N  2) donde se ejecutan cuatro procesos p1 , p2 , p3 , p4 de tipo Prod, c1 de tipo Cons1 y c de tipo Cons, en este orden: Ejecuci on p1 , p2 , p3 , p4 c1 c c1 p3 Buer En espera Prod  rp3 , p4 s

Prod  rp3 , p4 s, Cons1  rc1s Prod  rp3 , p4 s, Cons1  rc1s Prod  rp3 , p4 s, Cons1  H Prod  rp4 s, Cons1  H

En la conguraci on nal el proceso p4 queda bloqueado lo cual muestra que la soluci on no asegura el progreso del sistema. Nuestro m etodo resuelve correctamente este problema ya que no elimina la posibilidad que un productor pueda liberar otro de su misma clase. Visto en el sentido de la publicaci on [Sch76], nuestro m etodo agrega el par pProd, Prodq a la relaci on ea. Adem as, rena a un m as esta relaci on eliminando el par pCons1, Cons1q el cual resulta innecesario (un consumidor de tipo Cons1 no necesita liberar a procesos de su misma clase). El resultado de la aplicaci on de nuestro m etodo a este problema, puede verse al nal de este cap tulo (secci on 4.8.2).

4.4

SBD como sistema de transiciones

En esta secci on explicaremos como representar los programas generados por la t ecnica SBD con sistemas de transiciones. En [MP91] se propone la manera cl asica de modelar procesos concurrentes con estas estructuras. La idea general consiste en obtener primero un sistema de transiciones para cada proceso aislado (de la forma ilustrada en el cap tulo 1) y a partir de ellos construir su composici on paralela como un producto, seg un la sem antica cl asica de interleaving utilizada en concurrencia. Al ser este producto nito, la cantidad de procesos que involucra el mismo tambi en debe serlo. Adem as, para denotar el estado en

4.4. SBD COMO SISTEMA DE TRANSICIONES

119

un momento de la ejecuci on, se agrega una variable extra que denota los valores de los contadores de programa de cada proceso. De esta forma, el valor de la variable es una n-upla de elementos en L (una coordenada por cada proceso). Un problema que surge al intentar modelar de esta manera el comportamiento de los procesos concurrentes es que en nuestro caso la cantidad de procesos no est a acotada. Por m as que las cantidad de regiones cr ticas a implementar sea una constante del problema, los cantidad de procesos que las ejecutan no lo es. Por ejemplo, en el problema Productor/Consumidor solo hay dos regiones cr ticas a implementar, pero la cantidad de procesos productores y consumidores no se conoce a priori. De esta manera resulta imposible obtener el producto nito de la composici on paralela por lo que se hace necesario abstraer de alguna forma el modelo de concurrencia. Establecer una cota para estos procesos (a la manera en [Cla79], secci on anterior) resulta articial, y como veremos, innecesario. En vez de esta alternativa, construiremos un sistema de transiciones diferente que represente acciones at omicas m as extensas y m as abstractas. Esto es posible gracias a ciertas particularidades de los programas generados por SBD: Exclusi on mutua: Como se mencion o en la secci on 4.2 todos los programas comienzan su ejecuci on con una operaci on P y terminan con una operaci on V. Adem as, todos las sentencias entre ellas son ejecutadas en exclusi on mutua. Esto es una caracter stica de las implementaciones brindadas por el m etodo: SBD asegura exclusi on mutua entre cualquier par de operaciones P y V, i.e. a los sumo un sem aforo se encuentra encendido en cualquier punto de ejecuci on2 . A partir de esta propiedad podemos considerar las secuencias de sentencias P.si ; c1 ; ; cn ; V.sj dentro de las implementaciones SBD como at omicas. Con el n de puntualizar la explicaci on, a esta clase de secuencias las denominaremos secci on S ij , donde i ser a el ndice del sem aforo habilitado por la operaci on P inicial y j el correspondiente al sem aforo modicado por la operaci on V nal. Regla del domin o: Por la sem antica de los sem aforos podemos asumir que toda operaci on V es seguida por una operaci on P sobre el mismo sem aforo, i.e. despu es que una secci on S ij termina, solo puede continuar alguna secci on S kl con j  k . Localidad de las variables: Las variables utilizadas por los programas SBD no pueden ser modicadas por otros procesos, i.e. el sistema es cerrado. La propiedad de exclusi on mutua implica que las secciones S ij son ejecutadas una a la vez para todos los procesos. Los posibles interleavings entre diferentes procesos son realizados fuera de estas secciones, las cuales pueden considerarse at omicas. Considerando las dem as propiedades, el comportamiento del sistema puede ser modelado como una ejecuci on de las secciones ua su car acter secuencial. S i1 j1 ; S i2 j2 ; ; S ik jk ; con jk  ik1 lo cual acent Otra manera de ver este comportamiento, es pensar el sistema como procesos secuenciales con saltos (sentencias goto) no deterministas entre operaciones V y P sobre el mismos sem aforo (saltando entre distintas secciones). Esta u ltima analog a nos servir a para representar el comportamiento con sistemas de transiciones. Cabe aclarar que esta visi on secuencial en la ejecuci on de las secciones no altera la concurrencia del sistema en su conjunto, fuera de las secciones. Los
2 Una

discusi on m as extensa sobre este punto se encuentra en [Dij79].

120

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

programas que ejecutan las regiones cr ticas condicionales seguir an funcionando de manera concurrente: la ejecuci on de las secciones es at omica pero fuera de ellas los procesos se comportan concurrentemente. Nuestra modelizaci on hace abstracci on de esta concurrencia enfoc andose solo en la din amica de las secciones. A partir de estas caracter sticas podemos modelar el comportamiento con un sistema de transiciones de granularidad mayor a los propuestos en [MP91], lo cual simplica su tratamiento: representaremos cada secci on S ij como una transici on, identicando con locaciones a los sem aforos que se encuentra activos antes y despu es de la ejecuci on de la secci on (i.e. si y sj para la secci on S ij ). M as espec camente, cada transici on estar a asociada con la secuencia de acciones dentro de la regi on at omica denotada por una secci on, y sus locaciones de salida y entrada har an referencia a los sem aforos de la secci on. Con el n de simplicar el modelado pediremos que los programas Si sean sentencias totales y deterministas. La primera restricci on es normalmente impuesta sobre los programas de las regiones cr ticas condicionales para garantizar progreso. La segunda no limita las posibilidades de modelado ya que si un programa Si posee no determinismo acotado (son programas ejecutables, ver secci on 1.5.2, p ag. 21), el mismo puede descomponerse en sus partes deterministas y se puede derivar un sistema equivalente construyendo una regi on cr tica condicional para cada una. Para mostrar como se modelar an las implementaciones SCCi anotaremos moment aneamente y solo con nes explicativos el programa 4.11 (p ag. 121): el comienzo en el texto del programa donde se ejecuta una secci on S jk (comenzando en una sentencia P.sj ) se se nalar a con el texto inj , y su nalizaci on con el texto outk (nalizando en una sentencia V.sk ). Para evitar ambig uedades, se primar a la anotaci on correspondiente a la primera operaci on V.sm (dentro del andola de la que aparece al nal (en la ultima guarda del if if inicial) diferenci 1 nal). Por ejemplo, una secci on S mm comienza su ejecuci on en inm y termina 1 en outm incrementando el contador y siempre que se satisfaga la guarda Bi . De esta forma, la secci on ser a: P.sm ; r Bi s; bi : bi1 ; V.sm . Por otro lado, una secci on S mj (con j m) comenzar a en el mismo punto de ejecuci on y nalizar a en outj ejecutando el programa Si , siempre que se verique la guarda del if inicial Bi y la guarda del if nal Bj ^ bj 0. La secci on puede escribirse como: P.sm ; rBi s; Si ; rBj ^ bj 0s; V.sj . La idea general para obtener el sistema de transiciones que modele el comportamiento de las implementaciones SBD, ser a asociar cada secci on con una transici on. Adem as, para simplicar la exposici on, cada transici on ser a escrita como una sentencia guardad de la forma B s1 ; ; sk con s1 , , sk sentencias deterministas y totales (i.e. asignaciones). La condici on B ser a calculada propagando el transformador wlp (secci on1.4.2, p ag. 12) sobre las sentencias que compongan la secci on. A continuaci on enumeraremos todas las transiciones para cada implementaci on SCCi diferenci andolas en distintas clases seg un los puntos de inicio y nalizaci on de cada secci on.

4.4. SBD COMO SISTEMA DE TRANSICIONES Programa 4.11 inm : out1 m: ini : P.sm ; if Bi Bi

121

Componente anotada SCCi generada por SBD

skip bi : bi 1 ;
V.sm ; P.si ; bi : bi 1

out0 : out1 : . . . outj : . . . outm1 : outm :

; Si ; if B0 ^ b0 V.s0 B1 ^ b1 V.s1 . . . Bj ^ bj V.sj . . .

0 0 0 0
Bj

Bm1 ^ bm1 V.sm1

x@j

V.m

:0j

m:

_ bj  0 y

Clase 1: desde inm a out1 m. Las secciones entre estos puntos de inicio y nalizaci on son de la forma P.sm ; r Bi s; bi : bi1 ; V.sm . Por lo tanto, sus transiciones derivadas ser an ejecutada solo si se cumple la condici on Bi lo cual nos dar a la guarda de la sentencia en la transici on. El estado cambia por el incremento del contador de procesos en espera bi . Las m transiciones (una para cada SCCi ) as obtenidas ser an: con 0 i m.

p sm ,

Bi

bi : bi 1, sm q

Clase 2: desde inm a outj (0 j

m). ^ bj 0s; V.sj

Las secciones entre estos puntos de inicio y nalizaci on ser an ejecutadas si se cumple Bi en el if inicial y Bj ^ bj 0 despu es del cambio de estado producido por Si . Por lo tanto pueden escribirse como P.sm ; rBi s; Si ; rBj .

Si queremos derivar la transici on como una sentencia guardada podemos propagar hacia atr as la guarda nal Bj ^ bj 0. Esto puede realizarse aplicando

122

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

el transformador wlp en el programa Si sobre la guarda. Esta transformaci on es posible gracias a que Si es determinista. Al nalizar esta clasicaci on profundizaremos sobre este asunto. Las transiciones as obtenidas ser an:

p sm , Bi ^ wlp.Si .pBj ^ bj 0q Si , sj q con 0 i m y 0 j m.


Clase 3: desde inm a outm . Las secciones en cuesti on comenzar an en el mismo punto que las anteriores pero en el caso que ninguna de las primeras m guardas del if nal se satisfagan: P.sm ; rBi s; Si ; rx @ j : 0 j

m:

Bj

_ bj  0 ys; V.sm

De esta forma, para obtener las transiciones asociadas, deberemos propagar la u ltima guarda mediante el transformador wlp sobre el programa Si :

p sm , Bi ^ wlp.Si . x @ j : 0 j m : con 0 i m. Clase 4: desde ini a outj (0 i, j m).


P.si ; bi : bi 1; Si ; rBj

Bj

_ bj  0 y Si , sm q

Las secciones comenzar an en la sentencia P.si dentro del primer if y nalies de alterar el zar an en alguna de las primeras m guardas del if nal despu estado por el decremento del contador de procesos bi y la ejecuci on de Si :

^ bj 0s; V.sj

Para calcular las guardas de las transiciones asociadas, deberemos aplicar el transformador wlp a las guardas Bj ^ bj 0 sobre el decremento del contador bi compuesto secuencialmente con el programa Si . Realizando este c alculo sobre los m programas SCCi con sus m guardas nales, obtendremos las siguientes transiciones:

p si , wlp.pbi : bi 1; Si q.pBj ^ bj 0q bi : bi 1; Si , sj q con 0 i m y 0 j m. Clase 5: desde ini a outm (0 i m).


Las secciones comenzar an en el mismo punto que las anteriores pero nalizar an en la u ltima guarda del if nal: P.si ; bi : bi 1; Si ; rx @ j : 0 j

m:

Bj

_ bj  0 ys; V.sm

De la misma forma, para obtener las guardas de las transiciones aplicaremos el transformador wlp a la guarda nal x @ j : 0 j m : Bj _ bj  0 y sobre el decremento del contador bi compuesto secuencialmente con el programa Si :

p si ,

con 0 i m.

wlp.pbi : bi 1; Si q.x @ j : 0 j m : , sm q

Bj

_ bj  0 y bi : bi 1; Si

4.4. SBD COMO SISTEMA DE TRANSICIONES

123

Nota: En el anterior desarrollo se obtuvieron las guardas de las transiciones calculando el transformador wlp de las condiciones nales sobre los programas Si . Una de las restricciones impuestas es estos programas es que sean deterministas. Veremos que si esta propiedad no se cumple el sistema de transiciones resultante puede no modelar correctamente el comportamiento de las implementaciones SBD. Por ejemplo, sea un programa Si : Si .  if T x : 0 T x : 1

que conforma una secci on P.si ; rBi s; Si ; rBj

^ bj 0s; V.sj

con la condici on Bj igual a x  0. A partir del modelado descripto, la sentencia de la transici on asociada a esta secci on ser a: Bi ^ wlp.Si .pBj ^ bj 0q Si . Si calculamos el t ermino wlp.Si .pBj wlp.Si .pBj

^ bj 0q de la guarda anterior obtenemos:

    

^ bj 0q 0q 0q 0q

{ Denici on de Bj } wlp.Si .px  0 ^ bj

wlp.Si .px  0q ^ wlp.Si .pbj

{ Conjuntividad de wlp }

{ C alculo de wlp con Si denido } { L ogica de predicados }

T 0  0 ^ T 1  0 ^ wlp.Si .pbj T ^ F ^ wlp.Si .pbj F

0q

{ L ogica de predicados }

Por lo tanto la guarda de la transici on resultante sera falsa para cualquier estado, y no produce ninguna ejecuci on posible. Por otro lado la secci on original posee ejecuciones posibles gracias al no determinismo de Si : dado un scheduler que elija la primer guarda de Si , Bi ser a satisfecha. Esta falla en el modelado se debe a que el transformador wlp calcula los estados desde los cuales la ejecuci on de Si resulta en otro que cumple la poscondici on, cualquiera sea la elecci on no determinista (o sea para cualquier scheduler). En el caso que el programa sea determinista, el transformador wlp distribuye con respecto a la implicaci on, por lo cual la secci on y la transici on generada son equivalentes:

wlp.prBi s; Si ; rBj Bi

^ bj 0sq.Q

{ Denici on de wlp }

wlp.Si .pBj ^ bj 0 Qq

124

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

  

{ Si determinista, wlp distribuye con la implicaci on (propiedad 1.12.6, p ag. 15) } Bi pwlp.Si .pBj ^ bj 0q wlp.Si .Qq { L ogica de predicados } Bi ^ wlp.Si .pBj { Denici on de wlp }

^ bj 0q wlp.Si .Q ^ bj 0q Si q.Q

wlp.p Bi ^ wlp.Si .pBj

Nota: Nuestro modelo de regiones cr ticas con sistema de transiciones no tiene en cuenta los cambios de estado producidos fuera de las mismas ni el orden en que las regiones son ejecutadas: solo se representa el sistema de regiones sin incluir el contexto donde se ejecutan. Con esta simplicaci on el sistema de transiciones podr a modelar m as ejecuciones (secci on 1.7, p ag. 28) de las que se realizan en el sistema de regiones concreto. Un ejemplo claro de este fen omeno se da en el problema de lectores/escritores (especicado en la secci on 4.8.4 m as adelante). En el mismo, un lector (o escritor) ejecuta la regi on de salida solo si antes ejecut o la de entrada. Como el modelado se hace sobre cada regi on por separado y sin tener en cuenta la relaci on entre las mismas, habr a ejecuciones de la regi on de salida sin haber antes una sobre la entrada. De esta manera, se incluir an ejecuciones en el sistema de transiciones que no pertenecen al problema concreto. Este tipo de abstracci on realizada en el modelado no altera la correcci on del m etodo propuesto, ya que al incluir nuevas ejecuciones los invariantes del sistema de transiciones ser an m as d ebiles que los del problema concreto. Esta posible relajaci on de los invariantes no impidi o encontrar la soluci on en los problemas donde se aplic o nuestro m etodo (secci on 4.8). Cabe destacar, que la simplicaci on lograda con esta abstracci on es central para poder resolver el problema ya que modelar todo el contexto resultar a en sistemas de transiciones de tama no demasiado grande para ser tratados. l Las transiciones enumeradas forman el conjunto del sistema de transicio. nes TS  pL, S , , q que modela el comportamiento de una implementaci on SBD. Como ya se mencion o, el conjunto de locaciones L estar a identicado con el conjunto de sem aforos: L .  tsi | 0 i mu

y las conguraciones iniciales ser an: .  false si 0 i m , . .sm  ^ x @ j : 0 j m : bi  0 y .si con la condici on inicial del problema. El conjunto de sentencias S estar a formado por los comandos guardados de las transiciones. A partir del invariante brindado por la t ecnica SBD en la ecuaci on 4.2 (p ag. 110), podemos obtener un invariante inicial para el sistema de transiciones generado. Notar que cada t ermino conjuntivo de aquel, correspondiente a un sem aforo, es el predicado que se cumple si el sem aforo se encuentra activo, es decir, al momento de ejecutar las transiciones que salen del sem aforo. De esta

4.4. SBD COMO SISTEMA DE TRANSICIONES

125

forma, cada uno de estos t erminos ser a el invariante en la locaci on identicada con el sem aforo: .  Bi ^ bi 0 ^ I si 0 i m SBD .si . (4.3) Bj _ bj  0 y ^ SBD .sm  x @ j : 0 j m : x @ j : 0 j m : bj 0 y ^ I con I el invariante del problema. Ejemplo 4.2 (Productor/Consumidor con sistema de transiciones) A manera de ejemplo, veremos como representar con sistemas de transiciones la soluci on SBD del problema Productor/Consumidor sobre buer acotado (ejemplo anterior en p ag.111). La implementaci on del componente productor se muestra en el programa 4.12. Para adecuarnos al esquema general anteriormente Programa 4.12 in2 : out1 2: in0 : P.s2 ; if n N nN Productor anotado

skip b0 : b0 1;
V.s2 ; P.s0 ; b0 : b0 1

; n : n 1; if n N ^ b0 0 out0 : V.s0 n 0 ^ b1 0 out1 : V.s1 pn  N _ b0  0q ^pn  0 out2 : V.s2

_ b1  0q

explicado, hemos reemplazado los sem aforos s (sem aforo de bloqueo del productor), t (sem aforo de bloqueo del consumidor) y m (el sem aforo neutral) por s0 , s1 y s2 respectivamente. Tambi en reemplazamos los contadores b (contador de esperas de productores) y c (contador de esperas de consumidores) por b0 y b1 respectivamente. Las guardas tambi en fueron reemplazadas para seguir el esquema general (en el programa 4.11) de las implementaciones SBD. Comenzando en in2 (operaci on P.s2 al principio del programa) tenemos cuatro posibles secciones que terminan en out1 2 , out0 , out1 y out2 . La primera se traducir a a una transici on de clase 1, las dos siguientes ser an de clase 2 y la u ltima ser a de clase 3. Las guardas de estas transiciones ser an obtenidas buscando la condici on que se debe satisfacer para ejecutar la secci on correspondiente. Tomemos como ejemplo la secci on que naliza en out1 : 2 Al principio de su ejecuci on se deber a satisfacer la guarda n N . Por lo tanto la condici on de la asignaci on guardad de la transici on sera exactamente esta guarda. La parte de la asignaci on, en esta sentencia de la transici on, P.s2 ; r n N s; b0 : b0 1; V.s2 .

126

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

ser a obtenida directamente por el cambio de estado producido por la secci on correspondiente. En este caso, solo tenemos la asignaci on b : b 1 como posible sentencia de cambio de estado. Adem as, las locaciones de salida y entrada estar an representadas por el sem aforo inicial en la operaci on P y el nal en la operaci on V respectivamente. De esta forma la transici on en cuesti on ser a:

ps2 ,

nN

b0 : b0 1, s2 q

Continuaremos con las tres secciones siguientes que comienzan en in2 : P.s2 ; rn N s; n : n 1; rn N ^ b0 0s; V.s0 , P.s2 ; rn N s; n : n 1; rn 0 ^ b1 0s; V.s1 , P.s2 ; rn N s; n : n 1; rpn  N _ b0  0q ^pn  0

Adem as, cada secci on naliza vericando las condiciones en el if nal. De esta forma, las transiciones podr an ejecutarse solo si se satisface alguna de estas condiciones al nalizar su ejecuci on. Como la denici on de la asignaci on guardada en la transici on requiere que su guarda sea vericada antes de la asignaci on, propagaremos con el transformador wlp sobre la secci on. Al igual que con la transici on obtenida anteriormente, las locaciones de entrada y salida ser an los sem aforos de las operaciones P y V. Por ejemplo, de la secci on que termina en out0 obtendremos la siguiente transici on de clase 2:

_ b1  0qs; V.s2 . Para ejecutar cualquiera de ellas debe cumplirse la guarda n N del if inicial.

ps2 ,

nN

^ wlp.pn : n 1q.pn N ^ b0 0q n : n 1, s0 q
n1N

Calculando el resultado del transformador wlp y simplicando la guarda, podemos escribir la transici on como:

ps2 ,

^ b0 0 n : n 1, s0 q

El resto de las transiciones que comienzan en in2 es calculado de la misma manera. Existen adem as tres secciones que comienzan en la operaci on P dentro del if inicial (en in0 ) y terminan en alguna operaci on V dentro del if nal (out0 , out1 u out2 ): P.s0 ; b0 : b0 1; n : n 1; rn N ^ b0 0s; V.s0 , P.s0 ; b0 : b0 1; n : n 1; rn 0 ^ b1 0s; V.s1 , P.s0 ; b0 : b0 1; n : n 1; rpn  N _ b0  0q ^pn  0

_ b1  0qs; V.s2

Las guardas de las asignaciones en las transiciones generadas por esta secciones ser an obtenidas propagando, con el transformador wlp, las condiciones del if nal sobre las sentencias de las secciones, de la misma forma que se explic o anteriormente. Estas secciones ejecutan el decremento del contador de procesos y el incremento de la variable n. Las asignaciones de las secciones ser an modeladas como un asignaci on m ultiple. Por ejemplo, de la secci on que termina en out1 (segunda secci on anterior, donde se despierta un consumidor) se derivar a la siguiente transici on de clase 4:

ps0 ,

wlp.pbo , n : b0 1, n 1q.pn 0 ^ b1

0q b0 , n : b0 1, n 1, s1 q

4.4. SBD COMO SISTEMA DE TRANSICIONES y calculando el resultado del transformador wlp obtendremos:

127

ps0 ,

n 1 0 ^ b1

0 b0 , n : b0 1, n 1, s1 q

Las transiciones correspondiente al consumidor se obtienen de manera an aloga. En el gr aco 4.1 se muestran todas las transiciones as calculadas. Grafo de transiciones 4.1 Sistema de transiciones Productor/Consumidor sem aforo neutral 4

1 s2 3 9

8 11

2 7 10 14 6 12 s1 13
sem aforo consumidor

sem aforo productor

s0 5

Transiciones Productor: n N b0 : b0 1, s2 q , 1 : ps2 , 2 : ps2 , n 1 N ^ b0 0 n : n 1, s0 q , 3 : ps2 , n N ^ n 1 0 ^ b1 0 n : n 1, s1 q , 4 : ps2 , n N ^p n 1 N _ b0  0q ^p n 1 0 _ b1  0q n : n 1, s2 q , 5 : ps0 , n 1 N ^ b0 1 0 b0 , n : b0 1, n 1, s0 q , 6 : ps0 , n 1 0 ^ b1 0 b0 , n : b0 1, n 1, s1 q , 7 : ps0 , p n 1 N _ b0 1  0q ^p n 1 0 _ b1  0q b0 , n : b0 1, n 1, s2 q Transiciones Consumidor: 8 : ps2 , n 0 b1 : b1 1, s2 q , 9 : ps2 , n 0 ^ n 1 N ^ b0 0 n : n 1, s0 q , 10 : ps2 , n 1 0 ^ b1 0 n : n 1, s1 q , 11 : ps2 , n 0 ^p n 1 N _ b0  0q ^p n 1 0 _ b1  0q n : n 1, s2 q , 12 : ps1 , n 1 N ^ b0 0 b1 , n : b1 1, n 1, s0 q , 13 : ps1 , n 1 0 ^ b1 1 0 b1 , n : b1 1, n 1, s1 q , 14 : ps1 , p n 1 N _ b0  0q ^p n 1 0 _ b1 1  0q b1 , n : b1 1, n 1, s2 q . Estas transiciones conforman el conjunto del sistema TS  pL, S , , q que modela el comportamiento de los procesos consumidores y productores. Adem as, el conjunto de sentencias S ser an las asignaciones guardadas en las

128

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES .  ts0 , s1 , s3 u

transiciones, el conjunto de locaciones ser an los tres sem aforos L y el conjunto de conguraciones iniciales ser a: .  rfalse, false, n  0 ^ N 0 ^ b0  0 ^ b1  0s

(n  0 ^ N 0 es la condici on inicial del problema ). Como ya se mencion o, la t ecnica SBD provee adem as el siguiente invariante del sistema de transiciones: . SBD 

r 0 n N ^ b0 0, 0 n N ^ b1 0, p n N _ b0  0q ^p n 0 _ b1  0q ^ 0 n N ^ b0 0 ^ b1 0 s .

4.5

Eliminaci on de guardas

En esta secci on comenzaremos a desarrollar el m etodo para eliminar guardas nales en las implementaciones SBD. Como veremos, el mismo no solo encuentra estas simplicaciones, si no que adem as detecta la imposibilidad de eliminaci on de aquellas guardas. La t ecnica propuesta es incompleta, en el sentido que puede no detectar guardas cuya eliminaci on es correcta, sin embargo en la mayor a de los ejemplos de la literatura se detectaron todas las simplicaciones posibles. Cabe remarcar que esta incompletitud no es un problema a la hora de obtener programas correctos: las implementaciones de regiones cr ticas condicionales producidas por la t ecnica SBD sin estas simplicaciones son correctas aunque menos ecientes. Como se mencion o al inicio de este cap tulo, el objetivo de aplicaci on del m etodo es en el desarrollo de compiladores y generadores de c odigo para aumentar la eciencia de construcciones concurrentes de alto nivel, por lo cual esta deciencia no es un problema: los programas generados son correctos aunque no se detecten todas las mejoras posibles. De todas maneras, al nal de esta secci on se desarrollar a un an alisis de las causas de este fen omeno y se mostrar a como fueron tratadas. Dado el sistema de transiciones que modela la implementaci on SBD de un problema de regiones cr ticas condicionales, aplicaremos principalmente la t ecnica de propagaci on hacia atr as desarrollada en la secci on 2.3.2 (p ag. 53), con el n de probar de manera autom atica la factibilidad de eliminaci on de guardas nales superuas. Para explorar esta posibilidad utilizaremos el teorema 2.24 (p ag. 54) mediante el cual, la invariancia de un predicado P es garantizada si .B ,P (las conguraciones iniciales implican el m aximo punto jo del transformador B ,P ). Tomando el predicado P como el invariante candidato que denote la imposibilidad de ejecuci on de una guarda, si aquella implicaci on es v alida entonces la guarda puede ser eliminada. El invariante candidato P ser a calculado mediante el transformador wlp sobre las transiciones entrantes a la locaci on donde se ejecuta la guarda. Estos transformadores, aplicados al predicado false, devolver an las conguraciones P desde las cuales la posible guarda a eliminar no se ejecuta. Por lo tanto, si P es invariante la guarda puede ser eliminada. Tomemos la guarda Bj ^ bj 0 en el programa 4.11 (asociada a la operaci on V.sj en la anotaci on outj ). Esta guarda pertenece a las dos transiciones obtenidas del programa SCCi cuya locaci on de llegada es sj , la primera de clase 2 y la

DE GUARDAS 4.5. ELIMINACION segunda de clase 4:

129

p sm , p si ,

Bi ^ wlp.Si .pBj ^ bj 0q Si , sj q wlp.pbi : bi 1; Si q.pBj ^ bj 0q bi : bi 1; Si , sj q

Aplicando el transformador wlp, sobre la sentencia de la primer transici on, al predicado false, tenemos:

   

wlp.p Bi ^ wlp.Si .pBj { Denici on de wlp } Bi ^ wlp.Si .pBj Bi ^ wlp.Si .pBj Bi

^ bj 0q Si q.false

^ bj 0q wlp.Si .false

{ Si es total entonces wlp.Si es estricto (propiedad 1.12.5, p ag. 15) }

^ bj 0q false ^ bj 0 q

{ L ogica de predicados }

wlp.Si .pBj

{ Si es total y determinista entonces wlp.Si distribuye con la negaci on (propiedad 1.12.7) } Bi

wlp.Si . pBj ^ bj 0q

Notar que este resultado es el conjunto de estados tal que, mediante la transformaci on determinista de la transici on, se llega a la negaci on de la guarda a eliminar. De esta manera, el predicado P 1 que denota las conguraciones desde las cuales la primer transici on no se ejecuta ser a este resultado en la locaci on sm (locaci on de salida de la transici on en cuesti on) y true en las dem as componentes (ya que desde esas locaciones la transici on no se ejecuta): . P 1 .sm  Bi wlp.Si . pBj ^ bj 0q . P 1 .sk  true si 0 k m . Aplicando el mismo razonamiento sobre la segunda transici on tenemos: wlp.p wlp.pbi : bi 1; Si q.pBj wlp.pbi : bi 1; Si q.pBj wlp.pbi : bi 1; Si q.pBj piedad 1.12.5) } { Denici on de wlp }

^ bj 0q wlp.pbi : bi 1; Si q.false  { bi : bi 1; Si es total entonces wlp.pbi : bi 1; Si q es estricto (pro  ^ bj 0q false ^ bj 0q 1; Si q


{ L ogica de predicados }

^ bj 0q bi : bi 1; Si q.false

wlp.pbi : bi 1; Si q.

{ bi : bi 1; Si es total y determinista entonces wlp.pbi : bi distribuye con la negaci on (propiedad 1.12.7) }

wlp.pbi : bi 1; Si q.pBj

pBj ^ bj 0q

De igual manera que con la transici on anterior, este resultado es la aplicaci on del transformador wlp a la negaci on de la guarda a eliminar, sobre las sentencias de la secci on anteriores a la ejecuci on de la guarda.

130

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

El predicado P 2 que denota las conguraciones desde las cuales la segunda transici on no se ejecuta ser a este resultado en la locaci on si (locaci on de salida de la transici on en cuesti on) y true en las dem as componentes: . P 2 .si  wlp.pbi : bi 1; Si q. pBj ^ bj 0q . P 2 .sk  true si 0 k m ^ k  i . En consecuencia, para poder eliminar una guarda Bj ^ bj 0 (con 0 j m) en un programa SCCi (con 0 i m), a partir predicados P 1 y P 2 se puede construir el invariante candidato P como la conjunci on P 1 X P 2 : . P.si  wlp.pbi : bi 1; Si q. pBj ^ bj 0q . P.sm  Bi wlp.Si . pBj ^ bj 0q . P.sk  true si 0 k m ^ k  i ,

(4.4)

ya que el conjunto de conguraciones desde los cuales la guarda no se ejecuta (dentro de ambas transiciones) es la intersecci on entre las conguraciones en P 1 2 yP . De esta manera obtenemos el invariante candidato P que denota la imposibilidad de ejecuci on de una de las m primeras guardas en uno de los programas Si . Las guardas nales, que tienen la forma x @ j : 0 j m : Bj _ bj  0 y no pueden ser eliminadas, ya que son las que posibilitan la liberaci on del sem aforo neutral sm que permite el progreso del sistema: si un proceso no puede satisfacer las guardas anteriores, debe permitir el ingreso de nuevos procesos al sistema. . Con el invariante candidato P y el sistema de transiciones TS  pL, S , , q denidos podemos aplicar de demostraci on de k -invariancia esquematizado en el programa 2.3 (p ag. 62) para vericar si P es un invariante. Este m etodo (con las modicaciones que explicaremos luego) ser a aplicado a cada guarda de cada programa Si (m m guardas). Como ya se mencion o en esa secci on, el m etodo detecta adem as la imposibilidad de invariancia de P , o lo que es equivalente, la imposibilidad de eliminar la guarda en cuesti on. Como ya dijimos, el m etodo no es completo (la detecci on de invariancia no est a asegurada). Las causas de esta incompletitud son las siguientes: 1. la cadena descendente de f ormulas en el c alculo del mayor punto jo intermedias es innita (como se explica en la secci on 2.3.4 p ag. 62) y el m etodo de demostraci on de k -invariancia no termina. 2. El procedimiento de decisi on sobre el orden de predicados no es completo en la vericaci on de las guardas del bucle del programa 2.3. 3. El crecimiento en la representaci on de los predicados envueltos en el programa anterior hace que sea imposible calcular el m aximo punto jo en tiempos razonables. La primer causa es inherente al m etodo de c alculo del punto jo. Debido a este fen omeno se utiliz o el m etodo de propagaci on hacia atr as, que en contraste con el m etodo de propagaci on hacia adelante, la cadena de predicados intermedios hacia el punto jo es usualmente nita (secci on 2.3.4). Esta caracter stica fue corroborada en la mayor parte de los ejemplos de la literatura donde se

DE GUARDAS 4.5. ELIMINACION

131

aplic o nuestro m etodo (m as adelante veremos estos resultados). Otra importante ventaja es que las f ormulas intermedias son libres de cuanticadores, lo cual benecia el funcionamiento completo de probadores teoremas autom aticos para vericar las implicaciones envueltas en el programa. Cabe agregar que si una guarda no puede ser eliminada, la cadena de predicados intermedios hasta detectar esta situaci on es nita, como se demuestra en la secci on 2.3.4. Para el caso que la cadena sea innita, se puede agregar al programa 2.3 un contador que limite la cantidad de iteraciones o un l mite de tiempo de procesamiento (time out). En los casos que esto suceda el algoritmo termina sin poder decidir la invariancia del predicado. Como ya se mencion o, esto no es un problema grave ya que el programa original es correcto aunque no se detecte la guarda a eliminar. La segunda causa es producida por la incompletitud de los probadores externos utilizados para decidir las relaciones de orden en la guarda del bucle en el m etodo. Para tratar este fen omeno, se dise n o el prototipo de software que implementa el m etodo a nadiendo la posibilidad de utilizar varios probadores externos en paralelo. Esto aumenta las posibilidades de vericaci on de f ormulas, ya que se aprovecha las caracter sticas propias de cada uno para resolver el problema. Por esta raz on, el prototipo tiene la posibilidad de emplear el SMT solver CVC3, y los probadores de teoremas Isabelle/HOL y ACL2 [ACL08]. En la pr actica, los problemas de regiones cr ticas condicionales derivan en sistemas de transiciones lineales en el sentido que se explica en la secci on 3.3.3 (p ag. 93) (todos los ejemplos de la literatura probados tienen esta caracter stica), por lo cual es suciente utilizar solo CVC3 como probador externo ya que es completo para la aritm etica lineal. De todas maneras, para detectar la imposibilidad de vericaci on de una f ormula, se modic o la sem antica de aquella guarda manteniendo correcci on: el m etodo termina solo cuando puede ser probada alguna de las negaciones de las guardas Bk y pBk B ,P .Bk q. Formalmente, si indicamos con el s mbolo $ que se encontr o una prueba, el m etodo termina cuando se demuestra la no satisfabilidad de Bk o la validez de Bk B ,P .Bk :

$ p Bk q _ $ Bk B ,P .Bk

De esta forma, la guarda del bucle ser a la negaci on de esta condici on y el m etodo decidir a la invariancia solo si se puede demostrar $ Bk , como se indica en el programa 4.13 (p ag. 132). Notar con respecto a esto u ltimo, que si se puede probar esta implicaci on, por la precondici on la cadena es nita. La tercer causa de incompletitud es producida por el crecimiento en la representaci on de los elementos de la cadena calculada. Esto se debe a la aplicaci on reiterada del transformador de propagaci on B ,P que se hace en cada iteraci on, lo cual produce un crecimiento en la representaci on del predicados intermedios (almacenados en la variable Bk ) a medida que se calcula la cadena. Como resultado de este fen omeno, la vericaci on de las implicaciones que procesan los probadores externos demora m as tiempo a medida que el m etodo progresa. Este comportamiento fue vericado, incluso en ejemplos de la literatura muy simples, donde a las pocas iteraciones se saturan los recursos computacionales por falta de memoria. Por esta raz on, el empleo de distintas estrategias es esencial para la aplicabilidad del m etodo y por ende al objetivo del trabajo. El tratamiento de este problema ser a explayado en la secci on siguiente.

132 Programa 4.13

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES Propagaci on hacia atr as con probadores externos

es invariante ( P , : PredL ;

B ,P :xX P X WLP. .X y; Bk : True; do p$ p Bk qq ^ p$ Bk B ,P .Bk q Bk : B ,P .Bk od; t$ p Bk q _ $ Bk B ,P .Bk u return $ Bk

: TranL,S ) : Bool

4.6

Mejoras del m etodo

Como acabamos de mencionar, el crecimiento de las f ormulas intermedias en el c alculo del punto jo suele producir un estancamiento en su procesamiento haciendo inviable la aplicabilidad del m etodo. Para contrarrestar este fen omeno se utilizaron diversas estrategias: 1. Se utiliz o el invariante ecnica SBD. SBD producido por la t 2. Se simplicaron los sistemas de transiciones. 3. Se simplic o el invariante candidato P . 4. Se emplearon m etodos de simplicaci on de predicado, propios y de probadores externos. La aplicaci on conjunta de todas ellas produjo una dr astica aceleraci on del m etodo, obteni endose el resultado nal en segundos, cuando sin aplicarlas el m etodo tard o d as e incluso no termin o por agotamiento total de los recursos computacionales. A continuaci on detallaremos cada una de estas estrategias.

4.6.1

Simplicaci on con invariante SBD

La t ecnica SBD genera de forma autom atica este invariante, el cual es v alido cualquiera sean las guardas a eliminar. Utiliz andolo como premisas de las implicaciones en la guarda del bucle, se acelera la vericaci on de las mismas. En este sentido, los probadores de teoremas externos permiten el ingreso de premisas que se asumen v alidas al momento de intentar probar la validez de un predicado. De esta manera se reemplazaron las f ormulas en las guardas y en el valor devuelto agregando esta suposici on, como se muestra en el programa 4.14 (p ag. 133). Notar que la idea de emplear esta estrategia surge del proceso manual de eliminaci on de guardas visto en el ejemplo 4.1. En este ejemplo, se comienza con el invariante SBD el cual se va fortaleciendo a medida que se propaga la negaci on de la guarda. En el u ltimo programa la detecci on del punto jo es realizada por la prueba de SBD $ Bk B ,P .Bk , lo cual es equivalente a probar ltima f ormula muestra como en cada paso de $ pSBD X Bk q B ,P .Bk . Esta u la iteraci on se fortalece el invariante SBD hasta llegar al punto jo.

4.6. MEJORAS DEL METODO Programa 4.14 es invariante ( P , : PredL ;

133 Propagaci on hacia atr as utilizando SBD

B ,P :xX P X WLP. .X y; Bk : True; do p p Bk qq ^ pSBD SBD $ Bk : B ,P .Bk od; return SBD $ Bk

: TranL,S ) : Bool

$ Bk B ,P .Bk q

Como veremos, el invariante en utilizado en las dem as estraSBD fue tambi tegias.

4.6.2

Simplicaci on del sistema de transiciones

En la secci on 4.4 vimos como generar un sistema de transiciones a partir de una soluci on SBD. En esta secci on veremos que algunas de las transiciones generadas pueden ser eliminadas, ya que no contribuyen al c alculo del punto jo, o sus guardas simplicadas cualquiera sea el problema a tratar. Eliminaci on de transiciones no ejecutadas Dado uno de los m programas SCCi generado por la t ecnica (programa 4.11, p ag. 121), las transiciones de clase 2 que van de inm (principio del programa) a outj (if nal), en el caso j  i (el proceso libera a otro ejecutando el mismo programa) tienen la forma:

p sm ,

Bi ^ wlp.Si .pBi ^ bi

0q Si , si q

con 0 i m. Analicemos las guardas de las sentencias en estas transiciones, teniendo en cuenta que el programa Si no modica los contadores bi (son variables auxiliares agregadas por la t ecnica SBD):

  

Bi ^ wlp.Si .pBi ^ bi

0q 0q ^}

Bi ^ wlp.Si .Bi ^ wlp.Si .pbi Bi ^ wlp.Si .Bi ^ bi

{ Conjuntividad de wlp }

{ Si no modica los contadores }

{ Conmutatividad y asociatividad de

pBi ^ bi 0q ^ wlp.Si .Bi


. SBD .sm 

Por otro lado, la componente m- esima (en la locaci on sm , salida de la transici on anterior) del invariante (ecuaci o n 4.3, pag. 125) es: SBD

x @ j : 0 j m : Bj _ bj  0 y ^ x @ j : 0 j m : bj 0 y ^ I ,

134

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

donde el t ermino conjuntivo Bi _ bi  0 niega la guarda anterior. De esta forma, como a la guarda de estas transiciones SBD es invariante, nunca se satisfar y por lo tanto no se ejecutar an. En consecuencia, las m transiciones pueden ser eliminadas del sistema. Eliminaci on de transiciones utilizando el invariante candidato Como veremos, tambi en pueden ser eliminadas otras transiciones dado un invariante candidato P jo. Consideremos el caso en que este invariante candidato represente la posibilidad de eliminaci on de una guarda Bk ^ bk 0 en un programa SCCi , con lo cual P en las locaciones sm y si , por la ecuaci on 4.4, estar a denido como: . P.sm  Bi wlp.Si . pBk ^ bk 0q . P.si  wlp.pbi : bi 1; Si q. pBk ^ bk

0q

De manera intuitiva, puede verse que las ejecuciones del sistema que hacen verdadero este predicado no pueden ejecutar las transiciones que contienen la guarda Bk ^ bk 0, por lo tanto estas transiciones pueden ser eliminadas en el c alculo del punto jo. Formalmente, en el m etodo de demostraci on de invariancia on P X WLP. .X . se calcula el transformador B ,P denido como la conjunci Veremos que el invariante candidato P.sm es m as fuerte que el resultado del transformador en la transici on que contienen la guarda a eliminar y con locaci on de salida sm . La u nica transici on que cumple este requisito es de clase 2 (desde inm a outj ): p sm , Bi ^ wlp.Si .pBk ^ bk 0q Si , sk q El t ermino conjuntivo del resultado de WLP. .X correspondiente a esta transici on (ver denici on de WLP en la secci on 1.6.2, p ag. 24) es: Bi ^ wlp.Si .pBk ^ bk

0q wlp.Si .X

Veremos entonces que P.sm es m as fuerte que este resultado:

   

P.sm

pBi ^ wlp.Si .pBk ^ bk 0q wlp.Si .X q

pBi wlp.Si . pBk ^ bk 0qq pBi ^ wlp.Si .pBk ^ bk 0q wlp.Si .X q _ wlp.Si . pBk ^ bk 0q pBi ^ wlp.Si .pBk ^ bk 0q wlp.Si .X q
Bi { Implicaci on anidada } { Implicaci on escrita como disyunci on }

{ Denici on de P.sm }

p Bi _ wlp.Si . pBk ^ bk 0qq ^ Bi ^ wlp.Si .pBk ^ bk 0q wlp.Si .X


Bi ^ wlp.Si . { Distributividad y eliminaci on por negaci on }

wlp.Si .X

pBk ^ bk 0q ^ wlp.Si .pBk ^ bk 0q

4.6. MEJORAS DEL METODO

135

   

Bi ^ wlp.Si .p

{ Conjuntividad de wlp }

wlp.Si .X
{ L ogica }

pBk ^ bk 0q ^ Bk ^ bk 0q

Bi ^ wlp.Si .false wlp.Si .X Bi ^ false wlp.Si .X { L ogica } true { Wlp es estricto ya que Si es total }

Por lo tanto, el t ermino conjuntivo en WLP. .X correspondiente a la transici on, es absorbido por P cuando se calcula el punto jo. Esto quiere decir que la transici on anterior no contribuye a su calculo y la misma puede ser eliminada. Notar que en el caso que k  i (se elimina la guarda que libera procesos del mismo tipo), esta transici on es una de las eliminadas en el caso anterior (sin necesidad de utilizar el invariante candidato). El mismo an alisis puede hacerse con la transici on de clase 4:

p si ,

wlp.pbi : bi 1; Si q.pBk ^ bk

0q bi : bi 1; Si , sk q

y la componente P.si del invariante candidato. Con los resultados vistos hasta ahora se pueden eliminar m 1 o m 2 transiciones, dependiendo si la guarda a eliminar libera o no un proceso del mismo tipo (k  i o k  i). A continuaci on veremos que hay guardas en las sentencias de transiciones que pueden ser simplicadas. Simplicaci on de guardas en transiciones Por u ltimo las guardas de las transiciones de clase 3 (desde inm a outm ) pueden ser simplicadas. Las mismas tienen la forma:

Bi ^ wlp.Si . x @ j : 0 j Bi ^ wlp.Si .p Bi

m:

Bj

_ bj  0 y
Bj

{ Separaci on de t ermino, conjuntividad de wlp }

_ bi  0 q ^ wlp.Si . x @ j : 0 j m ^ j  i : wlp.Si .p wlp.Si . _ bi  0q

_ bj  0 y

Demostraremos entonces que, bajo la invariancia de ermino Bi es m as SBD , el t fuerte que wlp.Si .p Bi _ bi  0q, simplic andose as la cuanticaci on universal:

  

Bi Bi Bi

Bi Bi Bi

{ Si es determinista }

_ wlp.Si .pbi  0q

{ El programa Si no modica contadores }

wlp.Si .

_ bi  0

{ Implicaci on como disyunci on, conmutatividad } Bi

_ bi  0 _ wlp.Si .

Bi

136

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

 

Bi

true

_ wlp.Si .

_ bi  0 es un t ermino conjuntivo del invariante


Bi

SBD

{ L ogica } true

Por lo tanto las transiciones anteriores pueden escribirse como

p sm ,

Bi ^ wlp.Si . x @ j : 0 j

m^j i:

Bj

_ bj  0 y Si , sm q

(0 i m) eliminando un t ermino conjuntivo dentro de la cuanticaci on universal.

4.6.3

Simplicaci on del invariante candidato

En el caso que se intente eliminar, en un programa Si , la guarda Bi ^ bi 0 (se libera un proceso ejecutando el mismo programa), por la ecuaci on 4.4 (p ag. 130), el invariante candidato en la locaci on sm estar a denido como: P.sm .  Bi

wlp.Si . pBi ^ bi 0q

Notemos adem as, que el invariante on 4.3, p ag. 125) contiene el SBD (ecuaci t ermino conjuntivo Bi _ bi  0, el cual nos permitir a simplicar el predicado anterior: P.sm

    

{ Denici on de P } Bi

wlp.Si . pBi ^ bi 0q wlp.Si .pbi 0


Bi q Bi q

{ L ogica } Bi

{ Como Si es determinista wlp distribuye con la implicaci on } Bi

pwlp.Si .pbi 0q wlp.Si . pbi 0 wlp.Si .


Bi q

{ Si no modica bi } Bi { L ogica, aritm etica } Bi

_ bi  0 _ bi 0 _ wlp.Si . Bi q  { Suposici on Bi _ bi  0 por invariante true _ bi 0 _ wlp.Si . Bi q  { L ogica }


true

SBD

Por lo tanto, al momento de intentar eliminar la guardada que libera procesos . del mismo tipo, se puede denir P.sm  true.

4.6. MEJORAS DEL METODO

137

4.6.4

Simplicaci on de f ormulas

Como ya mencionamos, el c alculo recurrente del transformador WLP en el proceso de b usqueda del punto jo produce un aumento del tama no en la representaci on de los predicados. Este fen omeno conduce al agotamiento de los recursos computacionales al momento de ejecutar el m etodo, lo cual suele demorar su terminaci on o incluso puede detener su progreso. Para tratar este problema se implementaron diversas estrategias con el n de reducir el tama no de las f ormulas manteniendo su equivalencia. Dentro del m etodo de demostraci on de k -invariancia por propagaci on hacia atr as, se agreg o la funci on simplicar como se muestra en el programa 4.15 (dentro de la denici on del transformador B ,P ) que implementa las estrategias de simplicaci on. Como se muestra, la misma es aplicada sobre los elementos de la cadena calculados almacenados en la variable Bk utilizando adem as el invariante on de todas las pruebas SBD . El mismo es utilizado como suposici involucradas en el proceso de simplicaci on que se describe a continuaci on. Programa 4.15 Propagaci on hacia atr as con simplicaci on

es invariante ( P , : PredL ; : TranL,S ) : Bool B ,P :xX simplicar. SBD .pP X WLP. .X qy; Bk : True; do p p Bk qq ^ pSBD $ Bk B ,P .Bk q SBD $ Bk : B ,P .Bk od; return SBD $ Bk

Debido a las denici on del transformador WLP estas f ormulas resultan libres de cuanticadores, por lo cual los predicados en las locaciones pueden ser transformadas a su forma normal conjuntiva. Si se puede probar (utilizando SBD como suposici on) que alg un t ermino conjuntivo de la f ormula normalizada es m as d ebil que la conjunci on de los dem as, el mismo es eliminado por absorci on. Este proceso es aplicado a todos los t erminos de la forma normal conjuntiva. De la misma manera, tambi en fue aplicada la t actica dual sobre cada t ermino conjuntivo anterior: si un subt ermino disyuntivo es m as fuerte (suponiendo el invariante on de los dem as subt erminos, entonces es elimiSBD ) que la disyunci nado. Las pruebas de inclusi on entre t erminos fueron implementadas utilizando el SMT solver CVC3. Otras simplicaciones fueron aplicadas utilizando el probador de teoremas Isabelle/HOL. Esta herramienta implementa t acticas de simplicaci on por defecto denominadas clarify y simplify las cuales fueron utilizadas dentro de la funci on simplicar con el n de reducir el tama no de las f ormulas. Todas las t acticas descriptas fueron implementadas en el lenguaje ML utilizando los probadores externos mencionados. Este desarrollo forma parte del prototipo de software que se describe a continuaci on.

138

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

4.7

Implementaci on

Con el n de probar el m etodo descripto sobre diversos problemas de regiones cr ticas condicionales, se desarroll o un prototipo de software que genera el sistema de transiciones e implementa el m etodo de demostraci on de invariancia. El software fue escrito en el lenguaje ML, en su implementaci on Standard ML of New Jersey [Sta06], utilizando como procesos externos los probadores de teoremas CVC3 e Isabelle/HOL. Resumiendo, el prototipo de software implementa las siguientes etapas: 1. A partir de una especicaci on de un problema particular de regiones cr ticas condicionales se genera un sistema de transiciones que modela la ejecuci on de los programas obtenidos mediante la t ecnica SBD, junto con el invariante que asegura la exclusi o n mutua condicional. La base de SBD este proceso es descripto en la secci on 4.4 (p ag. 118). Adem as, se eliminan transiciones y se simplican las guardas del sistema, como se indica en la secci on 4.6.2. 2. Eligiendo una guarda del if nal se obtiene un invariante candidato P que captura la imposibilidad de ejecuci on de misma, como se indica en la secci on 4.5. Este invariante puede ser simplicado como se muestra en la secci on 4.6.3. 3. Finalmente, utilizando la t ecnica de propagaci on hacia atr as esquematizada en el programa 4.15 (p ag. 137), se verica si el invariante candidato es un invariante del sistema. Con ello se puede decidir si la guarda del programa puede ser eliminada. En la gura 4.1 (p ag. 139) se muestra un diagrama esquem atico del dise no del prototipo donde se se nalan los m odulos que implementan cada etapa. Las etapas 1 y 2 fueron implementadas en el m odulo Generador de Transiciones y la etapa restante en el modulo Vericador de Invariantes. A continuaci on describiremos los detalles de implementaci on de ambos m odulos.

4.7.1

Generador de Transiciones

Este m odulo genera el sistema de transiciones y el invariante candidato a partir de la especicaci on de un problema de regiones cr ticas condicionales y la informaci on del comando guardado nal que se desea eliminar. En su forma m as general, un problema de regiones cr ticas condicionales puede ser especicado como: un conjunto de estados iniciales . una secuencia de m programas S0 , , Sm1 a ejecutarse en exclusi on mutua condicional, m condiciones B0 , , Bm1 de ejecuci on para los programas anteriores respectivamente,

4.7. IMPLEMENTACION

139

Figura 4.1: Dise no. Especicaci on y Guarda a Eliminar

M odulo Generador de Transiciones Generador de Transiciones e Invariante Candidato Simplicador de Transiciones

Sistema de Transiciones SBD Invariante Candidato

M odulo Vericador de Invariante Simplicador de F ormulas

C alculo de Punto Fijo

CVC3

Isabelle

Resultado

un invariante global del sistema I que debe ser mantenido por las ejecuciones de dichos programas3 . La especicaci on es tomada en la forma de un archivo de texto, el cual es parseado produciendo diversos tipos de datos ML para su procesamiento. A par. tir de estos se genera el sistema de transiciones TS  pL, S , , q y el invariante candidato simplicados. Tambi en se devuelve como resultado el invariante SBD . Los predicados envueltos son representados por un tipo de datos recursivo ML y los predicados sobre el sistema de transiciones son listas de longitud m 1 de estos tipos de datos. En tal sentido, el conjunto de locaciones estar a representado . por el intervalo de n umeros naturales L  t0, , mu.
3 Las condiciones y el invariante global son redundantes, en el sentido que unas pueden ser obtenidos del otro de forma mec anica o viceversa. Esta previsto agregar esta funcionalidad en versiones futuras del software.

140

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

4.7.2

Vericador de Invariantes

. Este m odulo toma el sistema de transiciones TS  pL, S , , q generado junto con el invariante etodo de SBD y el invariante candidato, e implementa el m demostraci on de k -invariancia esquematizado en el programa 4.15 (p ag. 137). Las pruebas de las implicaciones involucradas en el c alculo de punto jo (tomando como v alido ) fueron realizadas utilizando CVC3. Este SMT solver SBD admite f ormulas no lineales pero es incompleto en este tipo de teor as. Como se menciona en la secci on 4.5, los sistemas de transiciones resultantes suelen ser lineales, por lo que nuestro m etodo produjo resultados positivos. De todas maneras, el prototipo permite utilizar otros demostradores como Isabelle/HOL y ACL2 que poseen estrategias complementarias para resolver f ormulas en este tipo de teor as. Cabe mencionar que en los casos de prueba, la utilizaci on de estos demostradores en reemplazo de CVC3, condujo a una perdida de eciencia por agotamiento de los recursos computacionales. Para hacer m as eciente el c alculo del punto jo realizado por este m odulo, incluimos las t ecnicas de simplicaci on de las formulas obtenidas en cada paso de este c alculo, como se indica en la secci on 4.6. Las mismas fueron implementadas utilizando CVC3 y el probador de teoremas Isabelle/HOL en conjunto con t ecnicas de simplicaci on propias codicadas en ML (dentro del segundo m odulo) como se indica en la secci on 4.6.4. La interfase entre los probadores externos y el prototipo escrito en ML fue resuelta simplemente ejecutando los primeros como procesos independientes desde el segundo. El control de los probadores se realiz o accediendo a las entradas y salidas est andar de los procesos que los ejecutan.

4.8

Resultados

El prototipo de software fue probado sobre diversos problemas de la literatura. Este programa fue corrido sobre una computadora con arquitectura PC, procesador de 2GHz. y 2Gb de memoria RAM. A continuaci on se detallan los resultados obtenidos.

4.8.1

Productor/Consumidor en buer acotado

Consideremos el ejemplo 4.1 (p ag. 111) donde se resuelve el problema de productores y consumidores. Como primera prueba se corri o el m etodo con invariante SBD igual a True e invariante candidato P igual a SBD . Este caso fue pensado u nicamente como test, sin pretender eliminar ninguna guarda, y solo para comprobar si SBD es un invariante del sistema. Despu es de efectuar las simplicaciones y eliminaciones del sistema de transiciones, las transiciones generadas fueron las mostradas en las gura 4.2 (p ag. 141). All las locaciones son representadas por el ndice del sem aforo, tal cual se representa dentro del prototipo, como se indic o en la secci on 4.7.1. Notar que despu es de realizar las simplicaciones se obtienen dos transiciones menos y se simplicaron las guardas de las transiciones que van de la locaci on 2 a ella misma (sem aforo sm ), como resultado de la aplicaci on de las simplicaciones descriptas en la secci on 4.6.2 (p ag. 133).

4.8. RESULTADOS .  t p2,

141

p2, p2, p2, p2, p2, p0, p0, p1, p1, p0, p1,

n N b0 : b0 1, 2q , n 0 b1 : b1 1, 2q , n N ^ b1 0 ^ n 1 0 n : n 1, 1q , n 0 ^ b0 0 ^ n 1 N n : n 1, 0q , n N ^pb1  0 _ n 1 0q n : n 1, 2q , n 0 ^pb0  0 _ n 1 N q n : n 1, 2q , b0 1 0 ^ n 1 N b0 , n : b0 1, n 1, 0q , b1 0 ^ n 1 0 b0 , n : b0 1, n 1, 1q , b0 0 ^ n 1 N b1 , n : b1 1, n 1, 0q , b1 1 0 ^ n 1 0 b1 , n : b1 1, n 1, 1q , pb0 1  0 _ n 1 N q ^pb1  0 _ n 1 0q b0 , n : b0 1, n 1, 2q , pb0  0 _ n 1 N q ^pb1 1  0 _ n 1 0q b1 , n : b1 1, n 1, 2q u

Figura 4.2: Transiciones de Productor/Consumidor sin eliminaci on de guardas. El m etodo converge en una iteraci on, siendo el punto jo .B ,P igual a SBD . Esto corrobora el hecho que SBD es un invariante inductivo del sistema. En una segunda prueba, intentamos eliminar el la guarda del procesos productor n N ^ b0 0. Esta guarda libera otro procesos productor esperando en el sem aforo. Las transiciones computadas son mostradas en la gura 4.3 (p ag. 142), el invariante candidato es: P .  rb0 1  0 _ n 1 N, true, trues

y las conguraciones iniciales son: .  rfalse, false, n  0 ^ 0 N ^ b0  0 ^ b1  0s .

Despu es de algo m as de un segundo, el m etodo converge en 5 iteraciones devolviendo el siguiente invariante: B ,P .  rpn 1 N b0  1q ^p0 b1 1 0 n b0  2 _ 0 b0 1q, p0 b0 0 b1 1 b0  1 _ 0 n 1q ^p0 b0 b0  1 _ n N q, trues

el cual es implicado por . Por lo tanto la guarda puede ser eliminada. Tambi en intentamos eliminar la guarda del consumidor n 0 ^ b1 0 (libera a otro consumidor) con similares resultados positivos. Con respecto al resto de las guardas (n 0 ^ b1 0 en el productor y n N ^ b0 0 en el consumidor) el m etodo detecta la no satisfabilidad de la f ormula Bk en pocas iteraciones.

142 .  t p2,

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES n N b0 : b0 1, 2q , n 0 b1 : b1 1, 2q , n N ^ b1 0 ^ n 1 0 n : n 1, 1q , n 0 ^ b0 0 ^ n 1 N n : n 1, 0q , n N ^pb1  0 _ n 1 0q n : n 1, 2q , n 0 ^pb0  0 _ n 1 N q n : n 1, 2q , b1 0 ^ n 1 0 b0 , n : b0 1, n 1, 1q , b0 0 ^ n 1 N b1 , n : b1 1, n 1, 0q , b1 1 0 ^ n 1 0 b1 , n : b1 1, n 1, 1q , pb0 1  0 _ n 1 N q ^pb1  0 _ n 1 0q b0 , n : b0 1, n 1, 2q , pb0  0 _ n 1 N q ^pb1 1  0 _ n 1 0q b1 , n : b1 1, n 1, 2q

p2, p2, p2, p2, p2, p0, p1, p1, p0, p1,

Figura 4.3: Transiciones de Productor/Consumidor eliminando guarda.

La tabla 4.1 muestra el detalle de estos resultados. La primer y segunda columna indican el programa con su guarda a eliminar, la tercera la cantidad de transiciones generadas y las siguientes el resultado, la cantidad de iteraciones y el tiempo de c omputo (wall time).

Programa Prod Prod Cons Cons

Guarda Prod Cons Prod Cons

#Trs. 11 10 10 11

Resultado eliminada no eliminada no eliminada eliminada

Iteraciones 5 3 4 5

Wall Time 1.127 0.132 0.415 0.462

Tabla 4.1: Resultado de Productor/Consumidor

En el ejemplo 4.1 vimos que la formulaci on original del problema envuelve el uso de dos variables y un arreglo (buer), mientras que en la especicaci on que usamos se elimin o la sentencia de acceso al arreglo y se realiz o un cambio de coordenadas a una sola variable n. La eliminaci on del acceso al arreglo puede hacerse de manera autom atica, ya que esta estructura no modica las condiciones de sincronizaci on (guardas). La segunda modicaci on no es simple de realizar en forma autom atica, por lo cual queda la pregunta si es posible utilizar nuestro m etodo sin ella. La especicaci on sin el cambio de coordenadas es:

4.8. RESULTADOS resource prod cons pp, d : intq .  p0^d0^N Prod: region prod cons pdN end

143

p : p 1

Cons: region prod cons

p d 0 d : d 1 end

Los resultados para esta nueva formulaci on del problema se muestran en la tabla 4.2. Programa Prod Prod Cons Cons Guarda Prod Cons Prod Cons #Trs. 11 10 10 11 Resultado eliminada no eliminada no eliminada eliminada Iteraciones 5 3 4 5 Wall Time 1.476 0.195 0.630 0.656

Tabla 4.2: Resultado de Productor/Consumidor con dos variables Como se puede ver, se encontraron todas las soluciones en pocos segundos.

4.8.2

Contraejemplo Schmid

Este caso de test es el contraejemplo al m etodo de Schmid [Sch76] desarrollado en la secci on 4.3 (p ag. 117). El mismo intenta resolver el problema de productores y consumidores modicado, donde se agrega un proceso que consume u nicamente si el buer tiene un elemento. En aquella secci on vimos que el m etodo de Schmid no lo resuelve correctamente. En este ejemplo hay 9 guardas posibles de eliminar y la cantidad de transiciones es mayor que en el ejemplo anterior (entre 22 y 23 transiciones seg un la guarda). El resultado de este problema se muestra en la tabla 4.3. Programa Prod Prod Prod Cons1 Cons1 Cons1 Cons Cons Cons Guarda Prod Cons1 Cons Prod Cons1 Cons Prod Cons1 Cons #Trs. 23 22 22 22 23 22 22 22 23 Resultado no eliminada no eliminada no eliminada no eliminada eliminada eliminada no eliminada no eliminada eliminada Iteraciones 9 3 3 4 1 1 4 5 5 Wall Time 8.592 0.273 0.264 1.114 0.015 0.018 0.622 5.963 0.720

Tabla 4.3: Resultado de Productor/Consumidor modicado En todos los casos el m etodo pudo decidir la eliminaci on o no de la guarda. En los casos que el m etodo de Schmid falla, nuestro m etodo encuentra las

144

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

soluciones correctas. Notar que justamente el caso donde se demuestra que un productor puede liberar a otro productor (caso contraejemplo en secci on 4.3) es donde se tarda mayor tiempo.

4.8.3

Sem aforos generales

Este es el problema cl asico de implementaci on de sem aforos generales con sem aforos binarios [Dij68]. Su especicaci on es: resource semGen px : intq . .  x0 I  x0 P: region semGen x 0 x : x 1 end V: region semGen true x : x 1 end

La posibilidad de eliminaci on de las cuatro guardas involucradas es decidida correctamente en menos de un segundo. El resultado puede verse en la tabla 4.4.

Programa P P V V

Guarda P V P V

#Trs. 11 10 10 11

Resultado eliminada eliminada no eliminada eliminada

Iteraciones 2 2 3 1

Wall Time 0.705 0.029 0.083 0.004

Tabla 4.4: Resultado de Sem aforos generales En el problema solo la guarda x 0 ^ b0 0 en el programa V no puede ser eliminada. La misma corresponde a las situaci on donde un proceso ejecutando V libera a otro ejecutando P.

4.8.4

Lectores y escritores

El problema de lectores y escritores es uno de los ejemplos utilizados por E.W. Dijkstra para presentar la t ecnica SBD [Dij79]. Su especicaci on es: resource RW pr, w : intq .  w 0^r 0 Write in: region RW .  r 0 ^pw  0 _ pw  1 ^ r  0qq w  0 r : r 1 end; read; Read out: region RW true r : r 1 end Read in: region RW

w  0 ^ r  0 w : w 1 end; write; Write out: region RW true w : w 1 end

4.8. RESULTADOS Programa Write in Write in Write in Write in Write out Write out Write out Write out Read in Read in Read in Read in Read out Read out Read out Read out Guarda Write in Write out Read in Read out Write in Write out Read in Read out Write in Write out Read in Read out Write in Write out Read in Read out #Trs. 39 38 38 38 38 39 38 38 38 38 39 38 38 38 38 39 Resultado eliminada eliminada eliminada eliminada no eliminada eliminada no eliminada eliminada eliminada eliminada no eliminada eliminada no eliminada eliminada eliminada eliminada It. 1 2 1 2 4 1 4 1 1 2 6 2 4 1 1 1 W. T. 0.007 0.047 0.007 0.052 0.300 0.005 0.238 0.006 0.008 0.045 0.396 0.044 0.620 0.006 0.008 0.006

145

Tabla 4.5: Resultado de Lectores y escritores El resultado de la aplicaci on del m etodo es mostrado en la tabla 4.5. Como se puede observar, el m etodo arriba a la soluci on correcta: a la salida de la escritura se puede activar una lectura o escritura, a la entrada de una lectura se puede activar solo nuevas lecturas y a la salida de una lectura se puede activar solo una escritura. Cabe destacar que en este ejemplo se ve claramente la abstracci on realizada al modelar el problema con sistema de transiciones (ver nota en p ag. 124). Sin embargo el m etodo obtuvo la soluci on correcta. Esto es debido a que el invariante del problema, provisto de forma manual, implica que w (cantidad de escritores) y r (cantidad de lectores) son mayores o iguales a cero, lo cual denota la imposibilidad ejecuci on de las regiones cr ticas de salida si no hay procesos que ejectaron las de entrada.

4.8.5

Productor/Consumidor goloso

Este caso de test es una versi on modicada del problema de productores y consumidores donde el u ltimo consume dos elementos en vez de uno. Como veremos, el hecho rompe la simetr a entre las dos clases de procesos. La especicaci on de este problema de regiones cr ticas condicionales es: resource prod cons pn : intq .  n0^N 1 Prod: region prod cons nN end .  0nN n 1 n : n 2 end

n : n 1

Cons: region prod cons

146

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

Para el caso de la guarda del consumidor liberando a otro proceso del mismo tipo, el sistema de transiciones generado tiene 11 transiciones y el punto jo es alcanzado en casi 2 segundos, obteni endose el siguiente invariante: . B ,P  rp0 b1 b1  1 _ 3  nq ^p0 b1 0 2 b0 2 n N b1  1 _ 1  nq ^p3 n N 0 b1 b1  1 _ 0 3 b0 q ^p2  n 0 b1 0 b0 1 b1  1 _ n 1 N q, p3 n b1  1q ^p0 b1 1 0 3 b0 b1  2 _ 1 n N q ^p0 2 b0 n N 3  n b1  2 _ 0 b1 1q, trues El punto jo es implicado por el conjunto de estados iniciales, por lo que la guarda puede ser eliminada. Para las otras guardas el m etodo detecta la no satisfabilidad de la f ormula Bk . Los resultados son mostrados en la tabla 4.6. Programa Prod Prod Cons Cons Guarda Prod Cons Prod Cons #Trs. 11 10 10 11 Resultado no eliminada no eliminada no eliminada eliminada Iteraciones 7 4 5 7 Wall Time 1.781 1.082 1.057 1.539

Tabla 4.6: Resultado de Productor/Consumidor goloso Como puede verse, en este problema la u nica guarda que puede ser eliminada es n 1 ^ b1 0 dentro del programa consumidor. La misma libera otro consumidor esperando en el sem aforo. La guarda del productor para liberar otro proceso del mismo tipo no puede ser eliminada ya que un consumidor puede liberar dos lugares en el buer, permitiendo que dos productores los ocupen, uno despu es del otro. El problema fue alterado variando la cantidad de elementos que consume el consumidor. Con ello se crearon una serie distinta de problemas de regiones cr ticas condicionales. Por ejemplo, para el problema en que se consumen 7 elementos su especicaci on ser a: resource prod cons pn : intq .  n0^N 6 Prod: region prod cons nN end .  0nN n 6 n : n 7 end

n : n 1

Cons: region prod cons

En la tabla 4.7 (p ag. 147) se muestra el tiempo total que toma el m etodo para encontrar la posibilidad de eliminaci on de todas las guardas, la cantidad de iteraciones m aximas y m nimas para decidir el resultado en cada guarda a

4.8. RESULTADOS Consumidos 2 3 4 5 6 7 # Iter. minmax 47 59 611 713 815 917 Tam. invariante 147 227 307 387 467 547 W. T. Total 5.751 13.211 29.187 61.161 125.675 257.657

147

Tabla 4.7: Resultado de Productor/Consumidor goloso para distinta cantidad de elementos consumidos eliminar y la cantidad de s mbolos del invariante encontrado en la eliminaci on de la guarda nal del consumidor. En estos resultados se puede apreciar que la cantidad de iteraciones y el tama no de las f ormulas tienen un comportamiento lineal con respecto a la cantidad de elementos consumidos, mientras que el tiempo de c omputo crece de manera exponencial (se multiplica por dos). Este u ltimo fen omeno es producido por la complejidad exponencial de los SMT solvers empleados en el c alculo de punto jo: aunque las f ormulas intermedias crezcan de forma lineal la complejidad del solver es exponencial con respecto a este tama no. Este crecimiento lineal en la cantidad de iteraciones inspir o la elaboraci on del pr oximo ejemplo.

4.8.6

Productor/Consumidor goloso M

En los ejemplos anteriores el m etodo pudo decidir la eliminaci on de todas las guardas. Como demostramos en la secci on 2.3.4 (p ag. 60) existe casos donde el m etodo de propagaci on hacia atr as no puede encontrar el punto jo debido a que la cadena calculado es innita. En la secci on 4.5 mencionamos esto como una de las causas de incompletitud de nuestro m etodo. Por otro parte, en el ejemplo anterior vimos que si se aumenta la cantidad de elementos consumido, la cantidad de iteraciones para alcanzar el punto jo se comporta de forma lineal con respecto a la magnitud anterior. Esto sugiere que si se reemplaza la cantidad de elementos consumidos por una constante no determinada, estar amos en presencia de un caso de incompletitud. Utilizando una constante M para representar la cantidad consumida, la especicaci on del problema de esta ndole ser a: resource prod cons pn : intq .  n0^N M ^M Prod: region prod cons nN end

.  0nN

n : n 1

Cons: region prod cons nM end

n : n M

Para este problema nuestro m etodo no puede decidir la eliminaci on de la u ltima guarda del consumidor (donde se libera un proceso de su mismo tipo) ya que el punto jo no converge dentro del m aximo de iteraciones establecido.

148

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

Para las dem as guardas, el m etodo detecta la no posibilidad de eliminaci on en pocos segundos. Los resultados pueden verse en la tabla 4.8. Programa Prod Prod Cons Cons Guarda Prod Cons Prod Cons #Trs. 11 10 10 11 Resultado no no no no eliminada eliminada eliminada converge Iteraciones 7 3 4 60 Wall Time 19.90 2.36 4.53 2807.051

Tabla 4.8: Resultado de Productor/Consumidor goloso M. Para corroborar la hip otesis que la cadena de invariantes candidatos es innita, se analizaron los elaborados por el algoritmo (el software provee la posibilidad de mostrar estos resultados intermedios). Un an alisis profundo de los mismos es dicultoso ya que estas f ormulas son muy grandes (alrededor de 3000 s mbolos cada una). De todas maneras se pudo observar que en cada paso de iteraci on k los invariantes candidatos muestran t erminos de la forma M k E con E un predicado, lo cual indica que en cada iteraci on el m etodo realiza una b usqueda en el espacio de estados para cada valor posible de la variable M . Esta b usqueda no termina ya que el valor M no es denido como sucede en los anteriores problemas de Productor/Consumidor.

4.9

Conclusiones y trabajos futuros

Las regiones cr ticas condicionales son construcciones de alto nivel para la programaci on concurrente. Esta caracter stica las hace una herramienta interesante para la construcci on de software sin errores, pens andolo dentro de un contexto donde los mismos han sido m as la regla que la excepci on [Gib94, Cre05, Lee06]. El principal problema que atent o contra el uso de estas construcciones fue la falta de implementaciones ecientes. Actualmente, gracias a la madurez que han alcanzado los probadores se teoremas, se puede pensar en utilizar estas herramientas para solucionar el problema. En este trabajo se presenta un m etodo para optimizar de forma totalmente autom atica implementaciones de regiones cr ticas condicionales realizadas mediante la t ecnica SBD. El m etodo fue implementado en un prototipo de software que utiliza diversos probadores de teoremas externos. El mismo sirvi o para probar la t ecnica sobre diversos problemas cl asicos de la literatura obteni endose resultados positivos. Estos fueron obtenidos en pocos segundos, lo cual muestra la viabilidad de utilizaci on de la t ecnica en compiladores y generadores de c odigo. El m etodo presentado posee tres partes mutuamente relacionadas: el modelado de los implementaciones SBD con sistemas de transiciones, la prueba de la optimizaciones mediante el c alculo del mayor punto jo y las simplicaciones, tanto del sistema de transiciones como de las f ormulas intermedias en el c alculo anterior. Esto u ltimo fue esencial al momento de poder encontrar las mejoras en tiempos razonables.

4.9. CONCLUSIONES Y TRABAJOS FUTUROS

149

El an alisis sobre nuestro m etodo muestra que es incompleto, en el sentido que puede no encontrar todas las optimizaciones posibles. Una de las causas de incompletitud es la no convergencia en el c alculo del punto jo. Si bien no disponemos de una caracterizaci on de los problemas para los cuales el m etodo converge, este funciona correctamente en los ejemplos tomados de la literatura. En su estado actual, la t ecnica podr a ser aplicada para la optimizaci on de programas simplemente limitando el n umero de iteraciones en el c alculo del punto jo o mediante alg un l mite de tiempo. Si bien esto puede dejar fuera programas convergentes, el fen omeno no necesariamente puede ser resuelto en general, dado que el algoritmo tiene que chequear tambi en implicaciones en la aritm etica, lo cual no siempre es decidible. El m etodo propuesto podr a ser mejorado incorporando t ecnicas de interpretaci on abstracta (cap tulo 3) sobre distintos dominios, de forma tal de acelerar la convergencia con nuevos invariantes. Hasta el momento se intent o hacerlo sobre el dominio de poliedros convexos, pero solo se encontraron invariantes m as d ebiles que los producidos autom aticamente por la t ecnica SBD, lo cual no permite realizar nuevas simplicaciones. Como veremos en el pr oximo cap tulo, el empleo de esta t ecnica fue esencial para resolver el problema all propuesto. Queda pendiente para trabajos futuros la utilizaci on de otros dominios de interpretaci on abstracta como abstracci on por predicados con renamiento por contraejemplos [CGJ 00, DD02]. Tambi en ser a interesante estudiar la aplicabilidad de alguna t ecnica de narrowing sobre el c alculo del m aximo punto jo al estilo de la presentada en [BW10]. Inicialmente este trabajo fue planteado en funci on de un objetivo general m as ambicioso: como utilizar los probadores de teoremas no solo para la vericaci on de programas si no para ayudar en su construcci on. Aunque el trabajo aqu presentado va en esa direcci on (no se verican programas si no que se los modica para mejorar su eciencia) queda pendiente poder utilizar estas t ecnicas de generaci on de invariantes para guiar el desarrollo de programas concurrentes. Un trabajo futuro es el dise no de una herramienta que funcione a la manera de un laboratorio de invariantes para guiar la construcci on de programas. Este objetivo est a inspirado en la metodolog a propuesta por E. W. Dijkstra sobre el tema. Lamentablemente las t ecnicas asercionales all propuestas no han tenido gran aceptaci on debido a las dicultades de las pruebas formales que involucran. Creemos que con el desarrollo actual de los probadores de teoremas, es posible encarar metodolog as basadas en estos trabajos donde se facilite las pruebas formales y las b usquedas de invariantes. Para ello se deber an crear interfaces de programaci on que utilicen probadores externos y ayuden a la visualizaci on de sus resultados dentro del contexto de los programas. Este tipo de trabajos podr a dar lugar a una verdadera ciencia de la computaci on experimental, con experimentos mucho m as ricos e informativos que los casos de test. Como ya mostr o convincentemente Dijkstra, las propiedades de los (quiz a a un incompletos) programas son una buena gu a para la construcci on de los mismos. Lo que estas herramientas habilitar an, es la posibilidad pr actica de experimentar con estas propiedades.

150

CAP ITULO 4. REGIONES CR ITICAS CONDICIONALES

Cap tulo 5

Implementaci on de monitores con se nalamiento autom atico


En el cap tulo anterior presentamos la t ecnica SBD la cual permite implementar con sem aforos binarios las construcciones concurrentes de alto nivel denominadas regiones cr ticas condicionales. Vimos tambi en que al aplicarla a problemas particulares, resulta por lo general en programas que son plausibles de ser mejorados en su eciencia. La dicultad para encontrar estas mejoras en forma manual hace que, a pesar de sus benecios, estas construcciones no sean ampliamente utilizadas en el desarrollo de programas concurrentes. A partir de esta problem atica desarrollamos un m etodo para encontrar estas mejoras de manera autom atica, utilizando probadores de teoremas externos. De forma general, aquel trabajo puede ser visto como la presentaci on de una metodolog a mediante la cual se pueden implementar, de manera eciente, construcciones de alto nivel (regiones cr ticas condicionales) con operaciones de bajo nivel (sem aforos), donde estas u ltimas son generalmente brindadas en los lenguajes de programaci on concurrente. El objetivo del trabajo que se abordar a en este cap tulo corre en un mismo sentido. Aqu presentaremos una metodolog a para implementar, de manera eciente y autom atica, las construcciones concurrentes de alto nivel denominadas monitores con se nalamiento autom atico a partir de monitores con se nalamiento expl cito , donde estas u ltimas son generalmente implementadas en los lenguajes de programaci on. Del mismo modo que en el cap tulo anterior, existen t ecnicas para realizar estas implementaciones, pero por lo general sus resultados admiten simplicaciones que mejoran su eciencia. En este trabajo presentaremos una metodolog a para encontrar estas mejoras de manera autom atica con un enfoque similar al desarrollado en el cap tulo anterior, modelando el comportamiento de los monitores con sistemas de transiciones. Nos concentraremos en la eliminaci on de se nalamientos superuos, aunque la metodolog a puede extenderse a otros tipos de mejoras. Adem as, veremos que el problema actual es m as complejo que el anterior por lo que para encontrarlas incluiremos las t ecnicas de interpretaci on abstracta en el dominio de poliedros convexos desarrolladas en el cap tulo 3. 151

152

CAP ITULO 5. MONITORES

En las primeras secciones del cap tulo presentaremos las categor as de monitores utilizadas en este trabajo y los antecedentes del problema a tratar. En la secci on 5.3 veremos una t ecnica general para implementar monitores de se nalamiento autom atico con monitores de se nalamiento expl cito. En las secciones 5.4 y 5.5 mostraremos como mejorar estas implementaciones modelando el comportamiento de aquellas implementaciones con sistemas de transiciones y aplicando las t ecnicas desarrolladas en los cap tulos 2 y 3. En las secciones 5.6 y 5.7 veremos algunas mejoras al m etodo desarrollado y su implementaci on. Finalmente, en las secciones 5.8 y 5.9 mostraremos los resultados de la aplicaci on del m etodo y las conclusiones del trabajo respectivamente.

5.1

Monitores

En la secci on 4.1 del cap tulo anterior mencionamos las regiones cr ticas condicionales como una evoluci on de las esperas condicionales. Como vimos en aquella ocasi on, esas construcciones resolv an algunos problemas en la implementaci on de las primeras, relacionados a la libertad del contexto donde aparecen las variables de las condiciones en las operaciones await. Esta libertad hac a necesaria la utilizaci on de bucles busy wait para chequear aquellas condiciones lo cual produce una gran perdida de eciencia. La estructura de declaraci on de datos compartidos que introducen las regiones cr ticas condicionales soluciona este problema: la t ecnica SBD las implementa utilizando operaciones bloqueantes (sem aforos) y no bucles busy wait. De todas maneras, aunque las regiones cr ticas condicionales fueron un paso importante en la creaci on de construcciones concurrentes de alto nivel, de manera temprana fueron identicadas algunas de sus deciencias. En [Han73a] se observa que estas construcciones pueden aparecer en cualquier lugar de los programas, lo que diculta hacer un seguimiento de la forma en que los datos compartidos son manipulados por los procesos concurrentes. En el mismo art culo se sugiere como soluci on la utilizaci on de construcciones sint acticas que combinen los datos compartidos con las operaciones sobre los mismos. A estas construcciones las llama monitores. Cabe mencionar que anteriormente en [Han72] el mismo autor propuso extender las regiones cr ticas condicionales permitiendo que su condici on pueda aparecer en cualquier punto de la regi on cr tica (no solamente en su comienzo) lo cual acerc o a un m as estas construcciones a los monitores actuales. Siguiendo estas ideas, en [Hoa74] tambi en se menciona la necesidad de unicar datos compartidos con regiones cr ticas proponiendo una notaci on inspirada en el sistema de clases de SIMULA67. Pero la modicaci on m as novedosa reside en el agregado de operaciones de se nalizaci on explicitas que funcionan para que los procesos comuniquen la liberaci on del recurso compartido, eliminando de esta forma los predicados en las operaciones bloqueantes. Los monitores con este agregado son los implementados en la mayor a de los lenguajes de programaci on y ser an los primeros que analizaremos. Cabe agregar que en el mismo art culo se menciona que sin esta modicaci on los monitores son m as simples de usar, aunque se diculta su implementaci on. De manera general, los monitores son construcciones brindadas por los lenguajes de programaci on concurrente que permiten exclusi on mutua al acceso de datos compartidos y sincronizaci on entre los procesos que los acceden. Como ya

5.1. MONITORES

153

adelantamos, distintos mecanismos de sincronizaci on han sido propuestos, a partir de los cuales puede hacerse una clasicaci on de distintos tipos de monitores. En este sentido, los monitores pueden ser divididos en dos grandes categor as: monitores con se nalamiento expl cito y monitores con se nalamiento autom atico. A continuaci on profundizaremos sobre esta clasicaci on, haciendo hincapi e en los monitores utilizados en este trabajo.

5.1.1

Se nalamiento expl cito

Los monitores son construcciones de los lenguajes de programaci on que permiten organizar el acceso de procesos a recursos compartidos de forma exclusiva. Esta organizaci on se logra mediante mecanismos de sincronizaci on y comunicaci on que estas construcciones proveen. Un monitor consiste de ciertas variables, que representan los recursos, y un conjunto de procedimientos que operan sobre los mismos. Estos datos pueden ser manipulados directamente solo por aquellos procedimientos. De esta manera, los procesos externos pueden accederlos u nicamente de forma indirecta, invocando aquellos procedimientos. Adem as, como solo se permite la ejecuci on de un procedimiento al mismo tiempo, la exclusi on mutua entre los accesos es garantizada. Un esquema sint actico de la declaraci on de un monitor como una colecci on de procedimientos es el siguiente: monitor Nombre monitor var v1 : T1 . . . var vm : Tm S1 end . . . procedure op1 ppar ametros 1 q

procedure opn ppar ametros n q Sn end end donde v1 , , vm son las variables del monitor y op1 , , opn son los nombres de los procedimientos con su declaraci on de par ametros. De esta manera, las invocaciones a los procedimientos del monitor tienen la forma: Nombre monitor .opi pargumentos q Estos procedimientos implementan las operaciones sobre los recursos, representados por las variables del monitor, mediante sus programas S1 , , Sn respectivos. Los mismos pueden contener variables locales. La ejecuci on de estos programas se realiza en exclusi on mutua. Diremos entonces que al momento de la ejecuci on de un procedimiento el monitor permanece en estado cerrado. Dentro del mismo, la ejecuci on de cualquier otro proceso que intente invocar un procedimiento permanecer a detenida.

154

CAP ITULO 5. MONITORES

Llamaremos proceso activo al u nico proceso posible ejecutando un procedimiento en un momento dado. Un monitor en estado cerrado pasar a a estado abierto cuando el proceso activo libere la ejecuci on del procedimiento. En esta situaci on, podr a desbloquearse cualquier otro proceso cuya ejecuci on haya sido detenida. Para la resoluci on de algunos problemas es suciente la exclusi on mutua explicada anteriormente, ya que solo se necesita el acceso serializado al recurso. En otros problemas se hace necesario sincronizar diferentes procesos mientras utilizan el monitor. Es por ello que los monitores proveen la posibilidad de declaraci on de variables especiales denominadas variables de condici on (de tipo cond) junto con las operaciones signal y wait sobre las mismas. En el caso que un proceso activo ejecute una operaci on wait sobre una variable de condici on, el monitor pasar a del estado cerrado al abierto. Al mismo tiempo, el proceso quedar a bloqueado en una cola de procesos identicada a la variable de condici on. En el caso que un proceso activo ejecute una operaci on signal sobre una variable y haya alg un proceso en la cola de la misma, este u ltimo pasar aa otra cola de procesos en espera a ser liberados cuando el monitor se encuentre abierto. El proceso activo, despu es de la ejecuci on de la operaci on signal, continuar a su ejecuci on. A partir de esta descripci on informal del comportamiento del sistema, puede verse que en la implementaci on de un monitor entran en juego varias colas de procesos: una cola e de procesos que intentaron invocar un procedimiento mientras el monitor estuvo cerrado y, por cada variable de condici on c, una cola wc para procesos que ejecutaron la operaci on wait.c y una cola sc para procesos que esperaron en una cola wc y fueron se nalizados. La operaci on signal sobre una variable de condici on c puede especicarse como: . (5.1) signal.c  if |wc | 0 sc .enquepwc .dequeq |wc |  0 skip donde |wc | es el tama no de la cola wc . Esta especicaci on expresa que, si hay al menos un proceso esperando en la cola wc (ejecut o una operaci on wait.c) entonces se lo elimina de la misma y se lo deposita en la cola de se nalizados correspondiente. En el caso que no haya procesos esperando, la se nalizaci on se pierde. Despu es de realizarse la operaci on, el proceso activo seguir a su ejecuci on normal. Cabe aclarar que este u ltimo comportamiento es propio de los monitores denominados Wait and Notify los cuales ser an los utilizados en este trabajo. Existen otras propuestas de monitores donde un proceso que ejecuta la operaci on signal queda bloqueado (deja de ser activo) permitiendo que otros procesos en las colas de esperas, contin uen la ejecuci on. Estos monitores son denominados de manera gen erica Signal and Wait. En [BFC95] se hace una clasicaci on y especicaci on detallada de los distintos tipos de monitores. Al momento de ejecutarse un operaci on wait dentro de un procedimiento, el proceso activo deja de serlo, comenzando un nuevo hilo de ejecuci on por parte de alg un proceso se nalizado (en la cola sc para alguna variable de condici on c) o de alg un procesos intentando la ejecuci on de alg un procedimiento cuando el monitor estuvo cerrado. Este cambio en el contexto de ejecuci on es realizado por un scheduler asociado al monitor, el cual ser a activado siempre que este pase del estado cerrado al abierto. Teniendo en mente el scheduler, una posible

5.1. MONITORES especicaci on de la operaci on wait ser a: wait.c .  wc .enquepselfq ; schedule

155

(5.2)

donde self hace referencia al proceso activo que ejecuta esta operaci on. El scheduler elige el pr oximo proceso activo entre los se nalizados y los esperando por invocar un procedimiento. Si el monitor tiene denidas m variables de condici on c1 , , cm , entonces el scheduler puede ser especicado como: schedule .  if |e| 0 nextActive : e.deque |sc1 | 0 nextActive : sc1 .deque . . . . . . |scm | 0 nextActive : scm .deque ; run.nextActive (5.3)

donde la llamada a la funci on run representa el cambio de hilo de ejecuci on al nuevo proceso activo. Finalmente, a la salida de un procedimiento, un proceso activo deja al monitor abierto, permitiendo al scheduler habilitar el comienzo de ejecuci on de alg un proceso en espera. Si representamos con la sentencia return la salida de un procedimiento, su especicaci on ser a simplemente la llamada al scheduler: return .  schedule (5.4)

Notemos que seg un la denici on del scheduler, este elige de forma no determinista el pr oximo proceso activo entre los se nalizados y los que est an esperando invocar un procedimiento. En este sentido, tambi en existen distintas propuestas de monitores que incluyen prioridades entre estas colas. El scheduler especicado, junto a la estrategia de no bloqueo en operaciones signal, identica a los monitores Wait and Notify tambi en denominados No Priority Non-Blocking (NPNB ). Otro tipo de monitor que se propone en la literatura, son aquellos que, adem as de bloquear el proceso activo al ejecutar una operaci on signal, tienen prioridad los procesos se nalizados esperando en una cola de condici on (colas sc ) sobre los procesos nuevos esperando activar un procedimiento (cola e). Este tipo de monitor es denominado Signal and Urgent Wait o Priority Blocking (PB ). Una clasicaci on completa de los distintos tipos de monitores es detallada en [BFC95]. Otro comportamiento no determinista que presenta el anterior scheduler es la elecci on entre las colas de se nalizados: habiendo procesos de este tipo en distintas colas, el scheduler elije uno de forma no determinista. Este comportamiento es propio de los monitores NPNB como se especica en [BFC95]. Los monitores NPNB son los m as frecuentemente implementados en los lenguajes de programaci on. Ejemplo de los mismos aparecen en los lenguajes Java, Modula, Mesa, y en la librer a del lenguaje C denominada PThreads [BH05]. Aunque esta clase de monitores son ampliamente utilizados, presentan graves inconvenientes al momento de su programaci on, en comparaci on con otros tipos de monitores. Por ejemplo, en un monitor Signal and Urgent Wait, cuando una variable de condici on es se nalizada, el control es transferido directamente a un proceso esperando por cierta condici on sobre el estado. Esto permite establecer

156

CAP ITULO 5. MONITORES

protocolos de comunicaci on entre el proceso se nalizador y el se nalizado a trav es de las variables de programa del monitor. En contraste, una operaci on signal en un monitor NPNB sirve solo como aviso, a un proceso despertando de una espera, que cierta condici on fue satisfecha en el pasado (al momento de ejecutarse el signal). Como resultado, la condici on por la cual un proceso en espera fue se nalizado, puede no cumplirse al momento en que retome la ejecuci on, haciendo dicultosa la implementaci on del protocolo. Este problema es causa de muchos errores de programaci on y ha derivado en un estilo de codicaci on denominado signal as hint [LR80]: despu es de un wait el nuevo proceso activo debe chequear el cumplimiento de la condici on por la que fue se nalizado. En el caso que no se cumpla, el proceso debe ponerse otra vez en espera (se inserta el wait dentro de un bucle). Este estilo de programaci on suele producir p erdidas de eciencia debido a los cambios de contexto no necesarios. Como veremos m as adelante, este trabajo intenta resolver el mismo problema. Ejemplo 5.1 (Monitor Productor/Consumidor) A manera de ejemplo de uso de este tipo de monitores, en el programa 5.1 mostramos una implementaci on del problema de productores y consumidores presentado en el cap tulo 4 (ejemplo 4.1, p ag. 111). Programa 5.1 Monitor Productor/Consumidor se nalamiento expl cito

monitor Productor Consumidor var p, d : int var buf : arrayr0, N q of T var cprod , ccons : cond .  p0^d0^N procedure Prod(x : T ) if p d N

0
procedure Cons(var y : T ) p d 0 signal.cprod ; wait.ccons ; do p d 0 wait.ccons od ; y : buf.pp mod N q; d : d 1; signal.cprod ; signal.cprod end if p d 0 skip

skip p d N

signal.ccons ; wait.cprod ; do p d N wait.cprod od ; buf.pp mod N q : x; p : p 1; signal.cprod ; signal.ccons end

La implementaci on utiliza el estilo de c odigo mencionado anteriormente: las condiciones para producir o consumir un elemento se asocian a variables de condici on (cprod y ccons ). Si la condici on no se cumple, se se naliza a un proceso de otro tipo para que la satisfaga y se espera en una operaci on wait por una se nal. En el caso que el proceso despierte de esta operaci on, se debe volver a

5.1. MONITORES

157

chequear la condici on. Esto se logra poniendo la operaci on dentro de un bucle. A la salida de un proceso se se naliza a otros esperando por sus condiciones. Esta soluci on del problema admite ciertas mejoras en su eciencia. Como se indica en [And91, cap. 6] para este caso en particular, se puede demostrar que los procesos no necesitan se nalizar antes de ejecutar una operaci on wait. Adem as, de forma an aloga a la resoluci on del problema con SBD, las se nalizaciones a la salida no son todas necesarias: un productor no necesita se nalizar a otro proceso de su misma clase y lo mismo sucede con los consumidores. En [BFC95, secci on 4.2.3] se muestras las condiciones de pruebas necesarias para corroborar estas simplicaciones, las cuales involucran la b usqueda de un invariante que se cumpla al momento de las ejecuciones de las operaciones signal y wait. La nueva soluci on con estas modicaciones puede verse en el programa 5.2. Programa 5.2 Monitor Productor/Consumidor simplicado

monitor Productor Consumidor var p, d : int var buf : arrayr0, N q of T var cprod , ccons : cond .  p0^d0^N do p d N wait.cprod od; buf.pp mod N q : x; p : p 1; signal.ccons end procedure Prod(x : T )

0
procedure Cons(var y : T ) do p d 0 wait.ccons

od; y : buf.pp mod N q; d : d 1; signal.cprod end

La eliminaci on de estas se nalizaciones produce una soluci on m as eciente ya que reduce la cantidad de chequeos de guardas en los bucles que encierran las operaciones wait. Como veremos m as adelante, nuestro m etodo propuesto realiza estas mejoras de forma autom atica.

5.1.2

Se nalamiento autom atico

Una alternativa al uso de variables de condici on es especicar directamente las condiciones sobre el estado. Esta idea se corresponde con la implementaci on de protocolos de comunicaci on entre distintos procesos accediendo el monitor, como se menciona al nal de la secci on anterior. En este sentido los monitores de se nalamiento autom atico fueron propuestos por Hoare [Hoa74] como una evoluci on de las regiones cr ticas condicionales. En los mismos se eliminan las variables de condici on y la operaci on signal modicando la operaci on wait (la llamaremos await para diferenciarla de la anterior), la cual toma como par ametro una expresi on booleana de las variables: await.<expresi on booleana>

158

CAP ITULO 5. MONITORES

Si la misma no es satisfecha por el estado donde se ejecuta la sentencia, el proceso activo es bloqueado permitiendo que otros procesos tomen el control del monitor (el monitor pasa del estado cerrado al abierto). Un proceso bloqueado en la sentencia contin ua su hilo de ejecuci on cuando el monitor pasa al estado abierto y se satisface la condici on. A esta condici on la llamaremos guarda de la operaci on await. Para la implementaci on de esta clase de monitor se asocia a cada expresi on booleana dentro de un await una cola, agregando una m as para procesos esperando invocar un procedimiento. Sean B1 , , Bm las guardas de las operaciones await que aparecen en un monitor, c1 , , cm las colas de cada una y e la cola de procesos esperando activar un procedimiento. La operaci on await puede especicarse como: await.Bi .  ci .enquepselfq ; schedule

con la siguiente denici on del scheduler: schedule .  if |e| 0 |c1 | 0 ^ B1 . . . |cm | 0 ^ Bm ; run.nextActive

nextActive : e.deque nextActive : c1 .deque

. . . nextActive : cm .deque

La salida de un proceso activo desde un procedimiento puede especicarse simplemente como la llamada al scheduler: return .  schedule

La elecci on del pr oximo proceso activo hecha por el scheduler es no determinista. Al igual que en los monitores con se nalamiento impl cito, distintas clases de monitores son propuestos en la literatura dependiendo de la existencia de prioridades entre la cola de entrada y las de las condiciones [BFC95]. En nuestra trabajo utilizaremos una clase especial de monitores con se nalamiento autom atico sin prioridades entre las colas, en el cual las guardas de las operaciones await solo pueden contener variables del monitor que no sean locales a los procedimientos. Esto excluye expresiones que contengan variables par ametros de los procedimientos del monitor. El tipo de monitores es denominado No Priority Restricted Automatic Signal (NPRAS ) seg un la clasicaci on en [BFC95]. Los monitores de esta clase que cumplen con esta limitaci on son denominados No Priority Restricted Automatic Signal (NPRAS ). Cabe aclarar que esta restricci on no disminuye la capacidad expresiva de estas construcciones (como se analiza en [BFC95]) y adem as ser a importante al momento de modelarlas con sistemas de transiciones. En estos monitores la labor del scheduler puede adosarse f acilmente a las operaciones await y return ya que el chequeo de las expresiones booleanas es

5.1. MONITORES global a los procedimientos: await.Bi .  if Bi skip Bi ci .enquepselfq; if |e| 0 run.pe.dequeq x j :1j m^j i : |cj | 0 ^ Bj run.pcj .dequeq y

159

(5.5)

return

. 

|e| 0 run.pe.dequeq x j :1jm : |cj | 0 ^ Bj run.pcj .dequeq y


if

Las expresiones cuanticadas dentro de los if son cuanticaciones generalizadas sobre el operador de elecci on no determinista. Notar que con este cambio, si un proceso ejecuta una espera con su guarda verdadera entonces contin ua su ejecuci on, a diferencia de la especicaci on anterior de la operaci on await. Estudios sobre estos monitores muestran que son m as simples de utilizar en forma correcta que los monitores con se nalamiento expl cito [BFC95, BH05]. En los monitores con se nalamiento no bloqueante (i.e. Wait and Notify ) la causa de errores de programaci on, mencionada en la secci on anterior, es el desconocimiento sobre cuando el proceso se nalizado continuar a su ejecuci on. Por ejemplo, un error com un es escribir un procedimiento donde se ejecuta un signal cuando cierto predicado se satisface, mientras que despu es de esta operaci on, en la misma porci on de c odigo se la falsica. Con respecto a los monitores con se nalamiento bloqueante (i.e. Signal and Urgent Wait ) puede suceder que el proceso se nalizado altere el estado del monitor que ten a al momento de ejecutarse el signal. Esto produce que la escritura del programa despu es de la aparici on de esta operaci on, sea susceptible a cometer errores ya que no se conoce de forma local el cambio de estado producido por el proceso se nalizado. Con los monitores de se nalamiento autom atico estos errores no aparecen ya que se elimina la operaci on signal. Ejemplo 5.2 (Productor/Consumidor con se nalamiento autom atico) En el programa 5.3 (p ag. 160) se muestra la soluci on al problema de productores y consumidores utilizando monitores con se nalamiento autom atico. Comparando este programa con la soluci on con se nalamiento expl cito en el programa 5.1, puede notarse que es mucho m as claro y m as simple que la anterior. La versi on simplicada en el programa 5.1 es similar a esta u ltima, pero para obtenerla es necesario probar su correcci on, lo cual es una tarea compleja que involucra la b usqueda de un invariante del monitor. l En [BFC95] se derivan las condiciones de prueba que aseguran la correcci on de las distintas clases de monitores. Las mismas son expresadas como una extensi on de la sem antica axiom atica est andar mediante 3-uplas de Hoare. Esta

160 Programa 5.3

CAP ITULO 5. MONITORES Monitor Productor/Consumidor se nalamiento autom atico

monitor Productor Consumidor var p, d : int; var buf : arrayr0, N q of T ; .  p0^d0^N await.pp d N q; buf.pp mod N q : x; p : p 1 end procedure Prod(x : T )

0
await.pp d 0q; y : buf.pp mod N q; d : d 1 end procedure Cons(var y : T )

extensi on de la l ogica de Hoare se realiza postulando la existencia dos1 predicados: el predicado I es el invariante del monitor ; el mismo se satisface siempre que el monitor cambie del estado cerrado a abierto o viceversa, o sea al comenzar un procedimiento, antes y despu es de la operaci on await, y antes de nalizar el procedimiento (en la primitiva return). El predicado E que debe satisfacerse cada vez que un proceso despierte de la cola e comenzando la ejecuci on de un procedimiento. Para se nalar esta condici on se agrega la primitiva enter al comienzo de todos los procedimientos del monitor. Al momento de vericar un monitor estos predicados deben ser encontrados. En el caso de monitores NPRAS las condiciones para las primitivas y operaciones enter, await y return ser an:

ttrueu enter tI ^ E u tI ^ E u await.Bi tI ^ Bi u tI ^ E u return tfalseu .


En el articulo mencionado anteriormente, estas condiciones son derivadas de las especicaciones en (5.5) dadas anteriormente. Cabe agregar que en este resultado los predicados I y E aparecen en conjunci on, por lo que el segundo puede ser incluido en el primero:

ttrueu enter tI u tI u await.Bi tI ^ Bi u tI u return tfalseu .

(5.6)

Aunque las condiciones de prueba para esta clase de monitores son muy simples, lamentablemente los lenguajes de programaci on rara vez los implementan2 . Esto es debido a los problemas de eciencia que produce la evaluaci on de las
1 En el caso de monitores con se nalamiento expl cito se agrega un predicado extra para la operaci on signal. 2 El lenguaje de programaci on Edison [Han81] los implementa.

5.2. ANTECEDENTES

161

guardas mostradas en las especicaciones de las operaciones await y return en (5.5). Como veremos m as adelante, nuestro trabajo intenta eliminar estos chequeos innecesarios de manera autom atica.

5.2

Antecedentes

Los monitores fueron propuestos y desarrollados conjuntamente por Brinch Hansen [Han73b] y C.A.R. Hoare [Hoa74]. La descripci on inicial de los mismos hecha en estos trabajos es en la forma de monitores con se nalamiento expl cito, aunque Hoare, bas andose en las experiencias anteriores con regiones cr ticas condicionales, sugiere que la versi on con se nalamiento autom atico es m as simple de utilizar correctamente. M as tarde Brinch Hansen implementa los monitores con se nalamiento autom atico en el lenguaje Edison [Han81]. Un trabajo que ataca directamente el problema de la eciencia de los monitores con se nalamiento autom atico es [Sch76], el cual ya fue mencionado en el cap tulo anterior (secci on 4.3). Aunque el mismo comienza analizando el problema de eciencia de regiones cr ticas condicionales, naliza aplicando las t ecnicas desarrolladas sobre esas construcciones a monitores. En [BFC95] Peter A. Buhr y Michael Frontier realizan una taxonom a exhaustiva de los monitores con se nalamiento autom atico y expl cito, sugiriendo nuevas clases de monitores. All tambi en desarrollan las reglas de prueba de los distintos tipos de monitores para asegurar su correcci on, con las cuales se analiza su facilidad de uso y se proponen t ecnicas de programaci on acordes a cada uno. En ese trabajo adem as se demuestra la equivalencia expresiva entre las distintas clases de monitores. En [BH05], Peter A. Buhr y Ashif S. Harji analizan la posibilidad de implementaci on de monitores con se nalamiento autom atico a partir de monitores con se nalamiento expl cito. Para ello construyen simulaciones sobre estas implementaciones en diferentes lenguajes de programaci on. Las mismas son hechas a partir de reemplazos puramente sint acticos sobre los monitores con se nalamiento autom aticos (a la manera de la mostrada en la secci on siguiente) y sin ning un tipo de mejoras como las desarrolladas en nuestro trabajo.

5.3

Implementaci on de monitores con se nalamiento autom atico

Como mencionamos al principio de este cap tulo, nuestro trabajo consiste en mejorar, de manera autom atica, implementaciones de monitores con se nalamiento autom atico utilizando monitores de se nalamiento expl cito. En el cap tulo anterior vimos como la t ecnica SBD brindaba implementaciones de regiones cr ticas condicionales con sem aforos binarios (aunque poco ecientes). Aqu , de manera an aloga, comenzaremos a describir la implementaci on de monitores de se nalamiento autom atico de tipo NPRAS (No Priority Restricted Automatic Signal ) con monitores de se nalamiento expl cito NPNB (No priority Non-blocking). La decisi on de utilizar esta clase de monitores es que son brindados com unmente en los lenguajes de programaci on, como ya se mencion o en la secci on 5.1.1. Implementaremos monitores con se nalamiento autom atico NPRAS ya que poseen una implementaci on simple con monitores NPNB. Esto es debido a la caracter stica

162

CAP ITULO 5. MONITORES

de falta de prioridad entre las colas que comparten ambos. Para implementar monitores con prioridad utilizando otros sin esta caracter stica es necesario implementar colas extras de procesos, como se indica en [BH05]. La implementaci on que utilizaremos est a basada en el estilo de codicaci on signal as hint que mencionamos en la secci on 5.1.1 y puede encontrarse en la literatura [And91, BH05]. La idea general es asociar cada guarda de una operaci on await de un monitor con se nalamiento autom atico, a una variable de condici on en la implementaci on. Sean B1 , , Bm las guardas de las operaciones await que aparecen en un monitor. Por cada una utilizaremos una variable de condici on c1 , , cm respectivamente, las cuales deben ser declaradas dentro del monitor con se nalamiento expl cito en la implementaci on. Con este agregado, cada aparici on de una operaci on await.Bi en el monitor a implementar ser a reemplazada de manera sint actica por: . (5.7) await.Bi  if Bi skip Bi for pj  1, , m ^ j  iq signal.cj ; wait.ci ; do Bi wait.ci od Adem as, a la salida de cada procedimiento se agregar a la se nalizaci on a todos los procesos esperando por el cumplimiento de su guarda: . return  for pj  1, , mq (5.8) signal.cj ; return Notar que con estas manipulaciones sint acticas el monitor con se nalamiento autom atico escrito en el programa 5.3 (soluci on del problema Productor/Consumidor) es implementado con el programa 5.1 obtenido utilizando el estilo de c odigo signal as hint. Como mostramos con el programa 5.2 la implementaci on obtenida con estas modicaciones sint acticas es poco eciente, en el sentido que pueden eliminarse se nalamientos superuos. Para encontrarlos, primero modelaremos estas implementaciones con sistemas de transiciones.

5.4

Monitores como sistema de transiciones

En esta secci on mostraremos como generar un sistema de transiciones a partir de la implementaci on con monitores de se nalamiento expl cito desarrollada en la secci on anterior. Para ello procederemos a la manera que lo hicimos con las implementaciones SBD en el cap tulo anterior. En aquel caso, las implementaciones con sem aforos ten an un estructura regular cualquiera sea el problema a resolver, la cual se indic o en el programa 4.3 (p ag. 111). M as espec camente, las operaciones de sincronizaci on P.s y V.s aparecen solo dentro del protocolo de entrada (if inicial de la implementaci on SBD) o en el protocolo de salida (if nal). Esta estructura en las implementaciones SBD permiti o enumerar las transiciones posibles para formar el sistema de transiciones (secci on 4.4, p ag. 118).

5.4. MONITORES COMO SISTEMA DE TRANSICIONES

163

En el caso de implementaciones de monitores con se nalamiento autom atico la estructura de los programas ya no muestran esta regularidad: las operaciones de sincronizaci on await.B a implementar pueden aparecer en cualquier lugar dentro de los procedimientos del monitor. Estas operaciones tienen la misma jerarqu a gramatical que cualquier sentencia del programa, lo cual permite que el programador las introduzca por ejemplo dentro de las sentencias de una alon vamos a generar el sistema de transiciones de forma ternativa if . Por esta raz inductiva sobre la estructura gramatical de los procedimientos. De todas maneras, la modelizaci on con sistemas de transiciones seguir a el estilo de la que realizamos para las implementaciones SBD. En este sentido, conservaremos aquel concepto de secci on como traza de ejecuci on at omica dentro del monitor, gracias a la exclusi on mutua que estos brindan en la ejecuci on de sus procedimientos. Cada una estas secciones ser a modeladas con una transici on, lo cual permitir a una granularidad mayor de los sistemas con su correspondiente simplicaci on en su tratamiento. De igual forma, conservaremos la idea de asociar a cada locaci on el argumento de la operaci on bloqueante: en el cap tulo anterior cada locaci on se identic o con un sem aforo, mientras que en el cap tulo actual asociaremos cada locaci on a una variable de condici on. Mas espec camente, dado un monitor con se nalamiento autom atico a implementar, donde dentro de sus procedimientos aparecen m operaciones await con predicados par ametro B1 , , Bm , comenzaremos deniendo las locaciones de la siguiente forma: 1. Implementaremos el monitor con uno de se nalamiento expl cito como se indic o en la secci on anterior. El nuevo monitor tendr a m variables de condici on c1 , , cm asociadas a los predicados par ametro anteriores. 2. Cada una de las variables de condici on ser a identicada con una locaci on del sistema de transiciones que modelar a el comportamiento de esta implementaci on. En particular, las transiciones que tengan estas locaciones de salida modelar an las secciones que comienzan su ejecuci on dentro de las implementaciones de las operaciones await. Por ejemplo, una transici on podr a comenzar en una locaci on ci si la condici on Bi se cumple, modelando el comienzo de ejecuci on de una secci on por el desbloqueo de una operaci on await.Bi . 3. Adem as, agregaremos una locaci on e para procesos intentando invocar alg un procedimientos (a la manera de la locaci on sm en la modelizaci on SBD). Las transiciones que la tengan como locaci on de salida, modelar an las secciones al comienzo de la invocaci on de un procedimiento. Al nalizar este procedimiento tendremos denido el conjunto de locaciones . L  te, c1 , , cm u del sistema de transiciones. Como ya mencionamos, el sistema de transiciones ser a generado de forma inductiva sobre la estructura gramatical de los procedimientos. Esta derivaci on se har a sobre el monitor implementado, o sea desplegando de manera puramente sint actica la implementaci on de las operaciones en la secci on anterior sobre el monitor con se nalamiento autom atico a implementar. Para simplicar la exposici on utilizaremos un sistema de reglas al estilo c alculo de secuentes adaptado a nuestra tarea: un secuente ser a de la forma S $ con S un programa y una transici on, indicando que a partir de un programa S se derivar a la transici on .

164

CAP ITULO 5. MONITORES

La misma tendr a como sentencia una asignaci on guardada, por lo que siempre tendr a la forma pl, B P1 ; ; Pk , l1 q con P1 , , Pk sentencias determinista y totales. Una regla tendr a la forma: premisa1 premisan nombre conclusi on condici on lateral

donde las premisas y la conclusi on ser an secuentes y la condici on lateral un predicado. Esta indica que si se puede generar las transiciones en las premisas entonces se puede derivar la de la conclusi on. A la manera usual, se utilizar an metavariables en la reglas para denotar un esquema de reglas. Las metavariables las escribiremos en may uscula it alica. En el caso de que no haya premisas se obviar a la linea horizontal a la manera de un axioma esquema. De forma introductoria comenzaremos a denir la regla para la composici on secuencial de dos programas S1 ; S2 . Si de ambos programas por separado se pueden generar dos transiciones respectivamente, del programa compuesto se derivar a un transici on concatenando las anteriores y propagando hacia atr as la guarda con el transformador wlp (a la manera que lo hicimos en el cap tulo anterior): S1

$ pL,

B1 P1 , q S2 $ p, B2 P2 , L1 q Seq1 S1 ; S2 $ pL, B1 ^ wlp.P1 .B2 P1 ; P2 , L1 q

(5.9)

Notemos que utilizamos una locaci on auxiliar la cual denota un nodo intermedio de la transici on. Esto se hace para diferenciar las locaciones antes mencionadas (e, c1 , , cm ), las cuales quedar an en el sistema de transiciones nal. Como veremos, la locaci on auxiliar ser a eliminada por concatenaci on de transiciones en las diferentes reglas, lo cual nos permitir a aumentar la granularidad del sistema. Al nal de esta secci on presentaremos un ejemplo de derivaci on de transiciones desde la implementaci on de un monitor con se nalamiento autom atico que mostrar a este hecho. Observemos que al realizar una composici on secuencial S1 ; S2 , dentro de cada programa en forma individual, pueden haberse generado transiciones que no se concatenan a la manera que lo hicimos en esta regla. Esto es debido a que dentro de los programas pueden aparecer operaciones await que generen transiciones con locaciones en la variables de condici on c1 , , cm o en la locaci on de entrada e. Por ejemplo, una transici on con locaci on de llegada ci generada en el programa S1 no debe concatenarse con una en el programa S2 que tenga locaci on de salida cj ya que perder amos la informaci on de las transiciones generadas por las operaciones bloqueantes, cuyas reglas veremos m as adelante. Es por ello necesario agregar las siguientes reglas para la composici on secuencial: S1 $ pL, B P, L1 q Seq2 S1 ; S2 $ pL, B P, L1 q si L1

Esta regla signica que en el caso que desde S1 se haya generado una transici on con locaci on de llegada distinta de la locaci on auxiliar (o sea alguna en te, c1 , , cm u), entonces la transici on se preserva. La locaci on de salida puede ser cualquiera, incluso . El caso sim etrico ocurre con S2 , donde se requerir a como condici on lateral que la locaci on de salida de de la transici on generada

5.4. MONITORES COMO SISTEMA DE TRANSICIONES por S2 sea distinta a la locaci on auxiliar: S2 $ pL, B P, L1 q Seq3 S1 ; S2 $ pL, B P, L1 q si L 

165

Uno de los casos base en la gram atica estructural de los programas ser a la asignaci on, la cual derivar a su transici on asociada por el siguiente axioma esquema: v : H $ p, true v : H, q Assign En este caso, las locaciones de entrada y salida de la transici on generada ser an la locaci on auxiliar, las cual ser a eliminada por la primera regla Seq1 . Para las apariciones de sentencias skip, el axioma de generaci on ser a simplemente: skip $ p, true skip, q Skip la cual produce una transici on con la sentencia guardada equivalente. Una sentencia que ser a utilizada como parte de los procedimientos de los monitores ser a la suposici on (ejemplo 1.1, p ag. 9). La misma servir a para indicar precondiciones en los procedimientos, como veremos en los casos de prueba presentados la secci on 5.8. La regla generar a una transici on con la suposici on como guarda de la sentencia skip:

rB s $ p,

skip, q

Assum

Al comienzo de un procedimiento se generar an transiciones con locaci on de salida e ya que esta cola contiene los procesos que intentan invocarlo. Para formalizar la derivaci on de estas transiciones agregaremos la primitiva enter, la cual debe aparecer al comienzo de todos los procedimientos. El axioma sobre esta primitiva ser a simplemente enter $ pe, true skip, q Enter

Notar que eventualmente esta transici on ser a premisa de la regla Seq1 junto con las generadas por el resto del procedimiento. Esto elimina las locaciones de entrada auxiliares. M as adelante veremos que las reglas para return posibilitan tambi en la eliminaci on de las locaciones de salida auxiliares a la nalizaci on de los procedimiento. Para la sentencia de bifurcaci on condicional if tendremos la siguiente regla: Si $ p, B P, L1 q j : 1 j n : Cj Sj y $ p, Ci ^ B

if

P, L1 q

If1

(5.10)

la cual genera una transici on desde Si si su guarda se verica. Hay que tener en cuenta que esta regla se puede aplicar solamente si la locaci on de salida en la transici on de la premisa es la locaci on auxiliar. Esta restricci on posibilita la eventual concatenaci on con transiciones previamente generadas en el cuerpo del programa. Por otra parte, al igual que con las reglas Seq2 y Seq3 , declararemos una regla extra para el caso de transiciones con locaci on de salida

166

CAP ITULO 5. MONITORES

en te, c1 , , cm u generadas en Si desde las operaciones bloqueantes. En este caso las transiciones tambi en ser an preservadas por las reglas: Si $ pL, B P, L1 q j : 1 j n : Cj Sj y $ pL,

if

P, L1 q

If2

si L 

Hasta ahora las reglas presentadas corresponden a sentencias y primitivas que no alteran las colas de espera del monitor. Estas ser an modeladas en nuestro sistema de transiciones. De acuerdo a la especicaci on de monitores con se nalamiento expl cito (secci on 5.1.1) se utilizan las colas w1 , , wm de procesos esperando en operaciones wait y las colas de procesos se nalizados s1 , , sm , ambas asociadas a las variables de condici on c1 , , cm . Para incluirlas en los sistemas de transiciones modelaremos solo su longitud a manera de abstracci on. De esta forma las colas ser an representadas por enteros positivos que ser an incrementados o decrementados seg un se apliquen las operaciones enque o deque respectivamente. Notar que esta abstracci on ya fue utilizada en el cap tulo anterior con los contadores bi , los cuales indicaban la cantidad de procesos esperando en las operaciones bloqueantes P sobre cada sem aforo si . En aquel caso, estas variables estaban incluidas como parte de las implementaciones SBD. En el caso de los monitores las agregaremos de manera expl cita para poder modelar su comportamiento. Tomemos la implementaci on de la operaci on await en (5.7) desplegando la especicaci on de signal en (5.1) (p ag. 154) y reemplazando las operaciones sobre las colas por decrementos e incrementos en sus tama nos (se incrementan las colas de se nalizado y se decrementan las de procesos en espera). Adem as separaremos la parte de la implementaci on correspondiente a la codicaci on signal as hint (nal donde se espera y se ejecuta el bucle) introduci endola en el programa separado waitLoopi : await.Bi .  if Bi skip Bi for pj  1, , m ^ j  iq if wj 0 wj , sj : wj wj  0 skip ; waitLoopi (5.11)

1, sj 1

con waitLoopi .  wait.ci ; do Bi wait.ci od

Notemos que el bucle for es acotado por lo que puede ser desplegado obteni endose la composici on secuencial de m 1 sentencias if (que aparecen dentro de este bucle). Por lo tanto, de manera esquem atica el bucle puede ser escrito

5.4. MONITORES COMO SISTEMA DE TRANSICIONES como el siguiente programa equivalente: if w1 0 w1 , s1 : w1 1, s1 1 w1  0 skip ; . . . if wj 0 wj , sj : wj 1, sj 1 wj  0 skip ; . . . if wm 0 wm , sm : wm 1, sm 1 wm  0 skip

167

pj  iq

o utilizando la notaci on de cuanticaci on generalizada sobre el operador de composici on secuencial:

xp;q j

:1j m^j i : if wj 0 wj , sj : wj

1, sj 1

wj

 0 skip y

De esta manera, hasta la aparici on de waitLoopi , el programa puede ser tratado por las reglas anteriormente denidas. Desplegando la denici on del scheduler en (5.3) sobre la especicaci on de la operaci on wait en (5.2) (p ag. 155) tenemos: wait.ci .  wi .enquepselfq; if |e| 0 nextActive : e.deque |s1 | 0 nextActive : s1 .deque . . . . . . |sm | 0 nextActive : sm .deque ; run.nextActive

En este caso aplicaremos dos tipos de abstracciones a las colas: la ya mencionada, donde las colas s1 , , sm y w1 , , wm son modeladas por su longitud y abstraeremos la cola e elimin andola de la representaci on. Esta u ltima abstracci on no modicar a el comportamiento operacional del sistema de transiciones ya que siempre podr a ingresar un proceso intentando invocar un procedimiento de manera no determinista. Notar que en las implementaciones SBD tampoco se utilizan contadores para procesos bloqueados en el sem aforo de entrada sm . Adem as, se nalaremos la ejecuci on del pr oximo proceso como run.c, con c la variable de condici on donde el proceso espera o la cola de entrada. Con estas

168 modicaciones el anterior programa queda: wait.ci . 

CAP ITULO 5. MONITORES

wi : wi 1; run.e if true s1 0 s1 : s1 1; run.c1 . . . . . . sm 0 ; sm : scm 1; run.cm

Desplegando este programa solo en la primer operaci on wait dentro de waitLoopi tenemos: waitLoopi .  wi : wi 1; if true run.e s1 0 s1 : s1 1; run.c1 . . . . . . sm 0 ; sm : scm 1; run.cm do Bi wait.ci od

Las operaciones run.c denotan el cambio de ejecuci on a otro proceso esperando en la cola c. Dentro del sistema de transiciones, este cambio de ejecuci on de proceso ser a modelado con una transici on saliente de la locaci on c (recordar que las locaciones se identican con las colas). Por lo tanto, del anterior programa puede extraerse la siguiente regla para el caso que despierte un proceso intentando ejecutar un procedimiento por la activaci on de la primer guarda del if : waitLoopi

$ p,

true wi : wi 1, eq

WakeEnter

(5.12)

En el caso que se despierte un proceso por ejecuci on de run.cj las reglas ser an: waitLoopi

$ p,

sj

0 wi , sj : wi 1, sj 1, cj q

WakeWait (5.13)

con j  1, , m. Notar que se a propagado la guarda sj sentencia de asignaci on guardada en la transici on.

0 para conformar la

Las anteriores son las u nicas reglas generadas por los programas waitLoopi antes de bucle do. Desde la aparici on de este bucle el proceso despertar a (por medio de alguna se nalizaci on) intentando vericar su guarda Bi . Para analizar las transiciones generadas desde este punto, desplegaremos solo la operaci on

5.4. MONITORES COMO SISTEMA DE TRANSICIONES wait dentro del bucle: waitLoopi .  wait.ci ; do Bi wi : wi 1; if true run.e s1 0 s1 : s1 1; run.c1 . . . . . . sm 0 ; sm : scm 1; run.cm od

169

En el caso que la condici on Bi sea satisfecha el proceso esperando en el wait inicial despierta. Para modelar este comportamiento daremos la siguiente regla: waitLoopi

$ pci ,

Bi

skip, q

Wake

En el caso que aquella condici on no se satisfaga, el proceso ejecutar a el cuerpo del bucle iniciando la ejecuci on de otro esperando por invocar un procedimiento (cola e) o esperando en una operaci on wait. El primer caso modelar a la ejecuci on de la primer guarda de la sentencia if : waitLoopi

$ pci ,
Bi ^ sj

Bi

wi : wi 1, eq

LoopEnter

y para las otras guardas las reglas ser an:

0 wi , sj : wi 1, sj 1, cj q LoopWait con j  1, , m. Aqu tambi en propagamos la condici on sj 0 para formar la


waitLoopi guarda de la asignaci on guardada dentro de la transici on. Por u ltimo veremos las reglas correspondientes a la terminaci on en la ejecuci on de un procedimiento se nalado con la primitiva return. Tomando la implementaci on de la misma en (5.8) (p ag. 162), desplegando la especicaci on de signal en (5.1) (p ag. 154) y haciendo la abstracci on de colas como enteros positivos, tenemos el siguiente programa: return .  for pj  1, , mq if wj 0 wj , sj : wj wj  0 skip ; return

$ pci ,

1, sj 1

(5.14)

Al igual que con la implementaci on de la operaci on await el bucle for puede ser expandido en una composici on secuencial de m sentencias condicionales, por lo tanto esta parte del programa puede ser tratado por el conjunto de reglas ya denidas. Queda por ver la primitiva return para monitores de se nalamiento expl cito en el lado derecho de la denici on. Para ella desarrollaremos nuevas reglas desplegando su especicaci on en (5.4) (p ag. 155) y realizando la abstracci on

170 sobre las colas: return .  if true s1 0 . . . sm 0

CAP ITULO 5. MONITORES

run.e s1 : s1 1; run.c1 sm : sc 1; run.cm


m

. . .

Las reglas son inducidas por este if nal y son similares a las previamente denidas para el inicio de waitLoopi . Para la primer guarda, donde se libera un proceso nuevo, la regla ser a: return $ p, skip, eq ReturnEnter

y para las guardas siguientes (se libera un proceso esperando en una operaci on wait) tendremos: return $ p, sj

0 sj : sj 1, cj q

ReturnWait

En el ap endice 5.A (p ag. 203) se hace un listado de todas las reglas desarrolladas. Las reglas de generaci on de transiciones ser an aplicadas a todos lo procedimientos del monitor por separado para obtener el conjunto de transiciones . del sistema de transiciones TS  pL, S , , q que lo modela. Si tenemos la implementaci on de un monitor con se nalamiento autom atico de la forma: monitor Nombre monitor procedure op1 pq procedure opn pq S1 end

Sn end

donde las apariciones de las operaciones await son reemplazadas por la implementaci on en (5.11), entonces el conjunto estar a formado por las transiciones que se deriven de los cuerpos Si de los procedimientos: .  t | x D i : 1 i n : Si

$ yu

con el conjunto de sentencias S extra do de estas transiciones. Notemos que los procedimientos se modelan sin ning un tipo de variables locales ni par ametros. Esta es una restricci on impuesta en nuestro trabajo para simplicar el tratamiento del problema. En el caso que los procedimientos tengan este tipo de variables, las mismas no pueden ser modeladas estrictamente por nuestros sistemas de transiciones ya que la abstracci on de las colas de procesos como contadores hace que aquellos ejecutando un mismo procedimiento sean indistinguibles entre s (no se modela su pila ). Este tratamiento produce sistemas de transiciones de tama no tratable y sucientemente expresivos para poder ser utilizado sobre una gran cantidad de problemas. Sin embargo, problemas que impliquen el uso de variables locales, como por ejemplo Disk schedulling [And91, p ag. 295] no pueden ser abordados con este modelado. El u nico camino para tratar este problema sin p erdida de informaci on es incluir la pila

5.4. MONITORES COMO SISTEMA DE TRANSICIONES

171

de variables locales de cada proceso en el sistema de transiciones. Necesariamente esto rompe con la abstracci on de las colas de procesos antes mencionada. De todas maneras nuestro trabajo puede ser extendido incorporando sentencias havoc [DS90] sobre las variables locales como se indica en [BL05]. Cabe aclarar adem as, que los monitores NPRAS a implementar (ver secci on 5.1.2) no admiten variables locales en las condiciones, pero las mismas pueden depender de este tipo de variables. Esto asegura su equivalencia expresiva con los monitores en general [BFC95]. A continuaci on veremos como se derivan las transiciones para el monitor que resuelve el problema cl asico de productores y consumidores. Ejemplo 5.3 (Transiciones del monitor Productor/Consumidor) En el ejemplo 5.2 (p ag. 159) vimos la soluci on de este problema con un monitor de se nalamiento autom atico. Eliminando el acceso al buer y realizando el mismo cambio de coordenadas que en el ejemplo 4.1 (p ag. 111) obtenemos el monitor en el programa 5.4. Programa 5.4 Monitor Productor/Consumidor se nalamiento autom atico

monitor Productor Consumidor var n : int; .  n0^N procedure Prod() await.pn N q; n : n 1 end

0
procedure Cons() await.pn 0q; n : n 1 end

Antes de comenzar a generar las transiciones implementaremos el monitor con uno de se nalamiento expl cito. Nos concentraremos en las transiciones derivadas a partir del procedimiento productor, el cual tiene la implementaci on dada en el programa 5.5 (p ag. 172) donde se nalamos las implementaciones de la operaci on await.pn N q y la primitiva return del procedimiento productor en el programa 5.4. Adem as hemos agregado la primitiva enter y representado con waitLoop1 el programa: . waitLoop1  wait.c1 ; do n N wait.c1 od Notar que desplegamos los bucles for donde se realizan las se nalizaciones, tanto en la implementaci on de la operaci on await como en la primitiva return al nal del procedimiento. Comencemos entonces a derivar todas las transiciones posible a partir de las reglas desarrolladas en esta secci on. Al comienzo del programa anterior aparece la primitiva enter, la cual, por aplicaci on de la regla Enter (p ag. 165) se deriva la transici on: (5.15) pe, true skip, q , donde la locaci on auxiliar ser a eliminada m as adelante. La sentencia siguiente es el if externo en la implementaci on del await. En su primera rama con condici on n N aparece la sentencia skip. Desde la misma

172 Programa 5.5 procedure Prod() enter;

CAP ITULO 5. MONITORES Implementaci on del procedimiento productor

if n N skip n N if w2 0 w2 , s2 : w2 1, s2 1 w2  0 skip ; waitLoop1 ; if w1 0 w1  0 ; if w2 0 w2  0 ; return

await.pn N q

n : n 1;

w1 , s1 : w1 1, s1 1 skip w2 , s2 : w2 1, s2 1 skip
return

end

se puede derivar la siguiente transici on por aplicaci on de la regla Skip :

p, p,

true skip, q ,

mediante la cual, por aplicaci on de la regla If1 y teni endola como premisa, se deriva la siguiente transici on: nN

donde hemos simplicado la guarda resultado de la regla, por n N . Esta u ltima transici on puede ser concatenada con la primera (generada por la regla Enter ) aplicando la regla Seq1 (p ag. 164), obteni endose la siguiente:

skip, q , n N ^ true,

pe,

true ^ n N

skip; skip, q skip, q


.

Simplicando la guardas y la sentencia skip redundante obtenemos:

pe,

nN

(5.16)

Esta transici on sera concatenada con aquellas que se deriven desde la sentencia de asignaci on n : n 1 despu es de la implementaci on del await. A continuaci on veremos las transiciones generadas dentro de la segunda rama de esta sentencia if (con condici on n N ). En la misma aparece otra sentencia if interna donde se produce la se nalizaci on (representada por las modicaciones en las colas). Por aplicaci on de las reglas Assign y Skip (en las ramas de este u ltimo if ) se obtienen dos transiciones que ser an premisas de la

5.4. MONITORES COMO SISTEMA DE TRANSICIONES regla If1 , obteni endose las siguientes que modelan este if interno:

173

p, p,

w2 w2

0 w2 , s2 : w2 1, s2 1, q  0 skip, q .

Despu es de esta sentencia condicional aparece el programa waitLoop1 . Aplicando las reglas WakeEnter y WakeWait (p ag. 168) obtenemos las tres transiciones: p, true w1 : w1 1, eq , p, s1 0 w1 , s1 : w1 1, s1 1, c1 q , p, s2 0 w1 , s2 : w1 1, s2 1, c2 q . Cada una de ellas se pueden concatenar con las anteriores (derivadas desde el if interno) utiliz andolas como premisas de la regla Seq1 . Se obtienen as seis nuevas transiciones:

p, p, p, p, p, p,

0 w2 , s2 : w2 1, s2 1; w1 : w1 1, eq , 0 ^ s1 0 w2 , s2 : w2 1, s2 1; w1 , s1 : w1 1, s1 1, c1 q , 0 ^ s2 1 w2 , s2 : w2 1, s2 1; w1 , s2 : w1 1, s2 1, c2 q w2  0 w1 : w1 1, eq , w2  0 ^ s1 0 w1 , s1 : w1 1, s1 1, c1 q , w2  0 ^ s2 0 w1 , s2 : w1 1, s2 1, c2 q .
w2 w2 w2

Las primeras tres transiciones corresponden a las secciones donde se se naliza a un proceso consumidor y las restantes donde no hay procesos de este tipo esperando (por lo que las se nalizaciones se pierden). Notar que se ha realizado la propagaci on, mediante el transformador wlp, de las guardas s1 0 y s2 0 en las transiciones generadas (segunda, tercera, quinta y sexta transici on). Adem as hemos simplicado las guardas de las transiciones resultado como lo hicimos anteriormente. Notemos tambi en que en la guarda de la tercera transici on aparece el termino conjuntivo s2 1. El mismo puede ser eliminado ya que la longitud de las colas es siempre positivo para cualquier estado. Adem as, en las asignaciones del comando guardado de esta transici on, la variable s2 es incrementada y decrementada por lo que puede ser eliminada. Realizando estas simplicaciones y convirtiendo las asignaciones secuenciales en m ultiples podemos escribir las transiciones anteriores de forma m as compacta:

p, p, p, p, p, p,

0 w2 , s2 , w1 : w2 1, s2 1, w1 1, eq , 0 ^ s1 0 w2 , s2 , w1 , s1 : w2 1, s2 1, w1 1, s1 1, c1 q 0 w2 , w1 : w2 1, s2 1, c2 q , w2  0 w1 : w1 1, eq , w2  0 ^ s1 0 w1 , s1 : w1 1, s1 1, c1 q , w2  0 ^ s2 0 w1 , s2 : w1 1, s2 1, c2 q .
w2 w2 w2

Como veremos m as adelante (secci on 5.6), estas simplicaciones son importantes ya que reducen el tiempo de c alculo del m etodo propuesto en este trabajo. Cada una de estas u ltimas transiciones son generadas dentro de la segunda rama del if externo que implementa la operaci on await.pn N q. Aplicando

174

CAP ITULO 5. MONITORES

la regla If1 y concatenando los resultados con la transici on generada por la primitiva enter en (5.15) obtenemos las siguientes transiciones nales:

pe, pe, pe, pe, pe,

n N ^ w2 0 w2 , s2 , w1 : w2 1, s2 1, w1 1, eq , n N ^ w2 0 ^ s1 0 w2 , s2 , w1 , s1 : w2 1, s2 1, w1 1, s1 1, c1 q , pe, n N ^ w2 0 w2 , w1 : w2 1, s2 1, c2 q , nN nN nN

^ w2  0 w1 : w1 1, eq , ^ w2  0 ^ s1 0 w1 , s1 : w1 1, s1 1, c1 q ^ w2  0 ^ s2 0 w1 , s2 : w1 1, s2 1, c2 q

(5.17)

, .

Estas transiciones aparecer an en el conjunto de transiciones del sistema . TS  pL, S , , q que modela el monitor. Esto es debido a que son preservadas por las composiciones secuenciales subsiguientes por la aplicaci on exclusiva de las reglas Seq2 y Seq3 (son las u nicas reglas que admiten como premisas transiciones con locaciones de entrada y salida distintas de la auxiliar). Las mismas ser an ejecutadas por procesos que invocaron el procedimiento productor pero quedaron bloqueados por no cumplirse la condici on n N . En estos caso las transiciones nalizan en locaciones que modelan la activaci on de procesos esperando en las variables de condici on c1 , c2 (productor o consumidor respectivamente) o intentando invocar alg un procedimiento desde la locaci on e. Dentro de esta rama del if inicial se generan otras transiciones con locaci on de salida c1 denotando procesos productores que, esperando en esta variable de condici on, fueron se nalizados y recomenzaron su ejecuci on. Dichas transiciones son generadas por las reglas Wake , LoopEnter y LoopWait (p ag 169):

pc1 , pc1 , pc1 , pc1 ,

n N skip, q , n N w1 : w1 1, eq , n N ^ s1 0 w1 , s1 : w1 1, s1 1, c1 q , n N ^ s2 0 w1 , s2 : w1 1, s2 1, c2 q .

(5.18)

Por aplicaci on de la regla If2 (es la u nica regla para el if que admite locaciones de salida distintas de la auxiliar) todas estas transiciones ser an preservadas. La primera ser a concatenada con las generadas por el resto del programa (desde la asignaci on n : n 1 en adelante) ya que posee como locaci on de llegada la auxiliar. Las tres u ltimas formar an parte del conjunto de transiciones nal ya que ser an preservadas por la composici on secuencial (gracias a las reglas Seq2 y Seq3 ). Las mismas denotan procesos productores que, esperando en la variable de condici on c1 , recomenzaron su ejecuci on sin exito ya que la condici on n N no se satiszo. Estas ejecuciones derivan del bucle do en la implementaci on de la operaci on await (p ag. 162) resultado de la aplicaci on de la estrategia signal as hint. Como ya mencionamos, la primer transici on anterior y la transici on en (5.16) (p ag. 172) (derivada desde la secci on que contiene la rama skip del if inicial) ser an concatenadas con las generadas por el resto del programa. La pr oxima sentencia es la asignaci on n : n 1, mediante la cual, aplicando la regla Assign y

5.4. MONITORES COMO SISTEMA DE TRANSICIONES

175

concaten andola con aquellas por la regla Seq1 , se obtienen las siguientes transiciones: pe, n N n : n 1, q , (5.19) pc1 , n N n : n 1, q . Las mismas ser an concatenadas, mediante la u ltima regla, con las generadas en la parte de implementaci on del return nal. En esta parte del procedimiento se generan 12 transiciones (2 por cada una de las sentencias if multiplicadas por 3 derivadas de la primitiva return) las cuales al concatenarlas con las anteriores suman un total de 24. Junto con las 9 nales ya desarrolladas (6 en (5.17) m as 3 en (5.18)) dan un total de 33 transiciones en generadas a partir de procedimiento productor. La derivaci on de transiciones sobre el procedimiento consumidor es an aloga ya que el mismo es sim etrico al desarrollado. De tal . manera, el conjunto de transiciones del sistema TS  pL, S , , q que modela el problema tendr a 66 transiciones. En el ap endice 5.B (p ag. 204) se muestran todas las transiciones obtenidas. Como puede notarse, el proceso de generaci on manual de transiciones a partir de un monitor dado resulta extenso y engorroso (en los problemas analizados en la secci on 5.8 se llegan a 740 transiciones). Es por ello que parte del prototipo de software que implementa nuestro m etodo consiste en la generaci on mec anica de las mismas, por aplicaci on de las reglas desarrolladas en esta secci on. Las transiciones mostradas en aquel ap endice fueron obtenidas por este prototipo.l Como ya mencionamos, a cada guarda de las operaciones await se le asocia una variable de condici on en la implementaci on del monitor. En el sistema de transiciones que lo modela, cada una estar a asociada a una locaci on. Adem as tendremos una locaci on extra e para los procesos intentando invocar un procedimiento. Por lo tanto, si en el monitor aparecen m operaciones await, el conjunto de locaciones ser a: . L  teu Y tci | 1 i muu donde ci son las variables de condici on. El conjunto de estados iniciales del monitor debe ser dado de forma expl cita al momento de denir el problema como lo hicimos en el programa 5.3 (p ag. 160). A partir del mismo y las condiciones iniciales de las colas (vac as al comienzo de la ejecuci on) podemos construir el conjunto de conguraciones iniciales: . .e  ^ x @ j : 1 j m : wj  0 ^ sj  0 y , . .ci  false si 1 i m . Para nalizar esta secci on, veremos que el sistema de transiciones que modela la implementaci on del monitor con se nalamiento autom atico preserva el invariante del mismo (dado en (5.6), p ag. 160). Teorema 5.4 Sea un monitor con se nalamiento autom atico que verica el invariante I a partir de las condiciones de prueba

ttrueu enter tI u tI u await.Bi tI ^ Bi u tI u return tfalseu .

176

CAP ITULO 5. MONITORES

. Sea TS  pL, S , , q el sistema de transiciones generado a partir de la implementaci on del monitor. Entonces si I , el invariante I es preservado en este sistema: . TS | l con .l  I (l P L) . l El teorema muestra que cualquier propiedad que se deduzca sobre monitor se vericar a tambi en en el sistema de transiciones generado, con lo cual se demuestra la correcci on de nuestro sistema de reglas. La demostraci on del mismo se encuentra en el ap endice 5.C (p ag. 208). Una vez obtenido el sistema de transiciones como se muestra en esta secci on, podemos emplear las t ecnicas de generaci on de invariantes desarrolladas en el cap tulo 2 y utilizadas en el cap tulo anterior. La adaptaci on de las mismas al problema actual ser a desarrollada en la pr oxima secci on.

5.5

Eliminaci on de se nalizaciones

En la secci on 5.1.1 mostramos que utilizando el estilo de codicaci on signal as hint suele suceder que algunas de las operaciones signal pueden ser eliminadas. Este estilo de codicaci on aparece en la implementaci on de monitores con se nalamiento autom atico dada en la secci on 5.3. En la secci on actual comenzaremos a desarrollar el m etodo para eliminar estas se nalizaciones superuas. El m etodo es an alogo al desarrollado en el cap tulo anterior (secci on 4.5): a partir de la modelizaci on de la implementaci on del monitor de se nalamiento autom atico con un sistema de transiciones (secci on anterior) utilizaremos la misma t ecnica de propagaci on hacia atr as (secci on 2.3.2) con el n de probar de manera autom atica la factibilidad de eliminaci on de se nalizaciones superuas. De esta forma, el m etodo utilizado en este cap tulo es b asicamente el esquematizado en el programa 4.15 (p ag. 137) del cap tulo anterior, adapt andolo a las particularidades propias del nuevo problema a resolver. En este nuevo contexto necesitaremos denir una nueva caracterizaci on del invariante candidato P y alguna clase de reemplazo para el invariante inicial SBD , el cual fue de suma importancia para la aplicaci on factible del m etodo. Para esta u ltima tarea utilizaremos la generaci on autom atica de invariantes lineales presentada en el cap tulo 3. A continuaci on se detallan los procedimiento para construir ambos predicados.

5.5.1

Invariante candidato

En nuestra utilizaci on del m etodo de propagaci on hacia atr as, el invariante candidato debe denotar una propiedad sobre el programa cuya invariancia garantice la imposibilidad de ejecuci on de una operaci on signal que aparezca en la implementaci on del monitor. En las implementaciones, estas operaciones pueden aparecer solo en dos lugares: en la implementaci on de la operaci on await dada en (5.11) (p ag. 166), y dentro de la implementaci on de la primitiva return en (5.14) (p ag. 169). En ambas ocasiones las distintas operaci on signal aparecen siempre dentro del bucle for en el caso que la cola de espera correspondiente no est e vac a. Adem as fueron reemplazas por su accionar sobre las colas (decremento e incremento de las colas de procesos esperando y se nalizados respectivamente).

DE SENALIZACIONES 5.5. ELIMINACION

177

Supongamos que en la parte de la implementaci on de una operaci on await.Bi dentro de un procedimiento se quiere vericar la posibilidad de eliminaci on de una se nalizaci on signal.ck (k  i) dentro de aquel bucle. Una posibilidad es demostrar que antes de la ejecuci on del bucle, sea invariante que la cola wk es vac a (wk  0). En este caso la sentencia condicional dentro del bucle elegir a la segunda opci on, ejecutando siempre skip. En la siguiente implementaci on de la operaci on await se anot o esta condici on: await.Bi .  if Bi skip Bi twk  0?u for pj  1, , m ^ j  iq if wj 0 wj , sj : wj wj  0 skip ; waitLoopi

1, sj 1

Para poder eliminar la se nalizaci on signal.ck en la anterior implementaci on esta condici on es demasiado fuerte. Una segunda posibilidad es que siempre que se se nalice a procesos esperando en la cola wk , si la condici on Bk se verica entonces haya procesos se nalizados con anterioridad (sk 0). Esto quiere decir que no es necesario ejecutar la se nalizaci on, ya que la posibilidad de activar procesos esperando en la variable de condici on ya esta garantizada. Por lo tanto, si antes del bucle for se verica de manera invariante Bk sk 0 entonces la se nalizaci on es superua. Junto con el invariante candidato anterior incluiremos esta segunda opci on en el siguiente programa: await.Bi .  if Bi skip Bi twk  0 _ Bk sk 0?u for pj  1, , m ^ j  iq if wj 0 wj , sj : wj 1, sj wj  0 skip ; waitLoopi

De esta forma, propagando hacia atr as con el transformador wlp el predicado wk  0 _ Bk sk 0 dentro del sistema de transiciones, se encontrar a el predicado P cuya invariancia garantiza la posibilidad de eliminaci on de la operaci on signal. Esta propagaci on para encontrar el invariante candidato es an aloga a la explicada en el cap tulo anterior (secci on 4.5). El u nico problema que surge en este nuevo contexto es que el sistema de transiciones actual es derivado a partir de las reglas desarrolladas en la secci on anterior sobre cada problema de monitores en particular y no en la forma de una enumeraci on general como se hizo con las implementaciones SBD. Con el n de sistematizar la propagaci on de la condici on de eliminaci on de una se nalizaci on, dejaremos la aparici on particular de await.Bi (donde aparece

178

CAP ITULO 5. MONITORES

la se nalizaci on a eliminar) tal cual se encuentra en el monitor con se nalamiento autom atico (sin implementar) y agregaremos las siguientes reglas espec cas para esta operaci on: await.Bi await.Bi

$ p, $ p,

Bi skip, q Bi skip, c q .

(5.20)

La primer regla modela el caso donde la condici on de espera se satisface (el proceso contin ua con su ejecuci on). La segunda regla crea una locaci on nueva antes de la ejecuci on del bucle for la cual ser a el punto de partida para propagar la condici on wk  0 _ Bk sk 0. Con las nuevas reglas incluidas se genera un conjunto de transiciones 1 temporal (solo para encontrar el invariante candidato P ) y se propaga la condici on sobre todas las transiciones con locaci on de llegada c , obteni endose as el invariante candidato: P.l .  x s : 1 .l.s.c : wlp.s.pwk

 0 _ Bk sk 0q y ,

lPL .

(5.21)

La demostraci on de invariancia de este predicado ser a condici on suciente para la eliminaci on de una se nalizaci on signal.ck (con k P t1, , mu tiu) en la implementaci on de la operaci on await.Bi . Resumiendo, el m etodo de eliminaci on de se nalizaciones dentro de la implementaci on de una operaci on await.Bi en particular, comenzar a generando un nuevo sistema de transiciones (dejando sin implementar la operaci on y agregando las reglas anteriores). Eligiendo una se nalizaci on signal.ck dentro de esta operaci on, se propagar a hacia atr as, sobre el nuevo sistema de transiciones, el predicado wk  0 _ Bk sk 0, como se indica en la ecuaci on anterior. Si el calculo de punto jo converge a un predicado m as d ebil que el conjunto de conguraciones iniciales , entonces la se nalizaci on puede ser eliminada. Este proceso es repetido para cada implementaci on de una operaci on await.Bi (generando un sistema de transiciones nuevo para cada una) y sobre cada se nalizaci on contenida en ella. A continuaci on veremos un ejemplo de este proceso. Ejemplo 5.5 (Invariante candidato en await) En el ejemplo 5.3 (p ag. 171) vimos como generar el conjunto de transiciones a partir la implementaci on del monitor Productor/Consumidor. En aquel monitor aparecen solo dos operaciones await (una en el productor y otra en el consumidor) cuyas implementaciones contienen un sola se nalizaci on (a procesos ejecutando distintos procedimientos). En este ejemplo obtendremos el invariante candidato correspondiente a la se nalizaci on que se produce dentro de la operaci on en el procedimiento productor. Para el caso en cuesti on, la condici on para su eliminaci on ser a: w2

 0 _ pn 0 s2 0q

lo cual signica que la se nalizaci on al consumidor puede eliminarse si, de manera invariante, no hay procesos esperando o si la condici on de consumo se cumple entonces alg un proceso consumidor ya fue se nalizado. Como primera medida, reescribiremos el procedimiento productor sin implementar su operaci on await.n N e implementando solo la primitiva return (programa 5.6, p ag. 179).

DE SENALIZACIONES 5.5. ELIMINACION Programa 5.6 procedure Prod() enter; await.pn N q; n : n 1; if w1 0 w1  0 ; if w2 0 w2  0 ; return

179

Implementaci on del procedimiento productor

w1 , s1 : w1 1, s1 1 skip w2 , s2 : w2 1, s2 1 skip
return

end Antes de generar el nuevo sistema de transiciones 1 , agregaremos las dos reglas nuevas, esquematizadas en (5.20), correspondientes a esta operaci on: await.pn N q

$ p, await.pn N q $ p,

nN

skip, q n N skip, c q

Con estas nuevas reglas generaremos las transiciones de la misma forma que en el ejemplo 5.3. La sentencia enter genera la misma transici on que en ejemplo anterior ((5.15) en p ag. 171), la cual puede ser concatenada (por la regla Seq1 , p ag. 164) con las generadas por las dos reglas nuevas:

pe, pe,

n N skip, q , n N skip, c q .

La primer transici on ser a concatenada con las generadas desde la asignaci on n : n 1, de igual forma que en el ejemplo anterior. La segunda formar a parte del sistema de transiciones 1 (se preserva por aplicaci on de la regla Seq2 ). Esta ser a la u nica con locaci on de llegada c ya que la regla agregada que la genera solo puede aplicarse a esta parte del procedimiento. Por lo tanto, seg un la ecuaci on (5.21), el invariante candidato ser a: .  x s : 1 .e.s.c : wlp.s.pw2  0 _ pn 0 s2 0qq y  wlp.p n N skipq.pw2  0 _ pn 0 s2 0qq  n N pw2  0 _ pn 0 s2 0qq . P.c1  true . P.c2  true P.e

Este resultado en la locaci on de entrada e indica que si de manera invariante cada vez que se invoca un procedimiento del monitor, si la condici on de producci on no se cumple, entonces o no hay procesos consumidores esperando o si la condici on de consumo se cumple entonces ya se se naliz o con anterioridad. La invariancia implica que si un proceso invoca el procedimiento productor sin cumplir su condici on, entonces no necesita se nalizar un consumidor. l

180

CAP ITULO 5. MONITORES

Para comprobar la posibilidad de eliminaci on de las se nalizaciones que aparecen en las implementaci on de la primitiva return (5.14) se procede de la misma manera. La condici on para eliminar una operaci on signal.ck en la implementaci on de la primitiva (al nal de un procedimiento) es id entica a la vista anteriormente por los mismos argumentos: . return1  twk  0 _ Bk sk 0?u for pj  1, , mq if wj 0 wj , sj : wj 1, sj 1 wj  0 skip ; return donde hemos primado esta aparici on particular de la primitiva return (dentro de la cual se intenta eliminar la se nalizaci on) para diferenciarla de las que aparecen en otros procedimientos. De forma an aloga que con la operaci on await, dejamos sin implementar esta primitiva en particular e incluimos solo una nueva reglas para su aparici on en la nalizaci on de un procedimiento: return1

$ p, skip, c q

(5.22)

En este caso solo necesitamos una regla extra ya que la condici on a vericar se encuentra al principio de la implementaci on y no dentro de una sentencia condicional como en el caso anterior. Generando el nuevo conjunto de transiciones, si queremos probar la posibilidad de eliminaci on de una se nalizaci on signal.ck (k P t1, , mu) dentro de la implementaci on de esta primitiva, propagamos la anterior condici on sobre la transiciones cuya locaci on de llegada es c de la misma forma que se muestra en (5.21). Ejemplo 5.6 (Invariante candidato en return) En este ejemplo obtendremos un invariante candidato para la eliminaci on de una se nalizaci on en la implementaci on de la primitiva return en el procedimiento productor. El programa con esta primitiva sin implementar (se nalada con return1 ) ser a: Programa 5.7 procedure Prod() enter; Implementaci on del procedimiento productor

if n N skip n N if w2 0 w2 , s2 : w2 1, s2 1 w2  0 skip ; waitLoop1 ;

await.pn N q

n : n 1; return1 ; end

DE SENALIZACIONES 5.5. ELIMINACION

181

Para generar el conjunto de transiciones 1 agregaremos la regla (5.22). La misma se utiliza solo al nal del programa y es la u nica que tiene como locaci on de llegada a c generando la transici on:

p, skip, c q

Esta ser a concatenada con las generadas desde el comienzo del programa hasta la implementaci on de la operaci on await.pn N q y posean locaci on de llegada auxiliar (por aplicaci on de la regla Seq1 ), las cuales ya fueron generadas en el ejemplo 5.3 (p ag. 171) en (5.19):

pe, pc1 ,

n N n : n 1, q , n N n : n 1, q .

las cuales ser an las u nicas pertenecientes a 1 con locaci on de llegada c , por lo que contribuir an al c alculo del invariante candidato. En el caso que intentemos eliminar la se nalizaci on a un productor desde la implementaci on de esta primitiva return el invariante candidato ser a: P.e .  x s : 1 .e.s.c : wlp.s.pw1  0 _ pn N s1 0qq y  wlp.p n N n : n 1q.pw1  0 _ pn N s1 0qq  n N pw1  0 _ pn 1 N s1 0qq  n N 2 pw1  0 _ s1 0q . P.c1  x s : 1 .c1 .s.c : wlp.s.pw1  0 _ pn N s1 0qq y  wlp.p n N n : n 1q.pw1  0 _ pn N s1 0qq  n N 2 pw1  0 _ s1 0q . P.c2  true .

Por aplicaci on de la regla Seq1 estas u ltimas con la anterior generan las transiciones: pe, n N n : n 1, c q , q , pc1 , n N n : n 1, c

El invariante candidato para eliminar la otra se nalizaci on (a un consumidor) se propaga de la misma forma la condici on w2  0 _ pn 0 s2 0q: P.e .  x s : 1 .e.s.c : wlp.s.pw2  0 _ pn 0 s2 0qq y  wlp.p n N n : n 1q.pw2  0 _ pn 0 s2 0qq  n N pw2  0 _ pn 1 0 s2 0qq . P.c1  x s : 1 .c1 .s.c : wlp.s.pw2  0 _ pn 0 s2 0qq y  wlp.p n N n : n 1q.pw2  0 _ pn 0 s2 0qq  n N pw2  0 _ pn 1 0 s2 0qq . P.c2  true .

Notar que hemos utilizado el mismo sistema de transiciones ambos invariantes candidatos.

para generar

182

CAP ITULO 5. MONITORES

5.5.2

Invariante inicial

En el cap tulo anterior la utilizaci on del invariante inicial SBD fue necesario para lograr la convergencia del m etodo de propagaci on hacia atr as. El mismo fue utilizado como suposici on de las pruebas de las implicaciones utilizadas en el m etodo y para simplicar los invariantes candidatos intermedios. En todos los casos de prueba se conrm o que sin su utilizaci on el m etodo no puede decidir la invariancia del invariante candidato. En el contexto actual de implementaci on de monitores, el espacio de estados y los sistemas de transiciones resultantes son de mayor tama no3 , comparando las modelizaciones para los mismos problemas. El aumento en el tama no del espacio de estados se debe a la inclusi on de m as contadores auxiliares en la modelizaci on. En el caso de implementaciones SBD solo utilizamos un contador bi por cada sem aforo si (distinto al neutral sm ). En el caso de monitores, cada variable de condici on ci tiene asociada dos contadores, uno para el tama no de la cola de procesos en espera wi y otro para el tama no de la cola de se nalizados si . Esto duplica la cantidad de variables auxiliares y hace m as complejo el comportamiento operacional del sistema dicultando su an alisis. Por otro lado, al modelar los mismos problemas, la cantidad de transiciones aumenta dr asticamente. Esto fen omeno puede ser comprobado analizando las implementaciones (5.11) (p ag. 166) y (5.14) (p ag. 169) de las cuales se derivan las transiciones (por aplicaci on de las reglas all desarrolladas). En ambas implementaciones el bucle for se despliega en m 1 y m composiciones secuenciales de sentencias condicionales con dos guardas. Aplicando las reglas Seq1 (5.9) e If1 (5.10) (p ag. 164 y 165) se obtienen del orden de 2m transiciones tanto para cada aparici on de operaciones await como primitivas return al nal de cada procedimiento. Este crecimiento exponencial en la cantidad de transiciones generadas es resultado del comportamiento operacional de los monitores no bloqueantes (NPNB) donde un se nalamiento no implica la ejecuci on inmediata del proceso se nalizado: las se nalizaciones modeladas son realizadas dentro del bucle for de forma independiente al pr oximo proceso activo que comience la ejecuci on. Justamente, este comportamiento hace la diferencia con los sistemas de transiciones generados desde implementaciones SBD. All , una operaci on V (an aloga a una se nalizaci on) es seguida por una operaci on P sobre el mismo sem aforo y en el nuevo proceso activo como indica la regla del domin o (p ag. 119). Notar adem as, que para modelar este nuevo comportamiento fue necesario agregar los dos contadores produciendo en consecuencia, como se menciona anteriormente, el aumento en el tama no del espacio de estados. El no determinismo generado por este tipo de monitor produce tambi en mayor n umero de transiciones en el caso que una guarda de una operaci on await no se cumpla. En este caso, por aplicaci on de las regla WakeEnter (5.12) y WakeWait (5.13), se puede despertar cualquier proceso entrante o esperando por una condici on, a diferencia de las implementaciones SBD donde solo se despierta un proceso entrante. Por lo dicho anteriormente, es clara la necesidad de poder contar con un invariante inicial para simplicar el c alculo del punto jo. A diferencia de nuestro trabajo anterior, no contamos a priori con un invariante del tipo SBD producido de forma directa por la implementaci on del monitor. Para obtenerlo utilizamos
3 Los detalles de este fen omeno ser an mostrados en la secci on 5.8 donde se comparan estos tama nos para los problemas de Productor/Consumidor y para Lectores/Escritores.

5.6. MEJORAS DEL METODO

183

la t ecnica de interpretaci on abstracta desarrollada en el cap tulo 3: a partir del . sistema de transiciones TS  pL, S , , q dado en la secci on 5.4 obtenemos uno . abstracto TS7  pL, S 7 , 7 , 7 q como se indica en la secci on 3.3.5 (p ag. 99) y generamos un invariante realizando propagaci on hacia adelante desde el conjunto de conguraciones iniciales abstracto, como se indica en aquel cap tulo. Sea IPOL el invariante (concretizado) generado de esta forma. Deniremos entonces el invariante inicial como: . MON .l  IPOL .l ^ x @ j : 1 j

m:

wj

0 ^ sj 0 y

(5.23)

con l P te, c1 , , cm u. Notar que agregamos al invariante lineal las condiciones sobre las longitudes de las colas de procesos (son siempre positivas). De esta manera, el m etodo de propagaci on hacia atr as en el programa 4.15 (p ag. 137) se modica para utilizar este invariante: Programa 5.8 Propagaci on hacia atr as con simplicaci on

es invariante ( P , , MON : PredL ; : TranL,S ) : Bool B ,P :xX simplicar. MON .pP X WLP. .X qy; Bk : True; do p p Bk qq ^ pMON $ Bk B ,P .Bk q MON $ Bk : B ,P .Bk od; return MON $ Bk

donde el par ametro P (invariante candidato) es obtenido como se indica en la secci on anterior.

5.6

Mejoras del m etodo

Con el n de agilizar el c alculo del punto jo se agregaron algunas mejoras al m etodo de propagaci on hacia atr as. Las estrategias de simplicaci on de f ormulas descriptas en el cap tulo anterior (secci on 4.6.4) se reutilizaron tal cual fueron descriptas en aquel trabajo, con el agregado que tambi en fueron empleadas para simplicar el sistema de transiciones: toda transici on pl, B S, l1 q P es reemplazada por

pl,

simplicar1 .p MON .l q.B

S, l1 q ,

donde la funci on simplicar1 es la aplicaci on puntual de la anterior a solo un elemento de Pred. La estrategia fue aplicada en el ejemplo 5.3 (p ag. 171) donde adem as se transformaron las asignaciones secuenciales en los comandos guardados de las transiciones por asignaciones m ultiples y se eliminaron las asignaciones superuas (como se indica en [BAW98, teoremas 5.3 y 5.4]). Todas estas transformaciones fueron aplicadas a nuestro m etodo. En el cap tulo anterior se elaboraron tambi en estrategias para la eliminaci on de transiciones (secci on 4.6.2). En el problema actual no es posible enumerar a priori estas eliminaciones de manera general como se hizo en aquella ocasi on,

184

CAP ITULO 5. MONITORES

debido a la falta de estructura sint actica regular, como se menciona en la secci on 5.4. Es por ello que para cada problema en particular se utiliz o tambi en el invariante para eliminar transiciones. Tomando la transici o n anterior, si MON para todo estado denido por le invariante la guarda anterior no se satisface:

MON

.l

B ,

entonces la transici on puede ser eliminada. La demostraci on de esta implicaci on fue realizada utilizando los demostradores externos de la misma forma que para las implicaciones en el c alculo del punto jo. Esta u ltima estrategia reduce la cantidad de transiciones solo si existen transiciones superuas en el sistema generado inicialmente. Otra mejora en el mismo sentido, fue la de eliminar de forma progresiva las reglas de generaci on que contienen las se nalizaciones probadas superuas. Esto es, para cada se nalizaci on dentro de la implementaci on del monitor (en las implementaciones de las operaciones await y las primitivas return), si se demuestra que es superua, entonces se la elimina del rango del bucle for en (5.11) y (5.14) (p ag 166 y 169). A partir de esta modicaci on en la implementaci on se genera un nuevo sistema de transiciones. El proceso es aplicado cada ves que se pruebe la eliminaci on de una se nalizaci on. De la misma manera que con las transiciones, el invariante en fue MON tambi renado utilizando los resultados de etapas anteriores en el proceso global de b usqueda de se nalizaciones superuas. Como ya se nalamos en el programa 5.8, se utiliz o el invariante inicial tulo anterior (secMON de igual forma que en el cap ci on 4.6) pero fortaleci endolo de manera incremental: para cada se nalizaci on a eliminar dentro de los procedimientos del monitor, si el programa 5.8 converge a un invariante (se puede eliminar la se nalizaci on), entonces ser a utilizado para fortalece on, en Bk se almacena MON . Si el programa termina en esta situaci este invariante y a partir del mismo se reemplaza MON por MON X Bk , el cual ser a utilizado en las pruebas de eliminaci on sucesivas. Esto permite aumentar las suposiciones en las pruebas de las implicaciones de aquel programa, disminuyendo el crecimiento de los predicados intermedios y agilizando los c alculos de puntos jos futuros. Todas estas mejoras fueron agregadas en la implementaci on del m etodo, el cual ser a descripto en la secci on siguiente.

5.7

Implementaci on

Con el n de probar el m etodo propuesto sobre distintos problemas, se desarrollo un prototipo de software que implementa un monitor con se nalamiento autom atico con uno de se nalamiento expl cito, eliminando la se nalizaciones innecesarias. El software reutiliza gran parte del desarrollado para el trabajo anterior, principalmente el programa de c alculo de punto jo y los m etodos de pruebas y simplicaciones utilizando los probadores externos y las t acticas propias. El mismo fue tambi en escrito el lenguaje ML, en su implementaci on Standard ML of New Jersey [Sta06], utilizando como procesos externos los probadores de teoremas CVC3 e Isabelle/HOL. Resumiendo, el prototipo de software implementa las siguientes etapas: Inicializaci on. A partir de un monitor con se nalamiento autom atico se procede a ejecutar los siguientes pasos:

5.7. IMPLEMENTACION

185

1. Se genera el sistema de transiciones inicial por aplicaci on de las reglas desarrolladas en la secci on 5.4. En este paso tambi en se transforman las asignaciones secuenciales generadas por asignaciones m ultiples y se eliminan asignaciones superuas. 2. Con este sistema de transiciones se obtiene uno abstracto para utilizar el m etodo de generaci on de invariantes lineales por interpretaci on abstracta en el dominio de poliedros convexos (cap tulo 3). Con el invariante as obtenido y agregando las condiciones sobre las colas, se obtiene el invariante inicial on (5.23). MON de la ecuaci 3. Con este invariante se eliminan transiciones y se simplican sus guardas, como se indica en la secci on 5.6. Esta etapa devuelve como resultado un sistema de transiciones simplicado (que modela la implementaci on del monitor con se nalamiento autom atico) y el invariante inicial . MON Eliminaci on de se nalizaciones. Para cada operaci on signal que aparece en la implementaci on del monitor se ejecutan los siguientes pasos: 1. Se obtiene un invariante candidato P desde un nuevo sistema de transiciones generado, como se indica en la secci on 5.5.1. 2. Con el sistema de transiciones (resultado de la etapa anterior), el invariante inicial MON y el invariante candidato P se intenta probar la invariancia de este u ltimo. Este paso fue implementado reutilizando el programa que implementa el c alculo del punto jo por propagaci on hacia atr as, en el programa 4.15 del cap tulo anterior. 3. Seg un este u ltimo resultado, si la se nal en cuesti on es superua se la elimina de la implementaci on del monitor, generando un nuevo sistema de transiciones para vericar la posibilidad de eliminaci on de la pr oxima se nalizaci on (secci on 5.6). 4. En el mismo caso que la se nalizaci on actual sea superua, el invariante generado en el c alculo de punto jo es utilizado para fortalecer el invariante a utilizado como MON . Este nuevo invariante fortalecido ser invariante inicial para la pr oxima se nalizaci on a tratar. En la gura 5.1 (p ag. 202) se esquematizan estas etapas y sus dependencias con m odulos externos. Ambas etapas fueron incluidas dentro de mismo m odulo ML para poder compartir las funciones que implementan la generaci on de transiciones a partir de reglas y el uso de los probadores y simplicadores de formulas de manera sencilla. A continuaci on profundizaremos este dise no.

5.7.1

Etapa de inicializaci on

Esta etapa tiene como entrada el monitor con se nalamiento autom atico a tratar. El mismo es ingresado al sistema como un archivo de texto respetando una gram atica similar a la del lenguaje C pero reducida y adaptada para especicar el problema. En la secci on 5.8 se mostrar an ejemplos de la misma. Esta entrada es interpretada en una serie de tipos de datos ML que la representa.

186

CAP ITULO 5. MONITORES

Con esta entrada elaborada, el prototipo genera el sistema de transiciones por aplicaci on de las reglas, desplegando antes las implementaciones de las operaciones await y primitivas return como se indica en la secci on 5.4. Adem as se eliminan las asignaciones superuas en los comandos guardados y se transforman las asignaciones secuenciales en asignaciones m ultiples como se indica en [BAW98, teoremas 5.3 y 5.4]. La pr oxima parte de la etapa consiste en encontrar el invariante inicial MON . Para ello se utiliz o el m odulo de interpretaci on abstracta en poliedros convexos donde genera el sistema de transiciones abstracto y se implementa el m etodo de propagaci on hacia adelante en el programa 3.4 (p ag. 101). Este u ltimo hace uso de la librer a para la manipulaci on de poliedro Polka [HPR97]. La librer a se encuentra escrita en lenguaje C por lo cual hubo que hacer una interfase entre este lenguaje y ML utilizando la librer a NLFFI [Blu01]. A partir del invariante lineal concretizado generado por este m odulo, m as las condiciones sobre los tama nos de las colas (5.23) se construye el invariante inicial sobre el sistema de transiciones. La pr oxima parte de esta etapa consiste en simplicar el sistema de transiciones utilizando el invariante inicial, como se indica en la secci on 5.6. De esta manera, se simplican las guardas y se eliminan transiciones superuas manteniendo como suposici on aquel invariante. Para implementar este proceso se reutilizaron las estrategias de prueba y simplicaci on realizadas con los probadores externos CVC3 [CVC08] e Isabelle/HOL [Pau94]. Para esta ocasi on se implement o un m odulo que agrupa estas funcionalidades, las cuales tambi en ser an utilizadas en la etapa siguiente. Esta etapa arroja como resultado el sistema de transiciones y el invariante inicial, los cuales ser a utilizado en la etapa siguiente, como se indica en la gura 5.1 (p ag. 202).

5.7.2

Etapa de eliminaci on de se nalizaciones

Esta etapa realiza las pruebas que posibilitan la eliminaci on de las operaciones signal en la implementaci on del monitor de entrada. Como ya se mencion o, el m etodo consiste en la b usqueda de invariantes que garanticen esta eliminaci on, renando el sistema de transiciones y el invariante inicial a partir de cada invariante encontrado: procesando secuencialmente cada se nalizaci on, si resulta superua, el invariante que prueba este hecho es utilizado para fortalecer MON y para eliminar las transiciones cuyas guardas no sean satisfactibles en el conjunto de conguraciones denido por el mismo (secci on 5.6). Para cada se nalizaci on a tratar se genera un sistema de transiciones temporal con el n de producir el invariante candidato P , como se indica en la secci on 5.5.1. La parte de generaci on de estas transiciones es el utilizado en la etapa anterior incluyendo las reglas (5.20) y (5.22) denidas en aquella secci on. El c alculo del punto jo a partir del m etodo de propagaci on hacia atr as es el mismo que el empleado en el cap tulo anterior. Este c alculo tambi en permite detectar la imposibilidad de eliminaci on de la se nal, en el caso que el conjunto de conguraciones iniciales no este contenido en alg un elemento de la cadena generada por el programa 5.8. Como ya se mencion o, para esta ocasi on se implement o un m odulo que agrupa las t ecnicas de prueba y simplicaci on utilizadas en el c alculo anterior (y en la etapa anterior), como se indica en la gura 5.1 (p ag. 202).

5.8. RESULTADOS

187

Al nal de la etapa se procede a generar la implementaci on del monitor de entrada con un monitor con se nalamiento expl cito sin las se nalizaciones superuas. Para ello se reescribe el mismo monitor de entrada, desplegando las implementaciones de las operaciones await y las primitivas return (secci on 5.3) y eliminando aquellas operaciones signal. El resultado es mostrado en forma de texto como un programa monitor con la misma gram atica estilo C del archivo de entrada. En la pr oxima secci on mostraremos ejemplos de estas salidas.

5.8

Resultados

El prototipo de software fue probado sobre diversos problemas de la literatura. El mismo fue ejecutado sobre una computadora con arquitectura PC, procesador de 2GHz. y 2Gb de memoria RAM. A la elecci on de casos de prueba del cap tulo anterior (secci on 4.8) fueron agregados nuevos ejemplos. A continuaci on se detallan los resultados obtenidos comenzando con el ejemplo m as simple.

5.8.1

Sem aforos generales

Comenzaremos con el problema de implementaci on de un sem aforo general (tratado en la secci on 4.8.3 del cap tulo anterior) con monitores. El archivo de entrada con el monitor de se nalamiento autom atico que resuelve este problema es: Monitor semaphore { int s; semaphore(){ /*@ require: s == 0 @*/ } p(){ await (s > 0); s = s - 1; } v(){ s = s + 1; } } Como se puede observar, se ha incluido un procedimiento con el mismo nombre del monitor. Esta inclusi on en la gram atica del archivo de entrada sirve para denotar la inicializaci on de las variables del monitor. Dentro de este m etodo se agrega la directiva /*@ require: s == 0 @*/ para se nalar que inicialmente la variable s tiene el valor 0. Los dem as procedimientos son los correspondientes a las operaciones P y V sobre el sem aforo (equivalentes a las regiones cr ticas condicionales en el cap tulo anterior, secci on 4.8.3). A continuaci on mostraremos la implementaci on con un monitor de se nalamiento expl cito sin simplicar (a la izquierda), y con las eliminaciones de se nales que encuentra nuestro m etodo (a la derecha).

188 Sin simplicar Monitor semaphore { int s; cond c1; p(){ while (!0 < s) wait(c1); s = s - 1; signal(c1); } v(){ s = s + 1; signal(c1); } } }

CAP ITULO 5. MONITORES Simplicado Monitor semaphore { int s; cond c1; p(){ while (!0 < s) wait(c1); s = s - 1; }

v(){ s = s + 1; signal(c1); }

El m etodo encuentra la se nalizaci on al nalizar el procedimiento p() superua en algo menos de 3 segundos, arrojando el programa de la derecha. La otra se nalizaci on (al nalizar v()) es necesaria ya que el procedimiento de c alculo de punto jo llega a un elemento de la cadena que no es implicado por el conjunto de conguraciones iniciales. Notar que hemos simplicado la implementaci on de la u nica operaci on await y las primitivas return gracias a que solo hay una condici on de espera. Estas simplicaciones tambi en las realiza nuestro prototipo para visualizar de manera m as compacta el resultado. El invariante inicial construido a partir de interpretaci on abstracta en el dominio de poliedros (arrojado tambi en como resultado) descubre las restricciones sobre las colas y el invariante sobre la variable s (I en el cap tulo anterior, secci on 4.8.3) de forma autom atica: IPOL .l .  0 s ^ 0 w1 ^ 0 s1 con l P te, c1 u ,

donde e es la cola de entrada, c1 es la u nica variable de condici on ligada al predicado par ametro de la operaci on await y w1 , s1 son los tama nos de las colas de procesos asociadas. Cabe remarcar que con este resultado el invariante I es encontrado de forma totalmente autom atica, en contraste con el trabajo anterior donde fue necesario introducirlo en forma manual. La cantidad de transiciones para este ejemplo comienza en 16 y termina en 12 transiciones, gracias a la eliminaci on de las mismas al generar el invariante que garantiza la eliminaci on de la se nalizaci on. Los detalles de estos resultados son expuestos en la secci on 5.8.9 (p ag. 199).

5.8.2

Productor/Consumidor en buer acotado

Este problema es el mismo que el utilizado como caso de prueba en la secci on 4.8.1 del cap tulo anterior. En esta ocasi on, el archivo de entrada es:

5.8. RESULTADOS Monitor bbuffer { int n, N; bbuffer(){ /*@ require: 0 < N && n == 0 @*/ } producer(){ await (n<N); n = n + 1; } consumer(){ await (n>0); n = n - 1; } }

189

A continuaci on se muestra la implementaci on sin simplicar con la obtenida por el prototipo, tal cual es mostrada de forma textual: Sin simplicar Monitor bbuffer { int n, N; cond c1, c2; producer(){ if (!n < N) { signal(c2) wait(c1); while (!n < N) wait(c1);} n = n + 1; signal(c1); signal(c2); } consumer(){ if (!0 < n){ signal(c2) wait(c1); while (!0 < n) wait(c2);} n = n - 1; signal(c1); signal(c2); } } Como puede verse, el resultado simplicado elimina las mismas se nalizaciones que en el programa 5.2 (p ag. 157). Efectivamente, nuestro m etodo encuentra todas las se nales superuas y adem as decide que las que aparecen en el resultado nal no son posibles de eliminar ( no implica un elemento en la cadena). Simplicado Monitor bbuffer { int n, N; cond c1,c2; producer(){ while (!n < N) wait(c1); n = n + 1; signal(c2); } consumer(){ while (!0 < n) wait(c2); n = n - 1; signal(c1); } }

190

CAP ITULO 5. MONITORES

Al resolver el problema la cantidad de transiciones van de 66 al inicio del m etodo a 48 al nal. Recordemos que en el cap tulo anterior, para el mismo problema hubo solo 10 a 11 transiciones, lo cual muestra el aumento en su cantidad analizado en la secci on 5.5.2 (p ag. 182). El tiempo total de procesamiento es de 24 segundos contra algo m as de 2 segundos en el mismo problema en el cap tulo anterior. El invariante candidato encontrado por interpretaci on abstracta fue: . IPOL .l  0 n ^ n N ^ N 1 0 ^ 0 w2 ^ 0 w1 ^ 0 s2 ^ 0 s1 con l P te, c1 , c2 u la locaci on de entrada y las identicadas con las variables de condici on. Notar que en este caso tambi en es encontrado el invariante I del problema de forma totalmente autom atica.

5.8.3

Sincronizaci on de Fase

El pr oximo problema a tratar es el denominado sincronizaci on de fase. El mismo resuelve el acceso de manera sincronizada de dos clases de procesos de forma tal que la cantidad de veces que se ejecutan sean iguales. Este problema fue presentado en [BW03] donde se elaboraron manualmente varias soluciones a partir de la teor a de Owicki-Gries [OG76] utilizando sem aforos. Utilizando monitores con se nalamiento autom atico, el problema puede ser resuelto con dos procedimientos, uno para cada clase de procesos: Monitor syncphase { int x, y; syncphase(){ /*@ require: x == 0 && y == 0 @*/ } px(){ await x = x } py(){ await y = y }

(x <= y); + 1;

(y <= x); + 1;

} Las variables de monitor x e y cuentan la cantidad de procesos que ejecutaron los procedimientos. La operaciones bloqueantes aseguran la sincronizaci on. A partir de esta entrada, nuestro m etodo encuentra en 29 segundos la siguiente implementaci on: Monitor syncphase { int x, y; cond c1, c2; px(){ while (!x <= y) wait(c1); x = x + 1; signal(c2); }

5.8. RESULTADOS py(){ while (!y <= x) wait(c2); y = y + 1; signal(c1); } }

191

En la soluci on se eliminaron todos los se nalamientos correspondientes a las implementaciones de la operaciones await y aquellos sobre procesos de igual clase al nal de cada procedimiento. Los dem as se nalamientos fueron probados necesarios. Los detalles de estos resultados ser an expuestos en la secci on 5.8.9. El invariante IPOL obtenido por el prototipo captura el introducido de forma manual x y 1 ^ y x 1 en [BW03]: .  x y 1 0 ^ y x 1 0 ^ 0 s1 ^ 0 w2 ^ 0 w1 ^ 0 s2 con l P te, c1 , c2 u. IPOL .l

5.8.4

Lectores y escritores

Este caso de prueba corresponde a la soluci on con monitores del mismo problema tratado en la secci on 4.8.4 del cap tulo anterior. El monitor de entrada es: Monitor rw { int r, w; rw(){ /*@ require: r == 0 && w == 0 @*/ } request_read(){ await (w==0); r = r + 1; } release_read(){ /*@ require: r > 0 @*/ r = r - 1; } request_write(){ await (w==0 && r == 0); w = w + 1; } release_write(){ /*@ require: w > 0 @*/ w = w - 1; } }

192

CAP ITULO 5. MONITORES

Notar que para solucionar este problema fue necesario incluir las suposiciones r 0 y w 0 en los procedimientos release_read() y release_write() respectivamente. Estas condiciones son requeridas ya que cualquier programa que utilice el monitor debe liberar el permiso de lectura o escritura despu es de haberlo adquirido. Cabe recordar que para el tratamiento del mismo problema en el cap tulo anterior estas precondiciones no fueron necesarias. Esto fue debido a que en aquel caso el invariante del problema, provisto de forma manual, implica que w (cantidad de escritores) y r (cantidad de lectores) son mayores o iguales a cero, lo cual imposibilita ejecutar aquellos procedimientos sin que se cumplan las precondiciones. Despu es de 54 segundos el m etodo devuelve la siguiente implementaci on del monitor anterior: Monitor rw { int r, w; cond c1, c2; request_read(){ while (!w == 0) wait(c1); r = r + 1; signal(c1); } release_read(){ r = r - 1; signal(c2); } request_write(){ while (!( w == 0 && r == 0 )) wait(c2); w = w + 1; } release_write(){ w = w - 1; signal(c1); signal(c2); } } donde se muestra la eliminaci on de todas las se nalizaciones en las implementaciones de las operaciones await, dejando solo las se nalizaciones necesarias para resolver el problema: a la entrada un lector solo se se naliza lectores, a la salida solo escritores y a la salida de un escritor se se naliza a ambos tipos de procesos. Estas se nalizaciones fueron detectadas como necesarias por el m etodo (por no implicaci on del conjunto de conguraciones iniciales). El invariante candidato encontrado por interpretaci on abstracta es el siguiente: IPOL .l .  0 w ^ 0 r ^ 0 s1 ^ 0 w1 ^ 0 s2 ^ 0 w2

5.8. RESULTADOS

193

con l P te, c1 , c2 u la locaci on de entrada y las identicadas con las variables de condici on. Este invariante es m as d ebil que el invariante I en el cap tulo anterior . ya que este u ltimo no es convexo (I  r 0 ^pw  0 _ pw  1 ^ r  0qq). El mismo problema fue tratado sin incluir las precondiciones a las salidas de las lecturas y escrituras. Sin ellas el m etodo agrega solo una se nalizaci on signal(c2) al nalizar el procedimiento request_read(), con lo cual la soluci on encontrada sigue siendo correcta aunque no tan eciente como la anterior. En este caso el invariante lineal fue: IPOL .l .  w

1 ^ 0 s1 ^ 0 w1 ^ 0 s2 ^ 0 w2

para l P te, c1 , c2 u. Notar que la cantidad de escritores y lectores puede ser negativa. Esto es debido a que sin la restricci on en los procedimientos de salida, los mismos pueden ejecutarse indiscriminadamente, haciendo decrecer estas variables de manera arbitraria. Cabe remarcar que en el tratamiento del mismo problema en el cap tulo anterior, estas variables fueron necesariamente positivas por el invariante ingresado manualmente.

5.8.5

Ba no unisex

Este problema, presentado en [And91, p ag. 221], es una variaci on del problema de lectores y escritores. El mismo consiste en resolver la situaci on de acceso a un ba no unisex por personas de distinto g enero. Los hombre solo pueden utilizar el ba no cuando el mismo se encuentra desocupado. Las mujeres pueden hacerlo cuando no haya hombres en el ba no y haya a lo sumo N mujeres. Representando con la variable m y w la cantidad de hombres y mujeres utilizando el ba no, el monitor con se nalamiento autom atico que resuelve el problema es el siguiente: Monitor bathroom { int m, w, N; bathroom(){ /*@ require: m == 0 && w == 0 && N > 0 @*/ } man_enter(){ await (m == 0 && w==0); m = m + 1; } man_exit(){ /*@ require: m > 0 @*/ m = m - 1; } women_enter(){ await (w < N && m==0); w = w + 1; } women_exit(){ /*@ require: w > 0 @*/ w = w - 1; } }

194

CAP ITULO 5. MONITORES

En el caso que un caballero desee utilizar el ba no, deber a ejecutar el procedimiento man_enter() al entrar y man_exit() al salir. De forma an aloga los har an las damas con los dem as procedimientos. Notar las precondiciones impuestas en este sentido sobre los procedimientos man_exit() y women_exit(). Despu es de 67 segundos de procesamiento el sistema arroja el siguiente resultado: Monitor bathroom { int m, w, N; cond c1, c2; man_enter(){ while (!( m == 0 && w == 0 )) wait(c1); m = m + 1; } man_exit(){ m = m - 1; signal(c1); signal(c2); } women_enter(){ while (!( w < N && m == 0 )) wait(c2); w = w + 1; signal(c2); } women_exit(){ w = w - 1; signal(c1); signal(c2); } } La misma muestra que a la salida de hombres o mujeres es necesario se nalizar todos los tipos de procesos, mientras que se eliminan todas las se nalizaciones de hombres entrando y las que realizan las mujeres a los hombres intentando entrar en el momento que ellas ocupan el ba no. Todas las se nalizaciones necesarias fueron detectadas en el c alculo de punto jo. Algunas variaciones sobre este problema fueron tambi en implementadas. Al nal de esta secci on, en la tabla 5.1 (p ag. 200) se muestran los resultados.

5.8.6

Barrera

Un problema interesante es la implementaci on de una sincronizaci on en barrera [And91, p ag. 120]. El mismo consiste de una cantidad no acotada de procesos que intentan ejecutar alguna acci on en conjunto pero de forma sincronizada. Se requiere adem as que haya exactamente N procesos ejecutando la acci on al

5.8. RESULTADOS

195

mismo tiempo. Para lograrlo se programa una barrera de sincronizaci on que es ejecutada antes de intentar llevar a cabo la acci on. Si hay N que pasaron la barrera, los procesos nuevos deben que esperar en la barrera hasta su nalizaci on. Si hay menos de N esperando en la barrera, todos ellos deber an esperar a que se complete esta cantidad de procesos en espera, para poder ejecutar la acci on en conjunto. Una soluci on posible es mediante el siguiente monitor: Monitor barrier { int i, j, N; barrier(){ /*@ require: i == 0 && j == 0 && 0 < N doBarrier(){ await (j == 0 && i < N); i = i + 1; await (i == N); j = j + 1; if (j == N){ i = 0; j = 0; } } } La misma contiene dos variables. La variable i cuenta los procesos esperando a completar el cupo de N para llevar a cabo la acci on. La variable j cuenta la cantidad de procesos que pasaron la barrera. Las dos esperas en las operaciones await bloquean los procesos. La primera condici on j  0 ^ i N deja pasar los procesos mientras la cantidad de ellos sea menor a N y hayan nalizado la ejecuci on de la barrera N procesos (al nal de la barrera el u ltimo asigna 0 al contador j ). La segunda condici on i  N bloquea los procesos hasta que el cupo sea N . En el caso que hayan pasado N procesos por esta espera, el u ltimo asigna 0 a las variables i y j , permitiendo desbloquear N procesos en la primera espera. La implementaci on de este monitor obtenida por nuestro m etodo es: Monitor barrier { int i, j, N; cond c1, c2; doBarrier(){ while (!( j == 0 && i < N )) wait(c1); i = i + 1; if (!i == N){ signal(c1); do wait(c2); while (!i == N); } j = j + 1; if (j == N) { i = 0; j = 0; } signal(c1); signal(c2); } } @*/ }

196

CAP ITULO 5. MONITORES

Seg un este resultado, se puede eliminar solo la se nalizaci on dentro de la implementaci on de la primera operaci on await. Las dem as fueron probadas necesarias en el c alculo del punto jo. Para obtener esta soluci on el prototipo necesita un poco m as de 2 minutos. La cantidad de transiciones comienza en 96 quedando solo 69 despu es de la eliminaci on de las mismas en la etapa inicia. Este es el primer ejemplo donde se eliminan transiciones en la etapa inicial (los detalles de todos los ejemplos pueden verse en la tabla 5.1, p ag. 200).

5.8.7

Productor/Consumidor goloso M

Este problema es el presentado en la secci on 4.8.6 del cap tulo anterior. En aquella ocasi on el sistema no pudo detectar la eliminaci on de la guarda donde un consumidor libera a otro proceso de su mismo tipo. El monitor con se nalamiento autom atico que resuelve el problema es: Monitor bbuffer { int n, N, M; bbuffer(){ /*@ require: M <= N && n == 0 && M > 0 @*/ } producer(){ await (n<N); n = n + 1; } consumer(){ await (n>=M); n = n - M; } } En este caso nuestro m etodo encuentra la soluci on correcta: Monitor bbuffer { int n, N, M; cond c1, c2; producer(){ while (!n < N) wait(c1); n = n + 1; signal(c1); signal(c2); } consumer(){ while (!M <= n) wait(c2); n = n - M; signal(c1); } }

5.8. RESULTADOS

197

Como puede observarse, la se nalizaci on al nalizar un consumidor hacia otro proceso de su mismo tipo es eliminada. Adem as se eliminan las se nalizaciones en las implementaciones de las operaciones await. Todas las se nalizaciones restantes fueron probadas como necesarias a partir del c alculo de punto jo. El proceso para encontrar esta soluci on se lleva a cabo en 6 minutos. Comparando con los 26 segundo que se necesitan para encontrar la soluci on al problema de productores consumidores cl asico (secci on 5.8.2) puede percibirse la mayor complejidad que posee el problema actual.

5.8.8

Rendezvous

Un problema cl asico en concurrencia es el denominado rendezvous. El mismo es presentado como un mecanismo de comunicaci on sincr onica entre un cliente y un servidor. En esta comunicaci on el cliente env a un dato al servidor, el cual es procesado por este u ltimo. Durante el tiempo de procesamiento el cliente debe permanecer bloqueado hasta que el servidor termine su tarea y env e el resultado al cliente. A su vez, el servidor procesa solo un dato al mismo tiempo. Como puede notarse, el problema es similar al de productores y consumidores con buer de tama no uno, con la diferencia que los procesos deben sincronizarse mutuamente al momento del procesamiento del dato. Una implementaci on posible con monitores de se nalamiento autom atico es elaborando dos procedimientos, uno para ser invocado por el servidor y otro por los clientes: Monitor client_server { int s, d; client_server(){ /*@ require: s == 0 && d == 0 @*/ } server(){ await (s == 0 && d == 0); s = s + 1; await (d == 1); s = s - 1; } client(){ await (s == 1 && d == 0); d = d + 1; await (s == 0); d = d - 1; } } La variable s indica que el servidor brinda su servicio a los cliente: si es igual a 1 el servidor es accesible y 0 en caso contrario. La variable d indica el env o de un dato al servidor, por parte de un cliente: si es igual a 1 el dato ha sido enviado y se esta esperando la respuesta del servidor, y es igual a 0 cuando naliza esta espera. Ambos procedimientos contienen dos operaciones bloqueantes await. En el servidor, primero se espera a que alg un servicio previo haya nalizado (s==0) y

198

CAP ITULO 5. MONITORES

que el resultado del procesamiento haya sido recibido (d==0). Una vez terminada la espera, se coloca al servidor en estado accesible y se espera a que un dato haya sido enviado por parte de un cliente (d==1). En el cliente, la primera espera tiene como condici on que el servidor est e accesible (s==1) y que no haya sido enviado un dato por otro cliente (d==0). Una vez terminada esta espera, se env a el dato (incrementando d) y se espera a que el servidor termine el procesamiento (s==0). Notar, que por la cantidad de operaciones await dentro de los procedimientos, este problema resulta dif cil de tratar: estas operaciones dispuestas secuencialmente en un mismo procedimiento hace que la cantidad de transiciones se multiplique por las bifurcaciones condicional que aparecen en sus implementaciones. En la etapa inicial de generaci on de transiciones realizada por nuestro prototipo la cantidad de las mismas es de 740, siendo mayor en orden de magnitud a las consideradas en los ejemplos anteriores. El prototipo devuelve la siguiente soluci on: Monitor client_server { int s, d; cond c1, c2, c3, c4; server(){ while (!( s == 0 && d == 0 )) wait(c1); s = s + 1; if (!d == 1){ signal(c3); do wait(c2); while (!d == 1);} s = s - 1; signal(c4); } client(){ while (!( s == 1 && d == 0 )) wait(c3); d = d + 1; if (!s == 0){ signal(c2); do wait(c4); while (!s == 0);} d = d - 1; signal(c1); } } La soluci on muestra el comportamiento operacional cl asico del rendezvous como una alternancia entre la ejecuci on del servidor y el cliente: un servidor comienza su ejecuci on si se satisface su condici on inicial. En este caso, incrementa la variable s y se naliza alg un cliente en espera. Un cliente, ya sea esperando en la momento de la se nalizaci on o invocando su procedimiento despu es de la misma, incrementa la variable d (enviando un dato), se naliza al servidor, y espera

5.8. RESULTADOS

199

por el procesamiento del dato. El servidor se nalizado decrementa la variable s (procesa el dato) y se naliza al consumidor. Este u ltimo, recomienza su ejecuci on decrementando la variable d y se nalizando a otro posible servidor bloqueado. En total hubo 20 se nalizaciones a procesar, de las cuales 16 fueron eliminadas y las restantes, que aparecen en el programa, fueron probadas necesarias. El tiempo de procesamiento total fue de 25 minutos. La cantidad de transiciones disminuy o a lo largo de todo el proceso. En la etapa inicial se eliminaron transiciones utilizando el invariante lineal, pasando de 740 transiciones a solo 217. En la segunda etapa, a medida que se fueron eliminando las se nalizaciones, se lleg o a solo 69 transiciones a procesar.

5.8.9

Resumen

Finalmente haremos un resumen de los resultados anteriores, agregando algunos casos de prueba que son variaciones de los anteriores problemas. En la tabla 5.1 (p ag. 200) se muestran algunos valores obtenidos del procesamiento de los problemas. La columnas indican el problema, la cantidad de se nales a procesar, la cantidad de transiciones iniciales, la cantidad de transiciones despu es de la eliminaci on en la primera etapa, la cantidad nal y el tiempo de c omputo, en este orden. En cada la se muestran los datos de cada problema, los cuales son (en este orden): Sem: Problema de implementaci on de sem aforos generales en secci on 5.8.1. P/C: Problema de productores y consumidores en secci on 5.8.2. SincF: Problema de sincronizaci on de fase en secci on 5.8.3. L/E1: Problema de lectores y escritores en secci on 5.8.4. L/E2: Mismo problema anterior pero sin las precondiciones a la salida, como se explica en aquella secci on. Ba no1: Problema del ba no unisex en la secci on 5.8.5. Ba no2: Variaci on del problema anterior donde tanto mujeres como hombres acceden si no hay personas del otro sexo y sin restricci on de cantidad. Esto es, la condici on para la entrada de hombres es w  0 (no hay mujeres) y para mujeres es m  0 (no hay hombres). Ba no3: Variaci on del problema original donde hombres y mujeres se comportan de forma sim etrica: tanto hombres como mujeres ingresan al ba no si no hay personas de sexo opuesto y la cantidad no excede cierto valor. Esto es, solo la condici on para el ingreso de hombres cambia por m N ^ w  0. Barrera1: Problema de la secci on 5.8.6. Barrera2: Variaci on del problema anterior donde se aprovecha la implementaci on particular realizada para las operaciones await. En (5.7) (p ag. 162) puede notarse que si la condici on de la operaci on se cumple, el programa sigue su hilo de ejecuci on. Eso hace que pueda simplicarse la condici on de la primera operaci on await.pj  0 ^ i N q por await.pj  0q ya que en la segunda de estas operaciones, el u ltimo proceso (el N - esimo, cuando i  N ) no se bloquea y cambia valor de j , bloqueando otros procesos

200

CAP ITULO 5. MONITORES que intenten invocar el m etodo (en el primer await). Aplicando solo esta simplicaci on generamos la variaci on del problema original.

P/CG: Problema Productor/Consumidor donde el consumidor elabora de a dos elementos. El problema fue planteado en el cap tulo anterior secci on 4.8.5 (p ag. 145). P/CGM: Problema de consumidor goloso en la secci on 5.8.7. Rendez: Problema de rendezvous en secci on 5.8.8. Problema Sem P/C SincF L/E1 L/E2 Ba no1 Ba no2 Ba no3 Barrera1 Barrera2 P/CG P/CGM Rendez #se nal 2 6 6 10 10 10 10 10 4 4 6 6 20 elim. 1 4 4 6 5 5 6 4 1 1 3 3 16 #trs. inic. 16 66 66 90 90 90 90 90 96 96 66 66 740 #trs 1E 16 66 66 90 90 90 90 90 72 72 66 66 217 #trs. n. 12 48 48 48 60 54 54 60 69 69 60 60 69 Wall T. 2.782 24.414 22.734 54.057 47.782 67.042 63.630 148.333 139.400 145.246 127.701 356.407 1546.356

Tabla 5.1: Resumen de resultados En todos los problemas se detectaron tanto las se nalizaciones superuas como las necesarias.

5.9

Conclusiones y trabajos futuros

El objetivo del trabajo presentado en este cap tulo es el desarrollo de una implementaci on ecientes de monitores con se nalamiento autom atico. En el cap tulo anterior efectuamos una tarea similar: se implementaron regiones cr ticas condicionales con sem aforos binarios (mediante la t ecnica SBD) y se desarroll o un m etodo para mejorar su eciencia. De manera an aloga, en el cap tulo actual, utilizamos monitores con se nalamiento expl cito para implementar monitores con se nalamiento autom atico y se realizaron mejoras autom aticas sobre estas implementaciones. La clave de este trabajo fue la modelizaci on del comportamiento de las implementaciones de los monitores con sistema de transiciones. En comparaci on con el trabajo del cap tulo anterior, la cantidad de transiciones es mayor, lo cual hizo necesario emplear diversas estrategias de eliminaci on de transiciones.

5.9. CONCLUSIONES Y TRABAJOS FUTUROS

201

Las mismas fueron esenciales al momento de obtener los resultados mostrados en la secci on anterior. En este sentido, cabe destacar que los problemas tratados no incluyen ninguna clase de invariante inicial, por lo que fue necesario incluir la t ecnica de interpretaci on abstracta en el dominio de poliedros vista en el cap tulo 3. Con este invariante fue posible no solo agilizar el c alculo de punto jo mediante simplicaci on de f ormulas, si no tambi en eliminar transiciones superuas. Al igual que en los trabajos futuros recomendados en el cap tulo anterior, ser a interesante comparar otras t ecnicas de interpretaci on abstracta para obtener invariantes iniciales, como por ejemplo abstracci on por predicados con renamiento por contraejemplos [CGJ 00, DD02]. Por otro lado, tambi en se podr a desarrollar alguna t ecnica de narrowing sobre el c alculo del m aximo punto jo al estilo de la presentada en [BW10]. Otra diferencia importante con el trabajo anterior, es que las implementaciones no cuentan de manera expl cita con contadores de procesos en espera, lo cual hizo necesario incluir estas cantidades en la forma de abstracci on de las colas de espera. Este tratamiento produce sistemas de transiciones de tama no tratable y sucientemente expresivos para poder utilizarlos en el proceso autom atico de eliminaci on de se nalizaciones superuas sobre un amplio espectro de casos de prueba. Sin embargo, problemas que impliquen el uso de variables locales, como por ejemplo Disk schedulling [And91, p ag. 295] no pueden ser abordados por la presentaci on actual de nuestro m etodo. El u nico camino para tratar este problema sin p erdida de informaci on es incluir la pila de variables locales de cada proceso en el sistema de transiciones. Necesariamente esto rompe con la abstracci on de las colas de procesos antes mencionada. Una posible soluci on a esta restricci on es incluir sentencias havoc sobre las variables locales, como se propone en [BL05] y se menciona en la secci on 5.4. Con ello se produce una p erdida de informaci on importante ya que estas variables quedan indeterminadas en las pruebas. De todas maneras queda como trabajo futuro intentar esta estrategia. Como mencionamos en la secci on 4.3 (p ag. 117), inicialmente Hoare [Hoa74] presenta la idea de la t ecnica SBD como una forma de implementar monitores. Aunque en este art culo, por razones de eciencia, la misma no es recomendada por su autor, m as tarde E.W. Dijkstra en [Dij79] sistematiza la t ecnica para implementar regiones cr ticas condicionales, mostrando que con las simplicaciones manuales se pueden obtener programas ecientes. Queda entonces como trabajo futuro la adaptaci on de la t ecnica SBD a implementaciones de monitores con se nalamiento autom atico, con el objetivo de aplicar la metodolog a desarrollada en nuestro trabajo. Otro trabajo futuro consiste en obtener diferentes medidas de performance para comparar las soluciones con y sin las mejoras obtenidas mediante nuestro m etodo. En [BH05] se simulan distintas implementaciones de monitores con se nalamiento autom atico en diferentes lenguajes de programaci on, lo cual permite obtener este tipo de mediciones para distintos escenarios. Siguiendo esta metodolog a se podr an comparar estos resultados con los obtenidos sobre simulaciones que corran nuestras soluciones.

202

CAP ITULO 5. MONITORES

Figura 5.1: Diagrama de Dise no. Monitor con se nalamiento autom atico Invariantes en Poliedros Etapa de Inicializaci on Generaci on de Transiciones Invariante Inicial MON Simplicaci on y Eliminaci on de Transiciones C alculo de Punto Fijo Abstracci on del Sistema de Transiciones

Polka

Sistema de Transiciones y MON inicial

Probadores Simplicador de F ormulas

Etapa de Eliminaci on de Se nalizaciones Elaboraci on de de Invariante Candidato C alculo de Punto Fijo Eliminaci on de Transiciones Fortalecimiento de MON

CVC Lite

Isabelle

Monitor con se nalamiento expl cito

DE TRANSICIONES 5.A. REGLAS DE DERIVACION

203

Ap endice 5.A
v : H

Reglas derivaci on de transiciones


Assign

$ p,

true v : H, q true skip, q

skip $ p, rB s $ p,

Skip

skip, q

Assum

S1 $ pL, B1 P1 , q S2 $ p, B2 P2 , L1 q Seq1 S1 ; S2 $ pL, B1 ^ wlp.P1 .B2 P1 ; P2 , L1 q S1 $ pL, B P, L1 q Seq2 S1 ; S2 $ pL, B P, L1 q S2 $ pL, B P, L1 q Seq3 S1 ; S2 $ pL, B P, L1 q si L1

si L 

if if

x x

Si $ p, B P, L1 q j : 1 j n : Cj Sj y $ p, Ci ^ B Si $ pL, B P, L1 q j : 1 j n : Cj Sj y $ pL, true skip, q Enter

P, L1 q
If2

If1

P, L1 q

si L 

enter $ pe,

waitLoopi $ p, con i  1, , m.

true wi : wi 1, eq

WakeEnter

waitLoopi $ p, sj 0 wi , sj : wi 1, sj con i  1, , m y j  1, , m. waitLoopi $ pci , con i  1, , m. waitLoopi $ pci , con i  1, , m. waitLoopi $ pci , con i  1, , m y j Bi

1, cj q

WakeWait

skip, q

Wake

Bi

wi : wi 1, eq

LoopEnter

Bi ^ sj 0 wi , sj : wi 1, sj 1, cj q  1, , m. ReturnEnter ReturnWait

LoopWait

return $ p, skip, eq return $ p, sj con j  1, , m.

0 sj : sj 1, cj q

204

CAP ITULO 5. MONITORES

Ap endice 5.B

Transiciones Productor/Consumidor

En el ejemplo 5.3 (p ag. 171) se derivaron algunas transiciones del monitor Productor/Consumidor. En este ap endice se muestran todas las transiciones que conforman el sistema. Transiciones derivadas del procedimiento productor:

pe, n N ^ 0 w1 ^ 0 w2 n, w2 , s2 , w1 , s1 : n 1, w2 1, s2 1, w1 1, s1 1, eq

, , ,

pe, n N ^ 0 w1 ^ w2  0 n, w1 , s1 : n 1, w1 1, s1 1, eq pe, n N ^ w1  0 ^ 0 w2 n, w2 , s2 : n 1, w2 1, s2 1, eq pe, n N ^ w1  0 ^ w2  0 n : n 1, eq


,

pe, n N ^ 0 w1 ^ 0 w2 ^ 0 s1 n, w2 , s2 , w1 : n 1, w2 1, s2 1, w1 1, c1 q pe, n N ^ w1  0 ^ 0 w2 ^ 0 s1 n, s1 , w2 , s2 : n 1, s1 1, w2 1, s2 1, c1 q pe, n N ^ 0 w1 ^ 0 w2 ^ 0 s2 n, w2 , w1 , s1 : n 1, w2 1, w1 1, s1 1, c2 q pe, n N ^ 0 w1 ^ w2  0 ^ 0 s2 n, s2 , w1 , s1 : n 1, s2 1, w1 1, s1 1, c2 q


,

, ,

pe, n N ^ 0 w1 ^ w2  0 ^ 0 s1 n, w1 : n 1, w1 1, c1 q
, ,

pe, n N ^ w1  0 ^ w2  0 ^ 0 s1 n, s1 : n 1, s1 1, c1 q
,

pe, n N ^ w1  0 ^ 0 w2 ^ 0 s2 n, w2 : n 1, w2 1, c2 q pe, n N ^ w1  0 ^ w2  0 ^ 0 s2 n, s2 : n 1, s2 1, c2 q pe, pe, pe, pe, pe, pe,


nN nN ,

^ 0 w2 s2 , w2 , w1 : s2 1, w2 1, w1 1, eq ^ w2  0 w1 : w1 1, eq
,

n N ^ 0 w2 ^ 0 s1 s2 , w2 , s1 , w1 : s2 1, w2 1, s1 1, w1 1, c1 q , nN nN nN

^ w2  0 ^ 0 s1 s1 , w1 : s1 1, w1 1, c1 q ^ 0 w2 ^ 0 s2 w2 , w1 : w2 1, w1 1, c2 q ^ w2  0 ^ 0 s2 s2 , w1 : s2 1, w1 1, c2 q

, , ,

5.B. TRANSICIONES PRODUCTOR/CONSUMIDOR

205

pc1 , n N ^ 0 w1 ^ 0 w2 s1 , w1 , s2 , w2 , n : s1 1, w1 1, s2 1, w2 1, n 1, eq

, , ,

pc1 , n N ^ 0 w1 ^ w2  0 s1 , w1 , n : s1 1, w1 1, n 1, eq pc1 , n N ^ w1  0 ^ 0 w2 s2 , w2 , n : s2 1, w2 1, n 1, eq pc1 , n N ^ w1  0 ^ w2  0 n : n 1, eq


,

pc1 , n N ^ 0 w1 ^ 0 w2 ^ 0 s1 w1 , s2 , w2 , n : w1 1, s2 1, w2 1, n 1, c1 q pc1 , n N ^ w1  0 ^ 0 w2 ^ 0 s1 s2 , w2 , s1 , n : s2 1, w2 1, s1 1, n 1, c1 q pc1 , n N ^ 0 w1 ^ 0 w2 ^ 0 s2 s1 , w1 , w2 , n : s1 1, w1 1, w2 1, n 1, c2 q pc1 , n N ^ 0 w1 ^ w2  0 ^ 0 s2 s1 , w1 , s2 , n : s1 1, w1 1, s2 1, n 1, c2 q


,

, ,

pc1 , n N ^ 0 w1 ^ w2  0 ^ 0 s1 w1 , n : w1 1, n 1, c1 q
, ,

pc1 , n N ^ w1  0 ^ w2  0 ^ 0 s1 s1 , n : s1 1, n 1, c1 q
,

pc1 , n N ^ w1  0 ^ 0 w2 ^ 0 s2 w2 , n : w2 1, n 1, c2 q pc1 , n N ^ w1  0 ^ w2  0 ^ 0 s2 s2 , n : s2 1, n 1, c2 q pc1 , pc1 , pc1 ,


nN nN nN ,

w1 : w1 1, eq

, ,

^ 0 s1 s1 , w1 : s1 1, w1 1, c1 q ^ 0 s2 s2 , w1 : s2 1, w1 1, c2 q

Transiciones derivadas del procedimiento consumidor:

pe, 0 n ^ 0 w1 ^ 0 w2 n, w2 , s2 , w1 , s1 : n 1, w2 1, s2 1, w1 1, s1 1, eq

, , ,

pe, 0 n ^ 0 w1 ^ w2  0 n, w1 , s1 : n 1, w1 1, s1 1, eq pe, 0 n ^ w1  0 ^ 0 w2 n, w2 , s2 : n 1, w2 1, s2 1, eq pe, 0 n ^ w1  0 ^ w2  0 n : n 1, eq


,

pe, 0 n ^ 0 w1 ^ 0 w2 ^ 0 s1 n, w2 , s2 , w1 : n 1, w2 1, s2 1, w1 1, c1 q

, ,

pe, 0 n ^ 0 w1 ^ w2  0 ^ 0 s1 n, w1 : n 1, w1 1, c1 q

206

CAP ITULO 5. MONITORES

pe, 0 n ^ w1  0 ^ 0 w2 ^ 0 s1 n, s1 , w2 , s2 : n 1, s1 1, w2 1, s2 1, c1 q pe, 0 n ^ 0 w1 ^ 0 w2 ^ 0 s2 n, w2 , w1 , s1 : n 1, w2 1, w1 1, s1 1, c2 q pe, 0 n ^ 0 w1 ^ w2  0 ^ 0 s2 n, s2 , w1 , s1 : n 1, s2 1, w1 1, s1 1, c2 q

, ,

pe, 0 n ^ w1  0 ^ w2  0 ^ 0 s1 n, s1 : n 1, s1 1, c1 q
,

, , ,

pe, 0 n ^ w1  0 ^ 0 w2 ^ 0 s2 n, w2 : n 1, w2 1, c2 q pe, 0 n ^ w1  0 ^ w2  0 ^ 0 s2 n, s2 : n 1, s2 1, c2 q pe, pe, pe, pe, pe, pe,


0 n ^ 0 w1 0 n ^ w1

s1 , w1 , w2 : s1 1, w1 1, w2 1, eq
,

 0 w2 : w2 1, eq

0 n ^ 0 w1 ^ 0 s1 0 n ^ w1

w1 , w2 : w1 1, w2 1, c1 q
,

 0 ^ 0 s1 s1 , w2 : s1 1, w2 1, c1 q

0 n ^ 0 w1 ^ 0 s2 s1 , w1 , s2 , w2 : s1 1, w1 1, s2 1, w2 1, c2 q , 0 n ^ w1

 0 ^ 0 s2 s2 , w2 : s2 1, w2 1, c2 q

pc2 , 0 n ^ 0 w1 ^ 0 w2 s1 , w1 , s2 , w2 , n : s1 1, w1 1, s2 1, w2 1, n 1, eq

, , ,

pc2 , 0 n ^ 0 w1 ^ w2  0 s1 , w1 , n : s1 1, w1 1, n 1, eq pc2 , 0 n ^ w1  0 ^ 0 w2 s2 , w2 , n : s2 1, w2 1, n 1, eq pc2 , 0 n ^ w1  0 ^ w2  0 n : n 1, eq


,

pc2 , 0 n ^ 0 w1 ^ 0 w2 ^ 0 s1 w1 , s2 , w2 , n : w1 1, s2 1, w2 1, n 1, c1 q pc2 , 0 n ^ w1  0 ^ 0 w2 ^ 0 s1 s2 , w2 , s1 , n : s2 1, w2 1, s1 1, n 1, c1 q pc2 , 0 n ^ 0 w1 ^ 0 w2 ^ 0 s2 s1 , w1 , w2 , n : s1 1, w1 1, w2 1, n 1, c2 q

, ,

pc2 , 0 n ^ 0 w1 ^ w2  0 ^ 0 s1 w1 , n : w1 1, n 1, c1 q
, ,

pc2 , 0 n ^ w1  0 ^ w2  0 ^ 0 s1 s1 , n : s1 1, n 1, c1 q
,

5.B. TRANSICIONES PRODUCTOR/CONSUMIDOR

207

pc2 , 0 n ^ 0 w1 ^ w2  0 ^ 0 s2 s1 , w1 , s2 , n : s1 1, w1 1, s2 1, n 1, c2 q

, , ,

pc2 , 0 n ^ w1  0 ^ 0 w2 ^ 0 s2 w2 , n : w2 1, n 1, c2 q pc2 , 0 n ^ w1  0 ^ w2  0 ^ 0 s2 s2 , n : s2 1, n 1, c2 q pc2 , pc2 , pc2 ,


0 n w2 : w2 1, eq , 0 n ^ 0 s1 0 n ^ 0 s2

s1 , w2 : s1 1, w2 1, c1 q s2 , w2 : s2 1, w2 1, c2 q

208

CAP ITULO 5. MONITORES

Ap endice 5.C

Demostraci on Teorema 5.4

Primero demostraremos que dado el cuerpo de un procedimiento en un monitor con se nalamiento autom atico, que no incluya las primitivas enter al comienzo y return al nal, si se verican ciertas pre y poscondiciones junto con la condici on de prueba sobre await, entonces las mismas se preservan en las transiciones generadas desde su implementaci on. Lema 5.7 el programa resultado de aplicar la implementaci Sea S on de las operaciones await en (5.11) (p ag. 166) sobre un programa S que contiene solo sentencias de asignaci on, if , skip, y sentencias de espera await.Bi con i  1, , m (no contiene las primitivas enter ni return). Adem as, el programa S verica

tpu S tqu
a partir de las condiciones de prueba

tI u await.Bi tI ^ Bi u

con

i  1, , m

donde en p, q e I no aparecen las variables de longitud de las colas (wi y si ). Entonces para toda transici on derivada desde S $ pl, G, l1 q S a partir del conjunto de reglas en la secci on 5.4, se cumple alguna de las siguientes proposiciones: 1. si l  y l1 2. 3. 4.

 entonces tpu G tqu , si l P te, c1 , , cm u y l1  entonces tI u G tq u si l  y l1 P te, c1 , , cm u entonces tpu G tI u si l, l1 P te, c1 , , cm u entonces tI u G tI u .

, ,

n Demostracio Probaremos el lema por inducci on estructural en la gram atica del programa S comenzando por los casos bases. Primero analizaremos el caso donde el programa consiste solo de una sentencia simple. Caso sentencias simples (asignaci on o skip) del lema se cumple: tpu v : H tqu . Si S .  v : H por hip otesis

ser Adem as, la implementaci on S a el mismo programa S . Demostraremos entonces que las transiciones generadas por esta sentencia cumplen las proposiciones del lema. Para este caso en particular se generar au nicamente la transici on ag. 165) p, true v : H, q ya que solo se puede aplicar la regla Assign (p a esta sentencia. Por lo tanto, como ambas locaciones son la auxiliar tendremos que demostrar solo tpu true v : H tq u (primera proposici on). Esto es verdadero a partir de la hip otesis tpu v : H tq u. La demostraci on del skip es similar.

TEOREMA 5.4 5.C. DEMOSTRACION

209

A continuaci on demostraremos el caso en que el programa consiste de una operaci on await. . Caso S  awaitBi Por hip otesis del teorema el programa S verica las precondici on p y poscondici on q a partir de la condici on de prueba

tI u await.Bi tI ^ Bi u Por lo tanto p I y I ^ Bi q .


await.Bi . 

ser Adem as, el programa S a la implementaci on de esta operaci on dada en (5.11) (p ag. 166): if Bi skip Bi for pj  1, , m ^ j  iq if wj 0 wj , sj : wj wj  0 skip ; waitLoopi

1, sj 1

Demostraremos entonces que todas las transiciones generadas desde esta implementaci on verican las cuatro propiedades del lema. La u nica transici on que posee ambas locaciones auxiliares es la que se deriva de la primer rama del if externo (con condici on Bi ):

p,
wlp.p Bi

Bi

skip, q

la cual es derivada usando las reglas If1 y Skip . Calculando la weakest liberal precondition sobre esta sentencia, obtenemos:

skipq.pI ^ Bi q  Bi _ I con lo que se verica tI u Bi skip tI ^ Bi u. Por lo tanto, utilizando hip otesis iniciales p I y I ^ Bi q , se verica la primer proposici on: tpu Bi skip tqu .

las

con 1 j m ^ j  i. Para generar las transiciones nales, cada una se concatena con las transiciones generadas por las subsiguientes sentencias if aplicando la regla Seq1 , obteni endose as 2m1 transiciones. Las mismas se pueden construir de la siguiente manera: sea el conjunto de ndices

A continuaci on demostraremos que las proposiciones del lema se cumplen para las transiciones transiciones restantes generadas en la segunda rama del if externo. Dentro de la misma aparece un bucle for compuesto secuencialmente con el programa waitLoopi . Como ya vimos, aquel bucle es equivalente a m 1 sentencias if compuestas secuencialmente. Cada uno de ellas produce las transiciones p, wj 0 wj , sj : wj 1, sj 1, q p, wj  0 skip, q

210 . J  tj | 1 j m ^ j mos una transici on

CAP ITULO 5. MONITORES

 iu, entonces para cada subconjunto K J

tendre-

la cual de la k - esima sentencia if es satisfecha, y en el caso que k no pertenezca al conjunto, la condici on wk  0 lo ser a. De esta manera, la guarda de la transici on indica las condiciones satisfechas (wk 0 o wk  0) en la ejecuci on de la composici on on es la resultante de las ramas secuencial de las sentencias if y la asignaci ejecutadas en estas sentencias. A su vez, estas 2m1 transiciones se concatenan con las generadas en el subsiguiente programa waitLoopi por las reglas WakeEnter en (5.12) (p ag. 168) y WakeWait en (5.13), obteni endose las siguientes pm 1q 2m1 transiciones:

p, x @ k : k P K : wk 0 y ^ x @ k : k P J K : wk  0 y xp;q k : k P K : wk , sk : wk 1, sk 1 y , q modela las ejecuciones donde, si k P K , la condici on wk 0

la segunda rama del if externo (con condici on Bi ), por lo cual, aplicando la regla If1 obtenemos las siguientes transiciones nales desde la implementaci on de la operaci on await.Bi :

P K : wk 0 y ^ x @ k : k P J K : wk  0 y wi : wi 1; xp;q k : k P K : wk , sk : wk 1, sk 1 y , eq , p, sj 0 ^ x @ k : k P K : wk 0 y ^ x @ k : k P K K : wk  0 y wi : wi 1; sj : sj 1; xp;q k : k P K : wk , sk : wk 1, sk 1 y , cj q para cada K J y j  1, , m. Las transiciones son generadas dentro de


:k

p, x @ k

P K : wk 0 y ^ x @ k : k P J K : wk  0 y wi : wi 1; xp;q k : k P K : wk , sk : wk 1, sk 1 y , eq , p, Bi ^ sj 0 ^ x @ k : k P K : wk 0 y ^ x @ k : k P K K : wk  0 y wi : wi 1; sj : sj 1; xp;q k : k P K : wk , sk : wk 1, sk 1 y , cj q con K J y j  1, , m.

p,

Bi ^ x @ k : k

Las transiciones tienen locaci on de salida la auxiliar y de llegada una en te, c1 , , cm u, por lo cual demostraremos la tercer proposici on del lema. Notar que las transiciones solo modican la longitud de las colas (si wi con i  1, , m). Por lo tanto, si p, G, l1 q es una de estas transiciones se puede demostrar que I _ Bi wlp.G.I ya que I no depende de estas variables. En consecuencia, como p I entonces se verica tpu G tI u demostr andose as la tercer proposici on. Queda por demostrar que las restantes transiciones generadas por la implementaci on de await.Bi cumplen con las proposiciones. Las mismas son simplemente generadas por las reglas Wake (p ag. 169), LoopEnter y LoopWait . La primera genera la transici on

pci ,

Bi

skip, q

La precondici on de esta sentencia con respecto a I

^ Bi es wlp.p Bi skipq.pI ^ Bi q  Bi _ I .

TEOREMA 5.4 5.C. DEMOSTRACION Como I

211

Bi

_ I e I ^ Bi q claramente se verica tI u Bi skip tqu


Bi wi : wi 1, eq Bi ^ sj 0 wi , sj : wi 1, sj

por lo tanto se cumple la segunda proposici on. Las reglas LoopEnter y LoopWait generan las transiciones

pci , pci ,

1, cj q

con j  1, , m. Las mismas cumplen el invariante I como pre y poscondici on ya que I no depende la longitud de las colas. Por los tanto verican la cuarta proposici on. El siguiente caso en la gram atica consiste en la composici on secuencial de dos subprogramas. Este es el primer caso inductivo a demostrar. Paso inductivo S .  S1 ; S2 Como hip otesis de lema tenemos que se verica

tpu S1 ; S2 tqu tpu S1 tru

Por la regla de composici on secuencial en la l ogica de Hoare [AO97, cap. 3] existe un predicado intermedio r tal que y

tru S2 tqu

A partir de este resultado, por hip otesis inductiva podemos suponer que las 1 y S 2 cumplen con las proposiciones del lema. transiciones generadas sobre S Utilizando estas hip otesis demostraremos que todas las transiciones generadas 1 ; S 2 tambi desde el programa S en las verican. Para ello analizaremos distintos subcasos seg un sus locaciones de salida y llegada. En el caso que se genere una transici on con ambas locaciones auxiliares (primer proposici on del lema) de la forma: 1 ; S 2 S

$ p, G, q $ p, P2 , q

la u nica regla que se puede haber aplicado es Seq1 (Seq2 y Seq3 necesitan que alguna locaci on sea distinta a la auxiliar). Sean 1 S

$ p,

B1

P1 , q

2 S

B2

las premisas para su derivaci on. Entonces la sentencia G queda denida por esta regla como: . G  B1 ^ wlp.P1 .B2 P1 ; P2 Por hip otesis inductiva, ambas sentencias en la premisa cumplen:

tpu
lo cual es equivalente a

B1

P1 tru

tru

B2

P2 tqu

p ^ B1

wlp.P1 .r

y r ^ B2

wlp.P2 .q

212

CAP ITULO 5. MONITORES

A partir de estas hip otesis debemos demostrar la primer proposici on sobre la sentencia G: tpu B1 ^ wlp.P1 .B2 P1 ; P2 tqu o su equivalente p pB1 ^ wlp.P1 .B2

wlp.P1 ; P2 .qq

Tomando el termino que contiene la weakest precondition de la composici on entre P1 y P 2 podemos demostrar que:

 

wlp.P1 ; P2 .q wlp.P1 .pwlp.P2 .q q { wlp de la composici on secuencial }

{ Monoton a de wlp e hip. inductiva r ^ B2 wlp.P1 .pr ^ B2 q { Conjuntividad de wlp } wlp.P1 .r ^ wlp.P1 .B2 p ^ B1 ^ wlp.P1 .B2 { Hip otesis inductiva p ^ B1

wlp.P2 .q }

wlp.P1 .r } wlp.P1 ; P2 .q

Por lo tanto

p ^ B1 ^ wlp.P1 .B2

con lo cual se demuestra la primer proposici on del lema. El pr oximo subcaso es cuando la locaci on de llegada es la auxiliar: 1 ; S 2 S

$ pl, G, q

con

l P te, c1 , , cm u .

Para obtener esta transici on las u nicas reglas de aplicaci on posibles son Seq1 y Seq3 (Seq2 necesita que la locaci on de salida sea la auxiliar). Analicemos el subcaso donde se aplica la regla Seq1 . Si las premisas para la derivaci on de la transici on son: 1 S

$ pl,

B1

P1 , q

2 S

$ p,

B2

P2 , q

entonces la sentencia G tiene la forma: G .  B1 ^ wlp.P1 .B2

P1 ; P2
B2

Por hip otesis inductiva se cumple

tI u
o su equivalente I

B1

P1 tru

tru

P2 tqu

^ B1 wlp.P1 .r
I

y r ^ B2

wlp.P2 .q

Reemplazando p por I en la prueba anterior se demuestra que

pB1 ^ wlp.P1 .B2 wlp.P1 ; P2 .qq

TEOREMA 5.4 5.C. DEMOSTRACION con lo cual se demuestra las segunda proposici on del lema:

213

tI u

B1 ^ wlp.P1 .B2

P1 ; P2 tqu

En el caso que la transici on sea generada por aplicaci on de la regla Seq3 con premisa 2 $ pl, B P, q con l P te, c1 , , cm u S . entonces la sentencia G queda denida como G  B P . Por hip otesis 2 se verica la segunda proposici inductiva en S on sobre G:

tI u
1 ; S 2 S

P tqu
l1

El pr oximo subcaso es cuando la locaci on de salida es la auxiliar:

$ p, G, l1 q

con

P te, c1 , , cm u

Para obtener esta transici on las u nicas reglas de aplicaci on posibles son Seq1 y Seq2 (Seq3 necesita que la locaci on de llegada sea la auxiliar). Las demostraciones para ambas reglas son sim etricas a las anteriores, vericando de esta manera la tercer proposici on: tpu G tI u . Solo queda por demostrar el subcaso donde ambas locaciones son distintas a la auxiliar: 1 ; S 2 S

$ pl, G, l1 q

con

l, l1

P te, c1 , , cm u

Las reglas de posible aplicaci on para obtener esta transici on son Seq1 , Seq2 y Seq3 . Para la demostraci on sobre la regla Seq1 se realiza la misma prueba anterior reemplazando p y q por I . De esta manera se demuestra que se verica la cuarta proposici on. Las demostraciones sobre las dos reglas siguientes se realizan utilizando directamente las hip otesis inductivas, vericando de esta manera la cuarta proposici on. El u ltimo caso en la gram atica del programa S es la sentencia condicional if . Paso inductivo S lema se cumple: .  if

j :1j

n:
Cj

Cj

Sj y

Por hip otesis del

tpu if x

j :1j

n:

Sj y tqu

y por la regla del comando de alternativa en la l ogica de Hoare [AO97, cap. 10] se verica: tp ^ Ci u Si tqu con i  1, , n (5.24) Sea la implementaci on de S : .  S if

j :1j

n:

Cj

j y S

y supongamos que a partir de esta sentencia se genera una transici on con locaci on de salida igual a la auxiliar: if

j :1j

n:

Cj

j y $ p, G, l1 q S

214

CAP ITULO 5. MONITORES

La misma solo puede ser generada a partir de la aplicaci on de la regla If1 por la restricci on en la locaci on de salida. Sea su premisa igual a: i S

$ p,

P, l1 q

por lo tanto la sentencia G debe tener la forma: . G  Ci ^ B P .

Analicemos dos subcasos: l1  y l1 P te, c1 , , cm u. En el primero, por (5.24) y aplicando hip otesis inductiva se cumple

tp ^ Ci u tpu

P tqu P tqu

Por lo tanto tambi en se puede demostrar f acilmente que Ci ^ B

con lo cual, por la denici on anterior de G, se cumple la primer proposici on del lema. El segundo subcaso (l1 P te, c1 , , cm u) se demuestra de forma an aloga: por hip otesis inductiva y (5.24) se cumple

tp ^ Ci u
con lo cual se puede demostrar

P tI u P tI u

tpu

Ci ^ B

Por denici on de G este resultado prueba la tercer proposici on del lema. es distinta Queda por demostrar el caso donde la transici on generada por S a la auxiliar: if

j :1j

n:

Cj

j y $ pl, G, l1 q S

con

l P te, c1 , , cm u .

Por la restricci on sobre la locaci on l, la u nica regla que puede derivar esta transici on es If2 . Por lo tanto, si su premisa es i S

$ pl,

P, l1 q P
.

la sentencia G queda denida como: . G  Ci ^ B

De la misma manera que en el caso anterior, analizaremos dos subcasos: l1 otesis inductiva se cumple y l1 P te, c1 , , cm u. En el primero, por hip

tI u tI u

P tqu P tI u

con lo cual, por denici on de G, se verica la segunda proposici on del lema. En el segundo subcaso (l1 P te, c1 , , cm u), por hip otesis inductiva se cumple B

y de la misma manera, por denici on de G, se verica la cuarta proposici on. Q.E.D. l

TEOREMA 5.4 5.C. DEMOSTRACION A partir del lema demostraremos el teorema 5.4.

215

Teorema Sea un monitor con se nalamiento autom atico que verica el invariante I a partir de las condiciones de prueba

ttrueu enter tI u tI u await.Bi tI ^ Bi u tI u return tfalseu .


. Sea TS  pL, S , , q el sistema de transiciones generado a partir de la implementaci on del monitor. Entonces si I , el invariante I es preservado en este sistema: TS | l con .l .  I (l P L) .

n Demostracio Sea S el cuerpo de un procedimiento del monitor con se nalamiento autom atico. Como las primitivas enter y return aparecen al principio y al nal respectivamente, el programa tiene la forma S  return; T ; enter con T el subprograma entre estas primitivas. Notemos que el programa T no contiene estas primitivas (solo aparecen al principio y al nal de S ) por lo cual cumple con las condiciones del lema anterior. Adem as, como S cumple las condiciones de prueba sobre enter y return, el programa T verica:

tI u T tI u

yyT las implementaciones, como monitor de se Sean S nalamiento expl cito,  return; T ; enter). Notar de S y T respectivamente (claramente se cumple S de la forma que toda transici on desde S S

$ pl, G, l1 q

es derivada a partir de la aplicaci on de las reglas Seq1 , Seq2 o Seq3 teniendo junto con las derivadas de las primitivas como premisas las obtenidas desde T enter y return (por las reglas Enter , ReturnEnter y ReturnWait ). Veremos a continuaci on que estas transiciones preservan el invariante I . sean distintas En el caso que ambas locaciones de la transici on derivada desde T es Seq3 aplicada dos a la auxiliar, la u nica regla para derivar la transici on en S veces (para las composiciones secuenciales con enter y return). Por lo tanto la es preservada en S . Aplicando el lema anterior sobre T y T se transici on de T verica tI u G tI u . preserva el invariante. por lo tanto la transici on en S sea En el caso que alguna de las locaciones de la transici on derivada desde T igual a la auxiliar, para obtener aquella desde S se deber an utilizar tambi en las reglas Seq1 y Seq2 teniendo como premisas las transiciones derivadas desde T m as las producidas por las reglas Enter , ReturnEnter y ReturnWait . Las tres u ltimas generan transiciones que no modican I ya que, como es invariante del monitor sin implementar (monitor autom atico), no contiene las variables de longitud de las colas. Por lo tanto, como por el lema anterior las transiciones

216

CAP ITULO 5. MONITORES

preservan el invariante, en este caso las transiciones derivadas desde S de T tambi en lo har an. Con este an alisis por casos se puede deducir que toda transici on derivada des. de el monitor preserva el invariante. Por lo tanto en el sistema TS  pL, S , , q se cumple @ l, G, l1 : .l.G.l1 : tI u G tI u

o de forma equivalente

tu tu Finalmente, por la hip otesis I


(p ag. 45), se demuestra Q.E.D.

con

.l

. 

del teorema y aplicando el teorema 2.14

TS | l .

Cap tulo 6

Conclusiones y trabajos futuros


El trabajo de tesis doctoral presentado muestra la factibilidad de utilizaci on de construcciones de alto nivel para la programaci on concurrente (regiones cr ticas condicionales y monitores con se nalamiento autom atico), sin p erdidas importantes en la eciencia. Este resultado tiene su relevancia en el contexto cient co y tecnol ogico actual ya que provee de herramientas conceptuales u tiles para pensar de manera simplicada los programas concurrentes. Hoy en d a, resulta escasa la oferta de este tipo de herramientas brindada por los lenguajes de programaci on. Como evidencia de este hecho, la dicultad para resolver problemas utilizando monitores con se nalamiento expl cito (construcciones com unmente implementadas en los lenguajes) se ve reejada en la complejidad de la modelizaci on desarrollada en nuestro trabajo: para utilizarlos, el programador debe tener en cuenta el comportamiento operacional no determinista del sistema, propio de esta clase de monitores, a partir de los distintos estados posibles de varias colas de procesos involucradas en su implementaci on. Con la implementaci on de monitores de se nalamiento autom atico propuesta, este problema se elimina sin pagar costos excesivos en eciencia. Con respecto al marco metodol ogico utilizado, cabe se nalar la formalizaci on realizada de sistemas de transiciones y sus transformadores, utilizando l ogica de alto orden dentro del enfoque denominado shallow embedding (secci on 1.1). Esto permiti o no solo denir estructuras que no poseen un car acter claramente recursivo (sistemas de transiciones), sino tambi en, relacionar de manera homog enea aquellos objetos con la teor a de puntos jos (cap tulo 2). Otro aspecto metodol ogico a destacar corresponde al uso conjunto de distintos probadores de teoremas para resolver el problema. Esta perspectiva ya fue investigada en [BNT05] donde se muestra que la combinaci on de herramientas semiautom aticas basadas en l ogica de alto orden (Isabelle/HOL) junto con otras autom aticas sobre un formalismo m as restringido (SMT solvers), facilita el proceso manual de demostraci on1 . En nuestro trabajo se evidencia que, utilizando las estrategias implementadas en las primeras herramientas, se puede lograr esta integraci on para resolver un problema de forma totalmente autom atica.
1 En la versi on actual de Isabelle se incluye la posibilidad de utilizar SMT sovers a la manera de or aculos.

217

218

CAP ITULO 6. CONCLUSIONES Y TRABAJOS FUTUROS

El enfoque utilizado para resolver el problema est a inscripto dentro de la l nea conceptual de la tradici on inaugurada por Dijkstra [Dij76], donde se utiliza la l ogica para construir programas y no solo para vericarlos a posteriori. Nuestro trabajo pone de maniesto la utilidad de los m etodos formales, no solo para vericar programas ya construidos, si no para generarlos a partir de construcciones m as abstractas. De esta manera, las regiones cr ticas condicionales y los monitores de se nalamiento autom atico pueden pensarse como especicaciones de problemas de concurrencia, desde las cuales derivamos implementaciones ecientes utilizando la l ogica. De todos modos, el uso de las t ecnicas desarrolladas en nuestro trabajo estuvo orientado a la optimizaci on de programas. En su aplicaci on se pudo observar que los invariantes generados (los cuales validan las mejoras) son m as fuertes que las condiciones de prueba iniciales (invariantes candidatos). Este fen omeno abre la posibilidad de utilizarlos, no solo para mejorar la eciencia, sino tambi en para comprender y analizar los programas concurrentes. Dentro de esta perspectiva es posible pensar en el desarrollo de una inform atica experimental, donde los m etodos formales, apoyados por demostradores de teoremas y otras herramientas, sirvan para construir programas a partir de su an alisis profundo. Creemos que esto ser au til al momento de reducir los errores conceptuales en los programas concurrentes, lo cual en este aspecto, resulta m as efectivo que la vericaci on a posteriori o la validaci on de caso de test sobre los mismos. Claramente el enfoque propuesto necesita de una mayor intervenci on por parte de los programadores al momento de desarrollar los programas. De todas maneras, debido a la complejidad intr nseca que muestra la programaci on concurrente, este esfuerzo es necesario si se desea obtener niveles de correcci on aceptables. El mismo puede ser menguado con el mejoramiento de entornos de programaci on que vinculen de manera simple los probadores de teoremas a un proceso m as mecanizado de desarrollo de programas. En los cap tulos anteriores se se nalaron algunas l neas de investigaci on futuras espec cas de los temas tratados en esas oportunidades. En los cap tulos 4 y 5 se propone incluir a los m etodos propuestos, t ecnicas de interpretaci on abstracta sobre distintos dominios, analizando tambi en la posibilidad del desarrollo de operadores de narrowing sobre el c alculo del m aximo punto jo en estos dominios. En el cap tulo 5 adem as se menciona como posible trabajo futuro la implementaci on de monitores con se nalamiento autom atico mediante la adaptaci on de la t ecnica de Sem aforos Binarios Divididos. Como se mostr o en aquella oportunidad, los sistemas de transiciones que modelan problemas implementados con esta t ecnica, son de orden de magnitud inferior en tama no a los implementados con monitores. A partir de esta evidencia, creemos que este nuevo problema puede ser resuelto en tiempos de computo menores, permitiendo as escalar la propuesta a programas de mayor tama no. Como ya mencionamos en estas conclusiones y en la secci on 4.9, otra importante l nea de investigaci on es el estudio y desarrollo de entornos integrados de programaci on que incluyan la generaci on autom atica de invariantes como gu a para el desarrollo de programas.

Indice alfab etico


x y7 , 96 X, 5 r s7 , 95 ^, 2
actualizaci on funcional, 9 actualizaci on funcional abstracta, 96 adyacencia, 85 and-continuo, 14 anidado, 35 asignaci on guardada, 10, 22 asignaci on lineal, 94 asignaci on m ultiple, 10 base, 85 base factible, 85 bases adyacentes, 85 bottom, 8 bounded quantication, 3 busy wait, 104, 152 cambio de variable, 35 cara de un poliedro, 85 Card, 2 cilindro, 78 co-cpo, 40 cola de procesos, 154 combinaci on lineal, 77 combinaci on lineal convexa, 77 combinaci on lineal positiva, 77 composici on secuencial, 9 cond, 154 conguraci on, 18, 28 conical hull, 77 conjunto codirigido, 14 conjunto de ndices, 5 conjunto de conguraciones, 28 conjunto de conguraciones iniciales, 18 conjunto de estados alcanzables, 8 conjunto de locaciones, 17 conjunto dirigido, 14 contadores SBD, 108 continuidad, 14 219

B ,P , 54 , 5 , 2, 5 F , , 48 , 2, 5 7 , 68 , 2, 5 Y, 5 _, 2 P 7 , 68 , 5 K, 5, 8 _, 91 |r s|, 2 9 , 95 r s, 9 , 4 x y, 9 L, 17 , 164 , 68 .F , , 48 .B ,P , 53 J, 5 , 7 $, 131 , 71 [-semireticulado, 39 \-semireticulado, 39 [-continua, 42 \-continua, 41 abort, 10 abstracci on, 69 abstracci on de, 69

220 Convex hull, 77 convexo, 75 cpo, 40 cumple, 6 CVC3, 104 deadlock, 108 deep embedding, 1 deniciones locales, 2 describe, 6 desigualdad lineal, 75 dimensi on de la variedad lineal, 78 dimensi on de un poliedro convexo, 78 Disk schedulling, 170, 201 Dom, 2 dominio sem antico abstracto, 68 dominio sem antico concreto, 67 ejecuci on, 29 ejecuci on nita, 28 ejecuci on innita, 29 envoltura c onica, 77 envoltura convexa, 77, 89 envoltura convexa de un marco, 79 equivalente, 7 espacio af n, 78 espacio de estados, 4 espera condicional, 104 estado, 4 estado abierto, 154 estado cerrado, 153 estado/locaci on, 18 estricta, 41 estricto, 13 expresi on cuanticadas, 3 Expresiones booleanas lineales, 93 expresiones existenciales, 7 expresiones universales, 7 falso, 6 forma can onica, 85 forma est andar, 84 forma normal disyuntiva, 94 Fun, 9 funci on de concretizaci on, 68 funci on sem antica abstracta, 69 funci on sem antica concreta, 68 gr aco de transiciones, 20 havoc, 171

INDICE ALFABETICO hiperplano, 78 nmo de poliedros, 89 interpretaci on abstracta, 151 interrumpible, 13, 41, 54 intersecci on de poliedros, 89 invariante, 44, 47 invariante candidato, 47 invariante de problema RCC, 108 invariante del monitor, 160 invariante inductivo, 44 invariante inductivo candidato, 44, 53 juntividad, 13 k -cara, 85 k -inducci on, 61 k -invariante, 62 Knaster, 42 l nea, 78 locaci on auxiliar, 164 locaci on de llegada, 17 locaci on de salida, 17 locaciones iniciales, 18 m as d ebil, 6 m as fuerte, 6 m etodo de base articial, 85 m etodo simplex, 85 m etodos de no-pivoting, 84 m etodos de pivoting, 84 marco, 79 mon otona, 41 mon otono, 13 monitores con se nalamiento autom atico, 151 monitores con se nalamiento expl cito, 151 monoton a, 13 NewPolka, 102 no interrumpible, 13, 41 x Non-Blocking, 155 No Priority Restricted Automatic Signal, 158 no satisface, 6 no satisfactible, 6 nonaborting, 13 NPNB, 155 NPRAS, 158, 160

INDICE ALFABETICO operador de elecci on, 2, 9 operador de widening, 71 or-continuo, 14

221

secci on, 79, 119 sem aforo neutral, 107 sem aforos binarios divididos, 105, 106 sem aforos generales, 107 partici on de rango, 34 sem antica de interleaving, 118 PB, 155 sem antica de trazas, 68 pila, 170 sem antica est andar, 67 poliedro acotado, 78 sem antica operacional, 68 poliedro convexo cerrado, 76 semiespacio cerrado, 75 poliedros convexos, 151 Sent, 8 poliedros convexos cerrados, 74 sentencia determinista, 9 Poly, 76 sentencia lineal, 94 positivamente conjuntiva, 41 sentencia no termina, 8 positivamente conjuntivo, 13, 41 sentencia no termina desde, 8 positivamente disyuntiva, 41 sentencia total, 9 positivamente disyuntivo, 41 sentencias, 8 Pred, 5 shallow embedding, 1, 5, 7, 10, 217 predicado, 5 signal., 154 predicado de un sistema de transicio- Signal and Urgent Wait, 155, 159 nes, 18 Signal and Wait, 154 PredL , 18 signal as hint, 156, 161, 162, 166, 174 Priority Blocking, 155 sincronizaci on de fase, 190 problema del convex hull, 83 sistema de restricciones lineales, 76 proceso activo, 154 sistema de transiciones, 18 Productor/Consumidor, 110 sistemas de transiciones, 1 propagaci on hacia adelante, 48 skip, 10 propagaci on hacia atr as, 54 SMT solver, 103 proyecci on, 80 Standard ML of New Jersey, 102, 137, 184 rango de especicaci on, 3 strongest postcondition, 11, 23 rango unitario, 34 subespacio lineal generado, 77 rango vac o, 34 suposici on, 9, 10 rayo, 77 suposici on abstracta, 95 rayo extremo, 77 suposici on lineal, 94 recta, 78 supremo de poliedros, 89 regiones cr ticas condicionales, 105 regla de intercambio, 36 t ermino de cuanticaci on, 3 regla del domin o, 182 T erminos aritm eticos lineales, 93 regla del t ermino, 34 T erminos booleanos lineales, 93 regla del t ermino constante, 35 Tarski, 42 relaci on de transici on, 28 terminating, 13 rendezvous, 197 TranL,S , 17 transici on entrante, 18 satisface, 6 transici on saliente, 18 satisfactible, 6 transiciones, 17 saturaci on, 83 SBD, 103, 105 universalmente conjuntivo, 14, 41 SBD conjunto, 107 universalmente disyuntivo, 14, 41 SBD t ecnica, 106 scheduler de monitor, 154 v alida, 6

222 v ertice, 77 v ertices adyacentes, 85 variable de cuanticaci on, 3 variables aumentadas, 84 variables de condici on, 154 variables iniciales, 84 variedad lineal, 78 variedad lineal generada, 78 variedad lineal maximal, 78 variedad ortogonal, 78 verdadero, 6 wait., 154 Wait and Notify, 154, 159 weakest liberal precondition, 12, 24 weakest precondition, 12 widening de poliedros, 100 widening est andar, 100

INDICE ALFABETICO

Bibliograf a
[ACL08] [And89] [And91] ACL2 home page. acl2, 2008. 131 http://www.cs.utexas.edu/users/moore/

Gregory R. Andrews. A method for solving synchronization problems. Sci. Comput. Program., 13(1):121, 1989. 104 Gregory R. Andrews. Concurrent programming: principles and practice. Benjamin-Cummings Publishing Co., Inc., Redwood City, CA, USA, 1991. 107, 157, 162, 170, 193, 194, 201 G. Andrews. Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, Reading, Massachusetts, USA, 1999. 107 Krzysztof R. Apt and Ernst-R udiger Olderog. Verication of sequential and concurrent programs (3rd ed.). Springer-Verlag New York, Inc., 1997. 211, 213 Ralph-Johan J. Back, Abo Akademi, and J. Von Wright. Renement Calculus: A Systematic Introduction. Springer-Verlag New York, Inc., Secaucus, NJ, USA, 1998. 1, 2, 3, 5, 8, 10, 13, 16, 21, 42, 43, 183, 186 Dami an Barsotti and Javier O. Blanco. Automatic renement of split binary semaphore. In Cli B. Jones, Zhiming Liu, and Jim Woodcock, editors, Theoretical Aspects of Computing - ICTAC 2007, number 4711 in Lecture Notes in Computer Science, pages 6478. 4th International Colloquium Macao,China, Springer, September 2007. http://www.cs.famaf.unc.edu.ar/~damian/ publications/ictac2007/sbd.pdf. 104, 107 Dami an Barsotti and Javier O. Blanco. Generaci on de invariantes para implementar ecientemente regiones cr ticas condicionales. In Proceedings of CACIC 2007, pages 16901701. XIII Congreso argentino de ciencias de la computaci on, October 2007. http://www.cs. famaf.unc.edu.ar/~damian/publications/cacic2007/ sbd.pdf. 104 Nikolaj Bjorner, Anca Browne, and Zohar Manna. Automatic generation of invariants and intermediate assertions. Theor. Comput. Sci., 173(1):4987, 1997. 47, 64, 102 223

[And99]

[AO97]

[BAW98]

[BB07a]

[BB07b]

[BBM97]

224 [BFC95]

BIBLIOGRAF IA Peter A. Buhr, Michel Fortier, and Michael H. Con. Monitor classication. ACM Comput. Surv., 27(1):63107, 1995. 154, 155, 157, 158, 159, 161, 171 Peter A. Buhr and Ashif S. Harji. Implicit-signal monitors. ACM Trans. Program. Lang. Syst., 27(6):12701343, 2005. 155, 159, 161, 162, 201

[BH05]

[BHRZ03] R. Bagnara, P. M. Hill, E. Ricci, and E. Zaanella. Precise widening operators for convex polyhedra. Quaderno 312, Dipartimento di Matematica, Universit` a di Parma, Italy, 2003. http: //www.cs.unipr.it/Publications/Abstracts/Q312. 100 [Bid07] Natalia Beatriz Bidart. Generaci on autom atica de invariantes lineales. Bachelors Degree thesis, Facultad de Matem atica Astronom a y F sica, Universidad Nacional de C ordoba, 2007. Supervisor Dami an Barsotti. 102 Mokhtar S. Bazaraa, John J. Jarvis, and Hanif D. Sherali. Linear programming and network ows (2nd ed.). John Wiley & Sons, Inc., New York, NY, USA, 1990. 84 Mike Barnett and K. Rustan M. Leino. Weakest-precondition of unstructured programs. In Proceedings of the 6th ACM SIGPLANSIGSOFT workshop on Program analysis for software tools and engineering, PASTE 05, pages 8287, New York, NY, USA, 2005. ACM. 171, 201 Matthias Blume. No-longer-foreign: Teaching an ml compiler to speak c natively. Electr. Notes Theor. Comput. Sci., 59(1), 2001. 186 Dami an Barsotti, Leonor Prensa Nieto, and Alwen Tiu. Verication of clock synchronization algorithms: Experiments on a combination of deductive tools. In Proceedings of AVOCS 2005, volume 145 of ENTCS, pages 6368. Elsevier Science B. V., 2005. http://www. cs.famaf.unc.edu.ar/~damian/publications/clock.pdf. 217 Javier Blanco, Silvina Smith, and Dami an Barsotti. C alculo de programas. Universidad Nacional de C ordoba, 2008. http://www.cs. famaf.unc.edu.ar/~damian/calcprog. 1, 4, 31, 32, 34 Clark Barrett and Cesare Tinelli. CVC3. In Werner Damm and Holger Hermanns, editors, Proceedings of the 19th International Conference on Computer Aided Verication (CAV 07), volume 4590 of Lecture Notes in Computer Science, pages 298302. Springer-Verlag, July 2007. Berlin, Germany. 104 Javier Blanco and Nicol as Wolovick. Strengthen, widen, get semaphores. In WAIT2003, Buenos Aires, Argentina, september 2003. 32 JAIIO. http://www.cs.famaf.unc.edu.ar/~nicolasw/ Publicaciones/strengthenwiden.pdf. 190, 191

[BJS90]

[BL05]

[Blu01]

[BNT05]

[BSB08]

[BT07]

[BW03]

BIBLIOGRAF IA [BW10]

225

Dami an Barsotti and Nicolas Wolovick. Automatic probabilistic program verication through random variable abstraction. In Eighth Workshop on Quantitative Aspects of Programming Languages (QAPL 2010), 2010. 149, 201 Patrick Cousot and Radhia Cousot. Abstract interpretation: A unied lattice model for static analysis of programs by construction or approximation of xpoints. In POPL, pages 238252, 1977. 67 Patrick Cousot and Radhia Cousot. Abstract interpretation frameworks. Journal of Logic and Computation, 2:511547, 1992. 67, 68, 69

[CC77]

[CC92]

[CGJ 00] Edmund Clarke, Orna Grumberg, Somesh Jha, Yuan Lu, and Helmut Veith. Counterexample-guided abstraction renement, 2000. 149, 201 [CH78] P. Cousot and N. Halbwachs. Automatic discovery of linear restraints among variables of a program. In Conference Record of the Fifth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 8497, Tucson, Arizona, 1978. ACM Press, New York, NY. 84, 100 N. V. Chernikova. Algorithm for nding a general formula for the non-negative solutions of system of linear equations. U.S.S.R. Computational Mathematics and Mathematical Physics, 4(4):151 158, 1964. 88 Va sek Chv atal. Linear Programming. A Series of Books in the Mathematical Sciences. Freeman, 1983. 75, 84, 85 Edmund Melson Clarke, Jr. Synthesis of resource invariants for concurrent programs. In Proceedings of the 6th ACM SIGACTSIGPLAN symposium on Principles of programming languages, pages 211221. ACM Press, 1979. 117, 119 Mache Creeger. Multicore CPUs for the masses. ACM Queue, 3(7):64, september 2005. 106, 148 CVC3 home page. 104, 186 http://www.cs.nyu.edu/acsys/cvc3, 2008.

[Che64]

[Chv83] [Cla79]

[Cre05] [CVC08] [DD02]

Satyaki Das and David L. Dill. Counter-example based predicate discovery in predicate abstraction. In In Formal Methods in ComputerAided Design. Springer, 2002. 149, 201 Edsger W. Dijkstra. Cooperating sequential processes. http://www. cs.utexas.edu/users/EWD/ewd01xx/EWD123.PDF, 1968. 144 Edsger W. Dijkstra. A Discipline of Programming. Prentice Hall Series in Automatic Computation. Prentice Hall, 1976. 218 Edsger W. Dijkstra. A tutorial on the split binary semaphore. Circulated privately http://www.cs.utexas.edu/users/EWD/ewd07xx/ EWD703.PDF, March 1979. 103, 105, 107, 117, 119, 144, 201

[Dij68] [Dij76] [Dij79]

226 [Dij80a]

BIBLIOGRAF IA Edsger W. Dijkstra. A notational alternative for quantication. Circulated privately http://www.cs.utexas.edu/users/ EWD/ewd07xx/EWD737.PDF, April 1980. 4 Edsger W. Dijkstra. The superuity of the general semaphore. Circulated privately http://www.cs.utexas.edu/users/EWD/ ewd07xx/EWD734.PDF, April 1980. 107 Edsger W. Dijkstra. The notational conventions i adopted, and why. Circulated privately http://www.cs.utexas.edu/users/ EWD/ewd13xx/EWD1300.PDF, July 2000. 4 Edsger W. Dijkstra. Over seinpalen. Circulated privately http: //www.cs.utexas.edu/users/EWD/ewd00xx/EWD74.PDF, n.d. 106 B. A. Davey and H. A. Priestley. Introduction to Lattices and Order. Cambridge University Press, 1990. 41 Edsger W. Dijkstra and Carel S. Scholten. Predicate calculus and program semantics. Springer-Verlag New York, Inc., 1990. 1, 10, 12, 13, 16, 26, 39, 171 Johan Eker, Jorn W. Janneck, Edward A. Lee, Jie Liu, Xiaojun Liu, Jozsef Ludvig, Stephen Neuendorer, Sonia Sachs, and Yuhong Xiong. Taming heterogeneitythe ptolemy approach. In Proceedings of the IEEE, volume Special Issue on Modeling and Design of Embedded Software, October 2002. 106 Charles Fourier. Oeuvres completes de Ch. Fourier. Paris : Aux Bureaux de la Phalange., 2nd ed. edition, 1841. 81 F. Fernandes and P. Quinton. Extension of chernikovas alghorithm for solving general mixed linear programming problems. Technical Report 437, IRISA, Rennes, France, 1988. 88 W. Wayt Gibbs. Softwares chronic crisis. Scientic American, page 86, September 1994. 106, 148 Nicolas Halbwachs. On the design of widening operators. VMCAI06: 7th International Conference on Verication, Model Checking, and Abstract Interpretation, 2006. Tutorial. 100 Per Brinch Hansen. Structured multiprogramming. Commun. ACM, 15(7):574578, 1972. 105, 152 Per Brinch Hansen. Concurrent programming concepts. ACM Comput. Surv., 5:223245, December 1973. 152 Per Brinch Hansen. Operating system principles. Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 1973. 161 Per Brinch Hansen. The design of edison. Softw., Pract. Exper., 11(4):363396, 1981. 160, 161

[Dij80b]

[Dij00]

[Dijnd] [DP90] [DS90]

[EJL 02]

[Fou41] [FQ88]

[Gib94] [Hal06]

[Han72] [Han73a] [Han73b] [Han81]

BIBLIOGRAF IA [Hoa72]

227

C.A.R. Hoare. Towards a theory of parallel programming. In C.A.R. Hoare and R.H. Perrott, editors, Operating System Techniques, pages 6171. Academic Press, 1972. 105 C. A. R. Hoare. Monitors: An operating system structuring concept. Commun. ACM, 17(10):549557, 1974. 105, 117, 152, 157, 161, 201 Rob Hoogerwoord. Split binary semaphores. Manuscript RH86, 1986. 107 Rob Hoogerwoord. Two applications of the split binary semaphore. Course notes RH221, 1990. 107, 111 N. Halbwachs, Y.E. Proy, and P. Roumano. Verication of realtime systems using linear relation analysis. Formal Methods in System Design, 11(2), August 1997. 89, 186 Bertrand Jeannet. The POLKA Convex Polyhedra library, 2.1.0 edition, June 2005. 102 H. W. Kuhn. Solvability and consistency for linear equations and inequalities. American Mathematical Monthly, 63:217232, 1956. 81 E. Lanery. Recherche dun syst` eme g en erateur minimal dun polyhedre convexe, 1966. Th` ese de 3` eme cycle. 83, 84, 85, 87 Edward A. Lee. The problem with threads. Technical Report UCB/EECS-2006-1, EECS Department, University of California, Berkeley, January 10 2006. 106, 148 Butler W. Lampson and David D. Redell. Experience with processes and monitors in mesa. Commun. ACM, 23:105117, February 1980. 156 Annabelle McIver and Carroll Morgan. Abstraction, Renement And Proof For Probabilistic Systems (Monographs in Computer Science). SpringerVerlag, 2004. 8 D. Monniaux. Abstract interpretation of probabilistic semantics. In Jens Palsberg, editor, SAS, volume 1824 of Lecture Notes in Computer Science, pages 322339. Springer, 2000. 69 T. S. Motzkin. Beitr age zur Theorie der Linearen Ungleichungen. PhD thesis, Berlin, 1936. 81 Zohar Manna and Amir Pnueli. On the faithfulness of formal models. In Mathematical Foundations of Computer Science, pages 2842, 1991. 118, 120 M.W. Mislove, A.W. Roscoe, and S.A. Schneider. Fixed points without completeness. Theoretical Computer Science, 138:1382, 1993. 41, 43

[Hoa74]

[Hoo86]

[Hoo90]

[HPR97]

[Jea05]

[Kuh56]

[Lan66]

[Lee06]

[LR80]

[MM04]

[Mon00]

[Mot36]

[MP91]

[MRS93]

228

BIBLIOGRAF IA

[MRTT53] T. S. Motzkin, H. Raia, G. L. Thompson, and R. M. Thrall. The double description method. In H. W. Kuhn and A. W. Tucker, editors, Contributions to the Theory of Games Volume II, number 28 in Annals of Mathematics Studies, pages 5173. Princeton University Press, Princeton, New Jersey, 1953. 88 [MvdS89] A.J. Martin and J.L.A. van de Snepscheut. Design of synchronization algorithms. Constructive Methods in Computing Science, pages 445478, 1989. 107 [NPN99] Tobias Nipkow and Leonor Prensa-Nieto. Owicki/Gries in Isabelle/HOL. In J.-P. Finance, editor, Fundamental Approaches to Software Engineering (FASE99), volume 1577 of LNCS, pages 188203. Springer, 1999. 1 Susan S. Owicki and David Gries. An axiomatic proof technique for parallel programs i. Acta Inf., 6:319340, 1976. 190 Lawrence C. Paulson. Isabelle, A Generic Theorem Prover, volume 828 of LNCS. Springer-Verlag, 1994. 104, 186 Hans Albrecht Schmid. On the ecient implementation of conditional critical regions and the construction of monitors. Acta Informatica, 6(3):227249, August 1976. 117, 118, 143, 161 Fred B. Schneider. On Concurrent Programming. Graduate texts in computer science. Springer-Verlag New York, Inc., 1997. 107 Standard ML of New Jersey home page. http://www.smlnj.org/, 2006. 102, 138, 184 The Polylib Team. Polylib Users Manual, September 26 2002. 89

[OG76] [Pau94] [Sch76]

[Sch97] [Sta06] [Tea02]

[TRSS01] A. Tiwari, H. Rue, H. Sa di, and N. Shankar. A technique for invariant generation. In Tiziana Margaria and Wang Yi, editors, TACAS 2001 - Tools and Algorithms for the Construction and Analysis of Systems, volume 2031, pages 113127, Genova, Italy, April 2001. Springer-Verlag. 64 [Ver92] [Wil93] H. Le Verge. A note on chernikovas algorithm. Publication interne 635, IRISA, Campus de Beaulieu, Rennes, France, July 27 1992. 88 Doran K. Wilde. A library for doing polyhedral operations. Publication interne 785, IRISA, Campus de Beaulieu, Rennes, France, December 1993. 89 Yices home page. http://yices.csl.sri.com, 2008. 104

[yic08]

Das könnte Ihnen auch gefallen