Axioma de asignación de Hoare
Definición
Regla que obtiene la precondición de V := E sustituyendo en la postcondición todas las apariciones libres de por la expresión .
Intuición
Después de la asignación, V contiene el valor de E calculado en el estado anterior. Para saber qué debía cumplirse antes, se reemplaza el valor final exigido para V por la expresión que lo producirá.
Formulación
La convención usada en las notas de Programación Avanzada es
que se lee “ con sustituida por ”. Así, la precondición calculada es . La sustitución debe ser simultánea y evitar la captura de variables.
Las diapositivas representan intuitivamente la sustitución con el esquema : se usa para reemplazar dentro de ; no se trata de afirmar la conjunción antes de ejecutar la asignación.
Ejemplo mínimo
Q: k = 12
instrucción: k := 4*a
Q^k_{4a}: 4*a = 12
precondición simplificada: a = 3Por tanto:
Otro ejemplo:
Contraejemplo o límites
No debe escribirse sin aclaración i=i+1 después de i:=i+1: los dos lados referirían al mismo estado. La sustitución o una variable histórica elimina esa ambigüedad.
Error típico: sustituir “hacia adelante”
La forma correcta parte de la postcondición . La regla falsa
podría producir , lo cual revela el error. En cambio, para probar se calcula , que es ; por tanto la precondición más débil es .
Mini ejercicio
Para y :
Comprueba con y con el valor frontera .
Cálculo de una postcondición en las diapositivas
Cuando la precondición fija los valores necesarios para evaluar , las diapositivas 26–27 llaman al resultado de sustituir esos valores en la igualdad :
En esa convención, . El esquema auxiliar de las diapositivas indica el reemplazo que debe efectuarse; no representa una conjunción lógica.
Por ejemplo:
y por ello . Esta es una sustitución hacia adelante de valores conocidos, no la forma general de la postcondición más fuerte para una precondición arbitraria.
Relaciones
- Calcula: Precondición más débil.
- Es una regla para: Terna de Hoare.
- Requiere distinguir: estado anterior y posterior.
Procedencia
- Clase: Ternas de Hoare y demostración formal.
- Fuente: Programación Avanzada Notas 4 2027, diapositivas 24–27 (láminas 78–81).
- Fuente complementaria:
/Users/diegovillalba/Downloads/AllLectures.pdf, páginas PDF 14–16. - Práctica interactiva: Asignación: sustituir desde la meta.