Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la...

24
Análisis de especificaciones Z

Transcript of Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la...

Page 1: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

Análisis de especificaciones Z

Page 2: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

Análisis

• La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas en realidad no lo son.

• Existen ciertas verificaciones estándar y otras que dependen de cada especificación o del lenguaje utilizado o del interés del desarrollador.

• También, algunos teoremas pueden usarse como documentación de ciertas propiedades del modelo que de otra forma quedarían implícitas.

Page 3: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

El teorema de inicialización

• Si la especificación es consistente el estado inicial debe satisfacer el invariante de estado:

Ö SystemState × InitSystem

Ö Editor × Init Ö left, right: TEXT | #(leftÊright) ã maxsize × left =

right = ÏÐ Ö left, right: TEXT × #(leftÊright) ã maxsize Ù left =

right = ÏÐ#(ÏÐ Ê ÏÐ) ã maxsize

0 ã maxsize

Page 4: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

En Z/EVES

theorem EditorInit

Editor Init

proof of EditorInit

prove by reduce maxsize 0 true

Este comando aplica una combinación usual de otros comandos de prueba (prenex, rearrange, equality substitution y reduce), hasta que la prueba finaliza (true) o no hay más progreso.

No puede probarse pues maxsize fue definido en una definición axiomática como un natural y Z/EVES sabe muy poco de los naturales como para deducir automáticamente esta desigualdad; Z/EVES sabe mucho de los enteros.

Page 5: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

proof of EditorInitinvoke Editor left seq CHAR

right seq CHAR # left right maxsize left = right right =

rewrite Editor[left := right := ] 0 maxsize

invoke seq CHAR seq CHAR # maxsize 0 maxsize

reduce 0 maxsize true

use maxsize$declaration maxsize 0 maxsize

invoke maxsize n: n 0 0 maxsize

reduce true

Una prueba más detallada de EditorInit

Page 6: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

theorem grule maxsizeBound //regla de suposición

0 maxsize

proof of maxsizeBound

use maxsize$declaration if maxsize then 0 maxsize else true

invoke if maxsize n: n 0then 0 maxsizeelse true

reduce true

theorem EditorInitEditor Init

proof of EditorInitprove by reduce true

Otra prueba de EditorInit

Page 7: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

invoke name

• Si name es el nombre de un esquema o el nombre de un término introducido en una definición, todas las apariciones del nombre en el gol actual son reemplazadas por su definición.

• Si no se especifica ningún nombre todos los nombres de definiciones y esquemas son invocados.

• invoke predicate name

Page 8: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

rewrite

• Al re-escribir, Z/EVES simplifica y aplica reglas de re-escritura siempre que sea posible.

• Una regla de re-escritura es un teorema de la forma Condición Patrón = Reemplazo.

• El toolkit de Z está lleno de reglas de re-escritura:

theorem disabled rule capSubsetLeft[X]

S [X] T S T = S

theorem rule eqTuple2

(x,y) = (x',y') x = x' y = y’

Enteros, igualdad, lógica proposicional,

tautologías

Page 9: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

apply theorem-name

• Las reglas de re-escritura pueden aplicarse mediante el comando apply o seleccionando una expresión, pulsando el botón derecho del mouse y examinando la opción “Apply to expresion”.

• Las reglas habilitadas son aplicadas automática-mente por el asistente de pruebas.

Page 10: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

reduce

• Al reducir, Z/EVES simplifica y re-escribe, y si una subfórmula es un esquema o el nombre de una abreviatura, la subfórmula será reemplazada por la definición y el resultado será reducido nuevamente.

Page 11: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

use theorem-name ···

• La sintaxis más general es algo compleja pues se deben instanciar los parámetros y variables del teorema a ser usado.

• Por ejemplo si tenemos:

theorem rule inDom [X, Y]

R: X Y x dom R ( y: Y (x, y) R)

y estamos probando un teorema sobre f: use inDom [, ] [R:=f]

Page 12: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

use theorem-name ··· (2)

• El teorema usado es agregado como hipótesis del gol actual de manera que los comandos simplify, reduce o rewrite lo usarán para hacer avanzar la prueba.

• Si el gol, Q, no es una implicación entonces “use A” lo transforma en A Q.

• Si el gol es la implicación P Q, entonces “use A” lo transforma en A P Q.

Page 13: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

Errores de dominio

• El sistema de tipos de Z no es tan poderoso como para garantizar que todas las expresiones sean significativas.– 1 div 0, max , # , etc.

• Por este motivo, Z/EVES verifica cada párrafo y determina si es necesaria una comprobación de dominio, en cuyo caso plantea una obligación de prueba que debe ser descargada.

Page 14: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

Ejemplo

Ejemplof: z: f z 5

EjemploCorrf: z: z dom f f z 5

proof of Ejemplo$domainCheckf z z dom f

Es imposible de probar.

proof of Ejemplo$domainCheckf z z dom f z dom f

Se pueba facilmente con simplify

La mayoría de las obligaciones de prueba provienen de expresiones donde intervienen aplicaciones de

