Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Profesor
ESPINOZA DOMINGUEZ, ROBERT
Lima – Perú
Septiembre del 2017
[INFORME] VERIFICACIÓN FORMAL DE HAORE
INDICE
INTRODUCCIÓN................................................................................................................... 3
LÓGICA DE HOARE ..............................................................................................................4
APLICACIÓN..........................................................................................................................9
Operacional ........................................................................................................................9
Denotacional ......................................................................................................................9
Axiomática ..........................................................................................................................9
ASIGNACIÓN .................................................................................................................9
CICLOS ...........................................................................................................................9
DEMOSTRACIÓN DE CORRECCIÓN ........................................................................ 10
PRECONDICIÓN MÁS DÉBIL ..................................................................................... 10
VERIFICACIÓN DE PROGRAMAS .............................................................................. 10
CONCLUSIONES .................................................................................................................. 11
BIBLIOGRAFIA......................................................................................................................12
INTRODUCCIÓN
La verificación formal de programas consiste en un conjunto de
técnicas de comprobación formales que permiten demostrar si un
programa funciona correctamente; más específicamente, sobre todo en
ingeniería y en la computación, es conocida con ese nombre.
LÓGICA DE HOARE
Hoare introdujo la siguiente notación para describir formalmente el
comportamiento esperado de un programa.
Conceptos preliminares:
Nomenclatura
En la mayoría de los códigos el estado final depende del estado inicial. Por tanto
Precondición y Post-condición no son independientes entre sí. Hay dos posibles
nomenclaturas que permitan reflejar dicha dependencia:
Entonces:
{P} C {Q}
Donde:
Precondiciones y post-condiciones:
Las precondiciones indican las condiciones que deben satisfacer
los datos de entrada para que el programa pueda cumplir su tarea.
Las post-condiciones indican las condiciones de salida que son
aceptables como soluciones correctas del problema en cuestión.
Definición 1.
Un algoritmo C es correcto si y solamente si para toda posible entrada X se tiene
que P(X) ⇒Q(X, C(X)), Nótese que hay tres elementos principales en la
definición de correctitud o validez de un algoritmo: el algoritmo en sí mismo y las
condiciones impuestas a la entrada y salida del mismo.
Definición 2.
Una terna {P} C {Q} es llamada terna de Hoare si
Definición 3.
Una terna de Hoare {P} C {Q} se dice valida si C es correcto
Los códigos sin bucles siempre terminan por lo que la corrección parcial implica
la corrección total. Esta distinción es esencial sólo en el caso de códigos que
incluyan bucles o recursiones.
Algunos ejemplos
A continuación se muestran algunos ejemplos de ternas verdaderas y falsas, con
respecto a la corrección parcial o total.
{P}C{T}
Es verdadera para cualquier precondición P y cualquier programa C, ya que la
post-condición {T} es, por definición, siempre verdadera.
{T}C{T}
Esta terna es verdadera trivialmente, es un caso particular del ejemplo anterior
tomando P=T
.
[T]C[T]
Esta terna es verdadera siempre que la computación de C termine a partir de
cualquier estado inicial.
Paso 2. {X=y,Y=y,R:=x}
Paso 3. {X=y,Y=x,R:=x}
Esta terna de Hoare es verdadera, las variables X e Y intercambian sus valores.
APLICACIÓN
Operacional
Simular la ejecución del programa en una máquina virtual.
Denotacional
Convertir el programa en una función matemática y analizar la función resultante.
Axiomática
Visualizar el programa como el resultado de la aplicación de un conjunto de axiomas y
reglas de inferencia.
ASIGNACIÓN
I Otro ejemplo:
{??}
x := 2 * abs(x) + 1
{Q2 : x ≥ 5}
I Tenemos que ...
wp(x := 2 * abs(x) + 1,Q2) ≡ def(2|x|+ 1) ∧ Q2x E
≡ true ∧ 2|x|+ 1 ≥ 5
≡ |x|≥ 2
≡ x ≥ 2 ∨ x ≤−2
CICLOS
Supongamos que tenemos el ciclo while B do S.
DEMOSTRACIÓN DE CORRECCIÓN
Definición: Decimos que {P} S {Q} si P ⇒ wp(S,Q).
VERIFICACIÓN DE PROGRAMAS
Tenemos ahora un sistema formal para demostrar la corrección de un programa respecto
de su especificación:
CONCLUSIONES
En síntesis la lógica de Hoare es una extensión de la lógica de predicados de primer
orden para razonar sobre la corrección de programas imperativos construidos sobre una
signatura (S, Σ). Esta extensión se obtiene introduciendo un lenguaje de comandos con el
que se construyen los programas y una relación especial para expresar el comportamiento
de un programa, así como un conjunto de reglas de cálculo para la manipulación de las
expresiones de comportamiento.
BIBLIOGRAFIA