Lgica de Hoare - PowerPoint PPT Presentation

1 / 27
About This Presentation
Title:

Lgica de Hoare

Description:

... x 1 {x 5}, hallar P {Q} y := x 2 {y=7}, hallar Q {y 3} x := y ... {P} if x 2 then x := x 1 else x := x-2 {x 3}, hallar P. Regla: {P C} S1 {Q} {P ~C} S2 {Q} ... – PowerPoint PPT presentation

Number of Views:469
Avg rating:3.0/5.0
Slides: 28
Provided by: ramon4
Category:
Tags: hallar | hoare | lgica

less

Transcript and Presenter's Notes

Title: Lgica de Hoare


1
Lógica de Hoare
  • MeFIS
  • Ramón Brena
  • 2006

2
Verificación de programas
  • En programas simples es posible hacer una
    verificación rigurosa con el método de Hoare
  • Antiguo, pero referencia obligada

3
Aserciones
  • Se considera un lenguaje con secuencias de
    instrucciones
  • El efecto de las instrucciones se modela con
    condiciones antes / después
  • La sintaxis es Cantes S Cdespues

4
Ejemplo
  • P skip P
  • Como la instrucción skip no hace nada, la misma
    condición se tiene antes y después.
  • Se puede aplicar en sentido ? o ?.

5
Regla de la asignación
  • Para una instrucción x E se tiene x/EP x
    E P
  • Esto es, si después de la instrucción se cumple P
    para x, es porque antes de la instrucción se
    cumplía P reemplazando x por E.

6
Ejemplos
  • P x x 1 xgt5, hallar P
  • Q y x 2 y7, hallar Q
  • ygt3 x y - 3 R, hallar R
  • Fórmula x/EP x E P

7
Regla de la secuencia
  • Una secuencia de dos instrucciones / bloques se
    representa como S S .
  • Regla de la secuenciaP1 S P2
    P2 S P3 P1 S S P3
  • Se puede aplicar en cualquier sentido.

8
Ejemplos
  • P x x1 y x1 ygt5, hallar P
  • Regla P1 S P2 P2 S P3
    P1 S S P3

9
Ejemplos
  • xgt3 x x1 y x1 Q, hallar Q
  • Regla P1 S P2 P2 S P3
    P1 S S P3

10
Regla del if
  • Suponemos una instrucciónif C then S1 else S2
  • P?C S1 Q P?C S2 Q P C
    then S1 else S2 Q

11
Ejemplo
  • P if xgt2 then x x1 else x x-2 xgt3,
    hallar PRegla P?C S1 Q P?C S2
    Q P if C then S1 else S2 Q
  • Rama xgt2 P1 ? xgt2 x x1 xgt3
  • Rama x2 P2 ? x2 x x-2 xgt3

12
Ejemplo (sigue)
  • Rama xgt2 P1 ? xgt2 x x1 xgt3
  • P1 ? xgt2 ? x1gt3,
  • P1 más debil es T
  • Rama x2 P2 ? x2 x x-2 xgt3
  • P2 ? x2 ? x-2gt3
  • P2 más debil es xgt2, (precond. debe dar F)
  • Vemos que P1 y P2 no son iguales
  • Hay que nivelar P1 y P2
  • La más debil precondición común

13
Regla de la implicación
  • A veces no es fácil encontrar una condición C,
    pero sí una C tal que C ? C o bien C ? C
  • P ? P P S Q Q ? Q
    P S Q

14
Ejemplo if (sigue)
  • Rama xgt2 P1 ? xgt2 x x1 xgt3
  • P1 es T
  • Rama x2 P2 ? x2 x x-2 xgt3
  • P2 es xgt2
  • Hacemos P1 xgt2, P1 ? P1
  • Ya se niveló P1 con P2
  • P es xgt2
  • Vemos que el else no se ejecuta (contradicción
    entre x2 y xgt2)

15
Regla del while
  • Suponemos una instrucción while C do S
  • I ? C S I    . I while
    C do S I ? C

