Precondición más débil
Definición
La precondición más débil es la condición menos restrictiva que debe cumplir el estado inicial para garantizar una postcondición . En la convención precisa de Dijkstra:
- (weakest liberal precondition) corresponde a corrección parcial;
- (weakest precondition) corresponde a corrección total e incluye terminación.
Para código determinista sin ciclos, las ecuaciones de y coinciden; muchas notas introductorias escriben simplemente wp aunque estén verificando solo corrección parcial.
Intuición
Se fija primero la salida deseada y se pregunta qué debía ser verdad justo antes de cada instrucción. Así se verifica el programa en orden inverso a su ejecución.
Formulación
Para una asignación, la misma ecuación vale para ambos transformadores (si evaluar termina):
Para una secuencia:
Para un condicional determinista:
Ejemplo mínimo
código: x := x+1; y := 2*x
Q: y > 10
wlp(y := 2*x, y > 10) = x > 5
wlp(x := x+1, x > 5) = x > 4Contraejemplo o límites
No es obligatorio declarar exactamente la condición más débil. Para corrección parcial basta cualquier tal que ; para corrección total se requiere .
Relaciones
- Para asignaciones utiliza: Axioma de asignación de Hoare.
- Se compara mediante: Fortaleza lógica de una aserción.
- Permite demostrar: ternas de Hoare.
- Se relaciona con la generación de: condiciones de verificación.
Procedencia
- Clase: Ternas de Hoare y demostración formal.
- Fuente: Programación Avanzada Notas 4 2027, diapositivas 23–27 (láminas 77–81); el nombre
wpexplicita la idea presentada de deducir la precondición desde la postcondición. - Fuente complementaria:
/Users/diegovillalba/Downloads/AllLectures.pdf, páginas PDF 70–77; allí se reservawlppara corrección parcial ywppara corrección total. - Ejercicios: Secuencias paso a paso.