funciones parciales

Page 15: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

Satisfacción de esquemas

• Un error posible es definir un esquema cuyo predicado sea (siempre) falso, es decir un esquema insatisfacible.

• Para evitar ese error, se debe probar:

Ö Schema; Inputs? × true• Si el esquema erróneo corresponde:

– al estado, entonces el sistema es imposible;– a una operación, entonces esta nunca puede ser invocada

exitosamente.

Page 16: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

Ascensor sentido: SENTIDOSpuerta: ESTPUERTAsentido Parado puerta = Cerrada

AbrirPuertaAscensorsentido = Arribapuerta = Cerradapuerta' = Abiertasentido' = sentidotheorem AbrirPuertaInsat

AbrirPuerta trueproof of AbrirPuertaInsat instantiate sentido Arriba, AbrirPuerta[puerta := Cerrada, puerta Cerrada, puerta' := Abierta, sentido := Arriba, sentido' Arriba, sentido' := Arriba] puerta' Abierta AbrirPuerta true

invoke Arriba Parado Abierta = Cerrada

Instancia variables cuantificadas existencialmente con valores constantes ya definidos.

Page 17: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

Cálculo de precondiciones

• La precondición de una operación es un predicado que describe todos los estados de partida en los que la operación está definida.

• Así, la precondición sólo contiene variables de estado no primadas y variables de entrada.

• La precondición de una operación es:

SystemState’; Outputs! Op

o en Z/EVES,

SystemState; Inputs? pre Op

Page 18: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

• Es conveniente documentar la precondición, P, de cada operación:

SystemState; Inputs? | P pre OpFDoc miembros: DNI NAMEprohibidos: DNIprohibidos dom miembros

AddMemberFDoccandidato?: NAMEdoc!: DNIcandidato? ran miembrosdoc! dom miembrosmiembros' = miembros doc! Πcandidato?prohibidos' = prohibidos

Page 19: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

Ö Fdoc’; doc!: DOC × AddMember

Ö miembros’:DOC « PERSONAS; prohibidos’:¡DOC; doc!:DOC ×

prohibidos’ º dom miembros’ Ù candidato? ´ ran miembros Ù

doc! ´ dom miembros Ù prohibidos’ = prohibidos Ùmiembros’ = miembros ¼ {doc! § candidato?}

Ö doc!: DOC × [Regla One-point con miembros’ y prohibidos’]

prohibidos º dom miembros ¼ {doc! § candidato?} Ù candidato? ´ ran miembros Ù doc! ´ dom miembros

Ö doc!: DOC × [Fdoc asegura que prohibidos º dom miembros]

candidato? ´ ran miembros Ù doc! ´ dom miembros

candidato? ´ ran miembros Ù Ö doc!: DOC × doc! ´ dom miembros

candidato? ´ ran miembros Ù dom miembros µ DOC

Page 20: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

En Z/EVEStheorem AddMemberPre FDoc; candidato?: NAME pre AddMember

proof of AddMemberPre prove by reduce tipos doc!: DNI miembros doc! candidato? DNI NAME

candidato? ran miembros doc! dom miembros

apply cupInPinj un predicado muy largo

prove tipos doc!: DNI candidato? ran miembros

doc! dom miembros

Page 21: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

Propiedades de un modelo

• Estas propiedades pueden haberse establecido en los requerimientos informales o pueden ser puntos clave de la especificación.

BanMemberFDocmem?: DNImem? dom miembrosprohibidos' = prohibidos mem?miembros' = miembros

Page 22: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

BanMember | proh? ³ prohibidos ôFdoc

óFdoc; proh?: ID |proh? ³ dom miembrosprohibidos’ = prohibidos ¼ {proh?}miembros’ = miembros Ù proh? ³ prohibidos

ôFdoc

óFdoc; proh?: ID |proh? ³ dom miembrosprohibidos’ = prohibidos ¼ {proh?}miembros’ = miembros Ù proh? ³ prohibidos

miembros’ = miembros Ù prohibidos’ = prohibidos

¿AddMember candidato? ´ miembrosÓprohibidosÔ?

Page 23: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

En Z/EVES

theorem YaEstaProhibido mem?: DNI BanMember mem? prohibidos FDocproof of YaEstaProhibido prove by reduce ... mem? prohibidos

prohibidos' = prohibidos mem? prohibidos = prohibidos mem? apply cupSubsetRight to expression prohibidos mem?

... mem? prohibidos prohibidos' = if mem? prohibidos

then prohibidos else prohibidos mem? prohibidos = if mem? prohibidos

then prohibidos else prohibidos mem?

prove true

Page 24: Análisis de especificaciones Z. Análisis La idea es verificar propiedades a partir de la especificación o descubrir que propiedades que se creían válidas.

Rage against the machine

The teacher stands in front of the classBut the lesson plan he cant’t recallThe student’s eyes don’t perceive the liesBouncing off every fucking wallHis composture is well keptI guess he fears playing the foolThe complacent students sit and listen to theBullshit that he learned in school

FIN