Regla condicional de Hoare

Definición

Regla que demuestra un condicional separando los estados que satisfacen (B) de los que satisfacen (\neg B). Cada camino debe garantizar una postcondición común (Q).

Formulación

Con else:

Sin else, la rama falsa equivale a skip:

Intuición

(B) y (\neg B) cubren todos los resultados de evaluar la condición. Si ambos caminos terminan satisfaciendo (Q), el condicional completo garantiza (Q).

Ejemplo mínimo

  • Si (max<a), la asignación deja (max=a).
  • Si (\neg(max<a)), ya se cumple (max\ge a).

Contraejemplo o límites

Verificar solo la rama con asignación es insuficiente. En un if sin else, el camino falso conserva el estado y debe satisfacer (Q) por implicación. La regla no prueba que evaluar (B) esté definido ni que las ramas terminen.

Lista de comprobación

  1. Escribir la guarda y su negación .
  2. Agregar a las dos ramas.
  3. Calcular las precondiciones de cada cuerpo hacia atrás.
  4. Verificar que las dos ramas llegan a la misma .

Ejemplo resuelto: valor absoluto paso a paso.

Relaciones

Procedencia