ejemplos anteriores) denotaremos un predicado elPredL como una lista de pre- dicados (enPred) donde cada posici´on contendr´a su valor en cada locaci´on. As´ı, en el ejemplo1.15el conjunto de estados iniciales ser´a: Θ r. N ¥0,false,falses. Claramente las operaciones enPredL pueden ser instrumentadas aplicando pun- to a punto las definidas enPredsobre cada elemento de estas listas.
1.6.1
Strongest postcondition
Dado un sistema de transicionesTS p. L,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 yPara 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 configuraciones (estados/locaciones) alcanzables mediante un paso de ejecuci´on del programa desde las configuraciones del predicado par´ametro.
Ejemplo 1.17
Sea el sistema de transiciones correspondiente al programa 1.1(grafo de tran- siciones 1.1). Calcularemos el resultado de este transformador con respecto al estado inicial Θ r. N ¥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 transicionescuya locaci´on de llegada seal0; esto es
τ
.l.s.l0para todol ys. Por lo tanto eltransformador enl0 es el supremo con rango vac´ıo:
SP.
τ
.Θ.l0falseLa locaci´onl1 tiene dos transiciones entrantes: una parte del0 y otra del1.
En estas locaciones Θ valeN ¥0 y falserespectivamente. Para esta ´ultima el transformador sp dentro del supremo devuelvefalseya 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 ¥0y.σ1
{ Definici´on de sp}
x Dσ :σ.N ¥0 : σrnÞÑ0s σ1y
{ Actualizaci´on deσy separaci´on de t´ermino}
x Dσ :σ.N ¥0 :
σ1.n0^σ1.N σ.N ^ x @vPVar :vn^vN : σ.vσ1.vy y
{ Intercambio, l´ogica, distributividad}
σ1.N ¥0^σ1.n0^
24 CAP´ITULO 1. SISTEMAS DE TRANSICIONES {Instanciaci´onσporσ1 }
σ1.N ¥0^σ1.n0 .
Por lo tanto
sp.pn:0q.pN ¥0q N¥0^n0
y este resultado ser´a el mismo que el del transformador SP en la locaci´onl1 :
SP.
τ
.Θ.l1N ¥0^n0 .La locaci´on l2 tiene solo una transici´on entrante desdel1. Pero como Θ es
falso en l1 y sp es estricto obtenemos:
SP.
τ
.Θ.l2false .El resultado final de aplicar el transformador ser´a entonces SP.
τ
.Θ rfalse, N¥0^n0,falsesel cual muestra que los estados alcanzables desde los estados iniciales en Θ despu´es de un paso de ejecuci´on del programa est´an ´unicamente 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^n0u don 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 ÑPredLÑPredL
WLP.
τ
.Q.l x. l1, s :τ
.l.s.l1: wlp.s.pQ.l1q yEl mismo en cada locaci´on devuelve la intersecci´on (´ınfimo) 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 configuraciones (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 configuraci´on perteneciente aQ.
1.6. TRANSFORMADORES DE PREDICADOS EN ST 25 Ejemplo 1.18
Consideremos el programa 1.5junto con su grafo de transiciones. En el mismo se ha anotado el final del programa (locaci´onl3) con la poscondici´onq.
Programa 1.5 l0: if b0ÞÑ l1: s0 b1ÞÑ l2: s1 fi l3: tqu l0 l1 l2 l3 tqu rb0s rb1s s0 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 al3 debe cumplirq.
Este resultado puede ser obtenido aplicando el transformador WLP al predicado
Q r. true,true,true, qs.
Sea
τ
el sistema de transiciones descripto por el grafo del programa 1.5. Calcularemos el resultado del transformador en cada locaci´on. Desdel0solo haydos transiciones salientes hacia l1 y l2 por lo que el c´alculo del ´ınfimo de la
definici´on de WLP se reduce al c´alculo de una intersecci´on: WLP.
τ
.Q.l0{ Definici´on deQ}
WLP.
τ
.rtrue,true,true, qs.l0{ Definici´on de WLP}
wlp.rb0s.true X wlp.rb1s.true
{ wlp es no interrumpible}
true
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). Desdel3
no hay transiciones salientes por lo que el ´ınfimo estrue(Jdel reticuladoPred). El resultado final ser´a:
WLP.
τ
.rtrue,true,true, qs 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 deq, entonces si parti´o del1 lo hizo desde un estado en wlp.s0.q,
o si parti´o del2lo 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 ´
ultimo resultado y teniendo en cuenta que wlp.rbs.qbñqobtenemos: WLP.
τ
.rtrue,wlp.s0.q,wlp.s1.q,trues26 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,truesLa interpretaci´on de este resultado es la siguiente: si despu´es de dos pasos de ejecuci´on el programa llega al3 en un estado de q, entonces si parti´o del0
lo hizo desde un estado enb0ñ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.
τ
ypWLP.τ
q2 podemos realizar las anota-ciones en el siguiente programa: Programa 1.6 l0: tb0ñwlp.s0.q X b1ñwlp.s1.qu if b0ÞÑ l1: twlp.s0.qu s0 b1ÞÑ l2: twlp.s1.qu s1 fi l3: tqu l
1.6.3
Propiedades de los transformadores
En la secci´on1.4.3se definieron 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 propie- dades fueron definidas en el reticuladoPredpero, 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 transicionesTS p. L,S,
τ
,Θq• SP.
τ
es universalmente disyuntivo:SP.
τ
.x i :I.i: P.iy x i :I.i: SP.τ
.pP.iq ypara todo conjunto de ´ındicesI Γ y para todoP : ΓÑPredL. Por lo tanto es estricto (SP.
τ
.False False).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 teorema1.11se deduce que SP es tambi´en or-continuo y mon´otono.
1.6. TRANSFORMADORES DE PREDICADOS EN ST 27
• WLP.
τ
es universalmente conjuntivo:WLP.
τ
.x i :I.i: P.iy xi :I.i: WLP.τ
.pP.iq ypara todo conjunto de ´ındicesI Γ y para todoP : ΓÑPredL. Por lo tanto es no interrumpible (WLP.
τ
.True True).Esta propiedad indica que el transformador WLP es distributivo con res- pecto a intersecciones arbitrarias de elementos enPredL. Con esta propie- dad y la jerarqu´ıa dada en el teorema1.11se 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 definir este concepto en el marco de los sistemas de transiciones. Definici´on 1.20 (Determinismo)
Un sistema de transiciones TS p. L,S,
τ
,Θqser´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, l1qypl,s,˜ ˜lqse cumpleDom.sXDom.s˜ H.Propiedades 1.21 (SP y WLP deterministas) Dado un sistema de transicionesTS p. L,S,
τ
,Θq• SiTSes determinista, el transformador SP.
τ
es positivamente conjuntivo.• Si TSes determinista, WLP.
τ
es positivamente disyuntivo. lTodas estas propiedades pueden ser demostradas utilizando las propieda- des1.12y la definici´on de los transformadores.
A partir del ejemplo1.18puede vislumbrarse que las 3-uplas de Hoare pue- den extenderse a sistemas de transiciones. Por ejemplo la proposici´ontΘu
τ
tQupuede interpretarse como Θ WLP.
τ
.Q . Al igual que con sp es posible uti- lizar el transformador SP para denotar esta misma proposici´on:Propiedad 1.22 (SP WLP equivalencia)
Para todo sistema de transiciones TS p. L,S,
τ
,Θq y predicados P, Q se cumple:P WLP.
τ
.Q SP.τ
.P Q . lDe aqu´ı en adelante usaremos la notaci´ontPu
τ
tQupara indicar las condiciones booleanasP WLP.τ
.Qo SP.τ
.P Qindistintamente.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 p. L,S,
τ
,Θq, definimos la inversa del conjunto de transicionesτ
como28 CAP´ITULO 1. SISTEMAS DE TRANSICIONES para todo l, l1 PL ys PS (de forma intuitivamente el grafo de
τ
1 tiene los mismos nodos queτ
, con las flechas en direcci´on opuesta y con las sentencias inversas).Entonces se cumple:
SP.
τ
.P pWLP.τ
1. Pq . lLa demostraci´on es directa por la propiedad1.14y la definici´on de los trans- formadores.