análisis de especificaciones z. análisis la idea es verificar propiedades a partir de la...
TRANSCRIPT
![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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/18.jpg)
• 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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/19.jpg)
Ö 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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.pub/reader036/viewer/2022062519/5665b4971a28abb57c927581/html5/thumbnails/24.jpg)
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