16
Ejemplo
  • I while x2lt535 do x x 1 I ? C
    I ? C S I . I while C do S I ?
    C
  • C es obviamente x2lt535
  • I es -24x24

17
Un ejemplo de verificación
  • Consideramos el programa de búsqueda de un número
    x que cumple P(x)
  • x p
  • y q //p y q definen el intervalo
  • while x ? y do if P(x) then yx else xx1 od
  • La precondición es pq y la postcondición
  • pxq ? xltq ? P(x) ? xq ? ?ipiq ? P(i)

18
Ponemos aserciones
  • pq
  • x p
  • Q
  • y q //p y q definen el intervalo
  • R
  • while x ? y do if P(x) then yx else xx1 od
  • pxq ? xltq ? P(x) ? xq ? ?ipiq ? P(i)

19
Resolvemos Q
  • pq
  • x p
  • xq
  • y q //p y q definen el intervalo
  • R
  • while x ? y do if P(x) then yx else xx1 od
  • pxq ? xltq ? P(x) ? xq ? ?ipiq ? P(i)

20
Resolvemos R
  • pq
  • x p
  • xq, pq
  • y q //p y q definen el intervalo
  • xy
  • while x ? y do if P(x) then yx else xx1 od
  • pxq ? xltq ? P(x) ? xq ? ?ipiltq ? P(i)

21
El while
  • pxyq
  • while x ? y do if P(x) then yx else xx1 od
  • pxq ? xltq ? P(x) ? xq ? ?ipiltq ? P(i)
  • Regla I ? C S I . I
    while C do S I ? C
  • Hay que encontrar el invariante I

22
Invariante I
  • pxyq
  • x debe estar entre p y y, y entre x y q
  • ?ipiltx ? P(i)
  • Los números que llevo no cumplen P
  • yltq ? P(x)
  • Si moví la y es que encontré el número
  • I es la conjunción de estas condiciones

23
I y C
  • Se supone que la postcondición del while debe
    implicar la del programa
  • Post. while I ? x?y o sea I ? xy, o sea
    pxyq ? yltq ? P(x) ? ?ipix ? P(i)
  • Post. programa pxq ? xltq ? P(x) ? xq ?
    ?ipiltq ? P(i)
  • Verificamos que esto es cierto

24
Precondición del while
  • Se supone que la condición R debe checar con la
    precondición del while
  • R es pxltyq
  • Prec. del while es I pxq ? yltq ? P(x) ?
    ?ipix ? P(i)
  • Vemos que R implica la precondición del while

25
Verificación del if
  • Rif P(x) then yx else xx1pxq ? yltq ?
    P(x) ? ?ipiltx ? P(i)
  • Regla P?C S1 Q P?C S2 Q
    P if C then S1 else S2 Q
  • Rama P(x)
  • P1 ? P(x) yx pxq ? yltq ? P(x) ? ?ipiltx ?
    P(i)
  • Rama P(x)
  • P2 ? P(x) xx1 pxq ? yltq ? P(x) ?
    ?ipiltx ? P(i)

26
Cálculo del if
  • Rama P(x)
  • P1 ? P(x) yx pxq ? yltq ? P(x) ?
    ?ipiltx ? P(i)
  • P1 ? P(x) ? (pxq ? xltq ? P(x) ? ?ipiltx ?
    P(i))
  • Rama P(x)
  • P2 ? P(x) xx1 pxq ? yltq ? P(x) ?
    ?ipiltx ? P(i)
  • P2 ? P(x) ? (px1q ? yltq ? P(x1) ?
    ?ipiltx1 ? P(i))

27
Cálculo de P1 y P2
  • P1 ? P(x) ? (pxq ? xltq ? P(x) ? ?ipiltx ?
    P(i))
  • Entonces P1 es pxq ? ?ipiltx ? P(i)
  • P2 ? P(x) ? (px1q ? yltq ? P(x1) ?
    ?ipiltx1 ? P(i))
  • Entonces P2 es pxltq ? yltq ? P(x1) ? ?ipix
    ? P(i))
  • Falta calcular R
Write a Comment
User Comments (0)
About PowerShow.com