Tema 8

350 views
285 views

Published on

Transparencias que introducen el concepto de verificación de programas en un curso de matemáticas (4º)

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
350
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tema 8

  1. 1. Tema 8: Verificaci´n de o programas.Tema 8: Verificaci´n de programas. o Introducci´n o Joaqu´ Borrego ın Introducci´n o D´ıaz Ciencias de la Computaci´n 2012-13 o Outline Motivaci´n o Definiendo la correcci´n o Formalismos y problemas Sem´ntica y a programaci´n o Ejemplos Programas no verificables Joaqu´ Borrego D´ ın ıaz Depto. de Ciencias de la Computaci´n o
  2. 2. Tema 8: Verificaci´n de o programas.Motivaci´n o Introducci´n o Joaqu´ Borrego ın D´ıazDefiniendo la correcci´n o Outline Motivaci´n o Definiendo la correcci´n oFormalismos y problemas Formalismos y problemas Sem´ntica y a programaci´n oSem´ntica y programaci´n a o Ejemplos Programas no verificablesEjemplosProgramas no verificables
  3. 3. Tema 8:Motivaci´n o Verificaci´n de o programas. Introducci´n o Objetivo: Matematizar, el problema de la correcci´n, o Joaqu´ Borrego ın para poder obtener una soluci´n mecanizada o D´ıaz Primera formalizaci´n: Descripci´n del problema X (E : o o Outline entradas, S: salidas): Motivaci´n o Descripci´n funcional: fX : E → S o Definiendo la correcci´n o Descripci´n relacional RX ⊆ E × S o Formalismos y Programa en un modelo de computaci´n, modo o problemas determinista: Produce funciones Sem´ntica y a programaci´n o Ejemplos p → fp Programas no verificables Programa en un modelo de computaci´n, modo no o determinista: Produce relaciones entre estados, fp ⊆ E × P(S)
  4. 4. Tema 8:Dos cuestiones Verificaci´n de o programas. Introducci´n o Correcci´n parcial: o Joaqu´ Borrego ın En la descripci´n funcional (modo determinista) o D´ıaz Outline ∀x ∈ E [fp (x) ↓=⇒ fp (x) = fX (x)] Motivaci´n o En la descripci´n relacional (modo no determinista) o Definiendo la correcci´n o Formalismos y ∀x ∈ E [fp (x) ↓=⇒ ∀y ∈ fp (x) [xRX y ]] problemas Sem´ntica y a Parada: programaci´n o Modo determinista, ∀x ∈ E [ fp (x) ↓] Ejemplos Modo no determinista, condici´n fuerte: o Programas no verificables ∀x ∈ E [{↑} ∈ fp (x)] / Modo no determinista, condici´n d´bil: o e ∀x ∈ E [{↓} ∈ fp (x)]
  5. 5. Tema 8:Limitaciones computacionales: Irresolubilidad Verificaci´n de o programas.algor´ ıtmica Introducci´n o Joaqu´ Borrego ın D´ıaz Correcci´n parcial: dada f computable, o Outline {p ∈ Programas : fp ⊆ f } Motivaci´n o Definiendo la correcci´n o no es recursivo (ni siquiera recursivamente enumerable) Formalismos y Parada: problemas Sem´ntica y a programaci´n o {p ∈ Programas : ∀x ∈ N fp (x) ↓} Ejemplos Programas no no es recursivo (ni recursivamente enumerable) verificables Consecuencia: s´lo podemos esperar obtener o procedimientos de semidecisi´n y parciales o
  6. 6. Tema 8:Especificaci´n de un problema o Verificaci´n de o programas. Introducci´n o Especificaci´n: colecci´n de criterios que, si lo o o Joaqu´ Borrego ın satisface el programa, lo calificamos de correcto D´ıaz Se necesita un lenguaje de especificaci´n o Outline Motivaci´n o Calidad de la especificaci´n: o Definiendo la Mayor abstracci´n posible (evitamos manejar o correcci´n o propiedades de la m´quina donde se ejecuta) a Formalismos y problemas Grado de detalle de la especificaci´n: o Sem´ntica y a programaci´n o + detalle =⇒ − manejable; − detalle =⇒ + manejable Ejemplos (inconveniente: p´rdida de informaci´n, especificaci´n incorrecta) e o o Programas no verificables Cuestiones acerca de las especificaciones: ¿Completa? ¿Aplicable? ¿Consistente? Calidad de la implementaci´n: correcci´n con o o respecto a requerimientos, etc.
  7. 7. Tema 8:Representaci´n o Verificaci´n de o programas. Introducci´n o Formalismos internos (p.e. la l´gica de Hoare) o Joaqu´ Borrego ın D´ıaz Analizan el comportamiento de instrucciones Outline Formalismos externos (p.e. la l´gica temporal) o Motivaci´n o Analizan el efecto de la ejecuci´n de m´dulos del o o Definiendo la sistema sobre el estado actual correcci´n o Formalismos y Problemas de la representaci´n: o problemas ¿Podemos asegurar que la especificaci´n expresa o Sem´ntica y a programaci´n o correctamente la intenci´n intuitiva? o ¿Cu´l es el grado de especificaci´n aceptable? a o Ejemplos ¿Se pueden especificar cualquier tipo de sistemas? Programas no verificables
  8. 8. Tema 8:Tres enfoques Verificaci´n de o programas. Introducci´n o Teor´ Prueba = correcci´n ıa: o Joaqu´ Borrego ın D´ıaz Desarrollo matem´tico a Outline Cient´ ıfico correcci´n experimental o Motivaci´n o Estudio matematizado de la relaci´n entrada/salida o Definiendo la correcci´n o Ingenier´ Dise˜o de sistemas correctos ıa: n Formalismos y Programar a partir de la especificaci´n o problemas Sem´ntica y a programaci´n o Ejemplos Programas no verificables
  9. 9. Tema 8:Enfoque te´rico o Verificaci´n de o programas. Introducci´n o Idea: seguir en la verificaci´n de programas el m´todo o e Joaqu´ Borrego ın deductivo matem´tico, a D´ıaz Programar = Demostrar Outline Motivaci´n o Aproximaci´n debida a R. Floyd y C.A.R. Hoare: o Definiendo la Programaci´n o Matem´ticas a correcci´n o Leng. de programaci´n o Leng. Matem´tico a Formalismos y problemas Propiedades de instr. b´sicas a Axiomas Sem´ntica y a Especificaci´n o Teorema programaci´n o Ejemplos Formalizaci´n (sintaxis): o Programas no Lenguaje preciso de programaci´n o verificables Especificaci´n de las propiedades (L´gica) o o Sem´ntica: a Sem´ntica de los formalismos matem´ticos a a Expresi´n de la correcci´n o o
  10. 10. Tema 8:Enfoque cient´ ıfico-emp´ ırico Verificaci´n de o programas. Introducci´n o Descubrir errores mediante un gran n´mero de u Joaqu´ Borrego ın ejemplos-tests, una vez que se ha dise˜ado el n D´ıaz sistema Outline Desventajas: Motivaci´n o No garantiza la ausencia de errores (errores no Definiendo la correcci´n o descubiertos mediante tests) Formalismos y No es eficiente: es necesario generar muchos tests problemas Una vez construido el sistema, se hacen adaptaciones Sem´ntica y a programaci´n o para resolver los nuevos errores, lo que lo hace m´s a complejo Ejemplos Programas no Conclusi´n: o verificables El testeo puede ser un m´todo muy efectivo para e mostrar la presencia de errores, pero es completamente inadecuado para justificar la ausencia de ´stos e (E. Dijkstra) Siempre existe un error m´s a
  11. 11. Tema 8:Enfoque Cient´ ıfico/Ingenier´ ıa Verificaci´n de o programas. Introducci´n o Revisar junto a dise˜ar n Joaqu´ Borrego ın Producir software integrando los procesos de D´ıaz salvaguardia y calidad Outline Coste econ´mico m´s reducido o a Motivaci´n o Software m´s seguro a Definiendo la correcci´n o Inconveniente: complejidad formal Formalismos y Soluci´n: Mecanizar la verificaci´n o o problemas Sem´ntica y a Consecuencia: Es necesario dise˜ar sistemas de n programaci´n o verificaci´n autom´tica o a Ejemplos Programas no verificables
  12. 12. Tema 8:Programaci´n verificable o Verificaci´n de o programas. Introducci´n o Joaqu´ Borrego ın D´ıaz Outline Motivaci´n o Definiendo la correcci´n o Formalismos y problemas Sem´ntica y a programaci´n o Ejemplos Programas no verificables
  13. 13. Tema 8:Sem´ntica a Verificaci´n de o programas. Introducci´n o Lenguaje de programaci´n: Lenguaje para la o Joaqu´ Borrego ın descripci´n de procesos din´micos (variables en el o a D´ıaz tiempo), relacionados con la noci´n de ejecuci´n por o o Outline una m´quina a Motivaci´n o Sem´ntica de los lenguajes: a Definiendo la correcci´n o Sem´ntica operacional: asociada a la descripci´n a o Formalismos y funcional problemas Sem´ntica relacional: asociada a la descripci´n a o Sem´ntica y a programaci´n o relacional Ejemplos Otros... Programas no Necesitamos Reglas que describen la correspondencia verificables entre programas y especificaciones
  14. 14. Tema 8:Problemas relacionados Verificaci´n de o programas. Introducci´n o S´ ıntesis: Dada ϕ especificaci´n, construir un programa o Joaqu´ Borrego ın p correcto seg´n ϕ (satisface ϕ) u D´ıaz An´lisis: Dado p, construir la especificaci´n a o Outline demostrable m´s adecuada para describir su a Motivaci´n o comportamiento Definiendo la correcci´n o Verificaci´n de propiedades: Dados p y ϕ, ¿p o Formalismos y problemas satisface ϕ? Sem´ntica y a Equivalencia: Dados p y p y una especificaci´n ϕ, o programaci´n o Ejemplos ¿Son p y p equivalentes seg´n ϕ? u Programas no verificables Optimizaci´n: Dado p, dise˜ar un programa o n equivalente mejor, seg´n cierta medida de complejidad u Depuraci´n: Dado p que no satisface ϕ, modificar p o para satisfacer ϕ
  15. 15. Tema 8:Observaciones Verificaci´n de o programas. Introducci´n o Son problemas indecidibles, en general Joaqu´ Borrego ın D´ıaz No estudiaremos eficiencia Herramientas fundamentales: Outline Motivaci´n o Inducci´n computacional (sobre la ejecuci´n) o o Definiendo la correcci´n o Inducci´n estructural (sobre la sintaxis de o Formalismos y programas/especificaciones) problemas Dos situaciones de partida: Sem´ntica y a programaci´n o Caso a posteriori Ejemplos Caso constructivo: construir el programa junto con la Programas no especificaci´n. o verificables
  16. 16. Tema 8:Correcci´n constructiva versus a posteriori o Verificaci´n de o programas. Introducci´n oAlgoritmo cl´sico A1 de la multiplicaci´n a o Joaqu´ Borrego ın D´ıaz Funci´n mult1 (x, y ) o si y = 0 entonces devolver 0 Outline si no Motivaci´n o i ←x Definiendo la j ←y correcci´n o mientras j > 1 hacer Formalismos y i ←i +x problemas j ←j −1 Sem´ntica y a devolver i programaci´n oViene de que la aplicaci´n f caracterizada por o Ejemplos Programas no 1. f (x, 0) = 0, ∀x ∈ N. verificables 2. f (x, y + 1) = f (x, y ) + x, ∀x, y ∈ N.define el producto de dos n´meros naturales. A1 es ucorrecto, ya que ha sido dise˜ado mediante una definici´n n o“constructiva” de f .
  17. 17. Tema 8: Multiplicaci´n rusa o Verificaci´n de o programas. Introducci´n o Joaqu´ Borrego ın D´ıazFunci´n mult2 (x, y ) o Vector A, B Outline si x = 0 entonces devolver 0 Motivaci´n o si x = 1 entonces devolver y Definiendo la si no Para x = 52 e y = 27 correcci´n o A[1] ← x ; B[1] ← y 52 27 Formalismos y i ←1 problemas 26 54 mientras A[i] > 1 hacer → 13 108 Sem´ntica y a A[i + 1] ← A[i]div2 programaci´n o B[i + 1] ← B[i] + B[i] 6 216 Ejemplos i ←i +1 → 3 432 prod ← 0 → 1 864 Programas no verificables i ←i −1 mientras i > 0 hacer 52 · 27 = 108 + 432 + 864 = si A[i] = A[i]div2 + A[i]div2 entonces = 1404 prod ← prod + B[i] i ←i −1 devolver prod
  18. 18. Tema 8:Correcci´n parcial o Verificaci´n de o programas. Introducci´n oTeorema: Si A2 para sobre (x, y ) ∈ N × N, entonces Joaqu´ Borrego ındevuelve x · y . Es decir, fA2 (x, y ) = x · y . D´ıaz Demostraci´n: o Outline Motivaci´n o Si x = 0, trivial Definiendo la Si x > 0, entonces correcci´n o x = ak 2k + ak−1 2k−1 + · · · + a2 22 + a1 2 + a0 ai ∈ Formalismos y problemas {1, 0} ak = 1 Sem´ntica y a programaci´n o Obs´rvese que e 2k ≤x < 2k+1 . Por tanto k = log2 x , Ejemplos que notaremos por log2 (x). Programas no verificables Las columnas A y B A[1] = 2k + ak−1 2k−1 + · · · + a2 22 + a1 2 + a0 B[1] = y A[2] = 2k−1 + ak−1 2k−2 + · · · + a2 2 + a1 B[2] = 2 · y A[3] = 2k−2 + ak−1 2k−3 + · · · + a2 B[3] = 2 · B[2] = 22 · y ... ... A[k] = 2 + ak−1 B[k] = 2k−1 y A[k + 1] = 1 B[k + 1] = 2k y
  19. 19. Tema 8:Correcci´n total: Parada o Verificaci´n de o programas. Introducci´n o Para cada j = 1, . . . , k + 1 se verifica: Joaqu´ Borrego ın D´ıaz A[j] es impar ⇐⇒ aj−1 = 0 ⇐⇒ aj−1 = 1 Outline Motivaci´n o Por tanto, Definiendo la fA2 (x, y ) = B[j] = 2j−1 · y = correcci´n o A[j] impar aj−1 = 1 Formalismos y problemas 1≤j ≤k +1 1≤j ≤k +1 Sem´ntica y a = aj−1 · 2j−1 y programaci´n o Ejemplos 1≤j ≤k +1 Programas no =y· aj−1 · 2j−1 = y · x verificables 1≤j ≤k +1Teorema (Prueba de parada): El algoritmo A2 para sobretodo (x, y ) ∈ N × N.Demostraci´n: Los dos bucles considerados constan, a lo osumo, de k + 1 = 1 + log2 (x) pasos.
  20. 20. Tema 8: Verificaci´n de o programas. Introducci´n oEjemplo: Error del procesador Pentium Joaqu´ Borrego ın D´ıaz A˜o 1994, 67.000 millones de pesetas) n Outline p Algoritmo de divisi´n del procesador (C´lculo de o a d ): Motivaci´n o Definiendo la correcci´n o Division SRT4 (p, d) Formalismos y p0 ← p problemas Para cada k = 1, ... hacer Sem´ntica y a programaci´n o determinar qk ∈ {−2, −1, 0, 1, 2} tal que Ejemplos 8 si pk+1 = 4(pk − qk d), entonces |pk+1 | ≤ 3 d Programas no verificables p qi Se verifica que = d 4i i∈N 8 2 Propiedad: |pk | ≤ 3 d =⇒|pk − qk d| ≤ 3 Para alg´n qk ∈ {−2, −1, 0, 1, 2} u
  21. 21. Tema 8:Ejemplo (cont.) Verificaci´n de o programas. Introducci´n o Si pk+1 = 4(pk − qk d) y |pk+1 | ≤ 8 d, entonces 3 Joaqu´ Borrego ın D´ıaz pk −k qk pk + 1 −(k+1) 4 = k + 4 d 4 d Outline p pk Motivaci´n o Aplicando inducci´n o d = (q0 + · · · + qk−1 ) + d 4−k y por l´ ımite se tiene la igualdad Definiendo la correcci´n o Elecci´n del qk (unidad: d/3): o Formalismos y problemas Sem´ntica y a programaci´n o Ejemplos Programas no verificables El algoritmo eleg´ 0 en vez de 2 para ciertos n´meros en [5/3, 8/3], ıa u debido a errores de precisi´n o
  22. 22. Tema 8:Otros ejemplos Verificaci´n de o programas. Introducci´n o 1985-87, Canad´: Fallo en el software de un emisor de a Joaqu´ Borrego ın rayos para el tratamiento del c´ncer: cuatro muertos a D´ıaz Banco de Nueva York: En el contador de mensajes de Outline compra/venta: Motivaci´n o 32767 + 1 = 0 Definiendo la correcci´n o P´rdida de la nave Phobos (U. Sovi´tica, 1988) e e Formalismos y problemas Un s´ ımbolo: Explosi´n de la lanzadera espacial o Sem´ntica y a programaci´n o Verificaci´n de propiedades para sistemas con n´mero o u Ejemplos finito de estados, pero existen 1010 estados o m´s a Programas no verificables Ariane 5: mal env´ de la altitud correcta ıo Los errores tienen su causa en una deficiente verificaci´n o Costes en EEUU: 300.000 millones de pesetas en 2002 Costes en UK: 900 millones de pesetas (2002)
  23. 23. Tema 8:Verificaci´n en la NASA o Verificaci´n de o programas. Introducci´n o Joaqu´ Borrego ın D´ıaz Outline Motivaci´n o Definiendo la correcci´n o Formalismos y problemas Sem´ntica y a programaci´n o Ejemplos Programas no verificables
  24. 24. Tema 8:Programas no verificables Verificaci´n de o programas. Introducci´n o (Fijamos x > 1) Procedimiento 1: Dado n > 0, Joaqu´ Borrego ın apl´ ıquese recursivamente la siguiente regla: D´ıaz Escribir n en base x, aumentar en 1 la base, y restarle 1 Outline al nuevo n´mero u Motivaci´n o Definiendo la Ejemplo: si n = 20098, y x = 3, entonces correcci´n o Formalismos y n = 39 + 35 + 34 + 32 + 30 problemas Sem´ntica y a programaci´n o y el resultado es 49 + 45 + 44 + 42 + 40 −1 Ejemplos (Goodstein) Procedimiento 2: similar al 1, pero se Programas no verificables aplica la regla al n´mero escrito en base x pura: u 2 1 En el caso anterior, n = 33 + 33 +2 + 33+1 + 32 + 30 2 1 y el resultado es n = 44 + 44 +2 + 44+1 + 42 + 40 − 1 Teorema: Despu´s de un n´mero finito de pasos los pro- e u cedimientos anteriores paran, llegando a 0
  25. 25. Tema 8:Programas no verificables (II) Verificaci´n de o programas. Introducci´n o Consecuencia del teorema de la forma normal: Joaqu´ Borrego ın Cualquier programa aritm´tico se puede traducir a una e D´ıaz f´rmula Σ1 , esto es, f´rmulas del tipo o o Outline Motivaci´n o ∃xϕ(y , x) Definiendo la correcci´n o donde ϕ s´lo posee cuantificadores acotados o Formalismos y problemas Existe traducci´n p ∈ Programas → ϕp tal que: o Sem´ntica y a programaci´n o Es autom´tica (mecanizable) a Ejemplos Se tiene que para cualesquiera x, y ∈ N Programas no verificables [[p]](~) = y ⇐⇒ N |= ψp (~, y) x x
  26. 26. Tema 8:Imposibilidad de verificaci´n o Verificaci´n de o programas. Introducci´n o Teorema: Supongamos que la teor´ deıa Joaqu´ Borrego ın especificaciones s´lo admite inducci´n sobre f´rmulas o o o D´ıaz Σ1 . Entonces el sistema no puede demostrar que el Outline procedimiento 1 para Motivaci´n o Potencia de ese sistema: Programas LOOP, funciones Definiendo la correcci´n o primitivas recursivas Formalismos y problemas Teorema: Supongamos que la teor´ de ıa Sem´ntica y a especificaciones admite inducci´n sobre cualquier o programaci´n o f´rmula aritm´tica. Entonces el sistema no puede o e Ejemplos demostrar que el procedimiento 2 para Programas no El sistema es la Aritm´tica de Peano. e verificables Para demostrar la parada se necesita usar t´cnicas de e teor´ de conjuntos ıa

×