Professional Documents
Culture Documents
Contexto
Biografa de Hoare..................................................pag. 3
Lgica de Hoare
Definicin.................................................................pag. 4
Correccin: parcial y total........................................pag. 5
Reglas generales....................................................pag. 6
Bibliografa..............................................................pag. 8
Pgina
1
Biografa de Hoare
Antes de comenzar a hablar de la lgica de Hoare, primero debemos saber quin fue l.
Charles Antony Richard Hoare, tambin conocido como "Tony" Hoare, naci el 11 de enero
de 1934 en la ciudad de Colombo. Tony recibi la educacin secundaria en la Escuela
Dragn en Oxford y la Escuela del Rey en Canterbury. Su educacin universitaria tambin
estaba en Oxford. Su carrera involucr el estudio del latn y el griego, as como la filosofa. l
decidi estudiar filosofa moderna, que proporciona un camino para entender la lgica.
En su graduacin en 1956, Tony fue llamado a la Royal Navy. Al trmino del servicio
obligatorio dos aos de servicio militar, regres a Oxford para estudiar Estadstica y comenz
la programacin de computadoras en Mercurio Autocode.
Cuando Hoare se mud de la industria a la academia en 1968, Hoare hizo dos pasos
adicionales audaces, primero descarta los diagramas de flujo y desarroll un sistema de
lgica para razonar acerca de los programas que utilizan las especificaciones de
comportamiento comunicado que han llegado a conocerse como triples de Hoare o ternas de
Hoare. En segundo lugar, argument que su sistema "axiomtica" podra ser visto como una
forma abstracta de la grabacin de la semntica de los lenguajes de programacin.
El primero de estos pasos tiene el profundo efecto de la apertura de una forma de desarrollar
programas demostrables en lugar de tratar su verificacin como una preocupacin post
hoc. Hoare publicado una serie de acontecimientos de esta idea, y la bsqueda de la
"semntica Hoare" ha tenido un efecto profundo en la comprensin de los lenguajes de
programacin y la tarea de razonamiento acerca de los programas.
Tony Hoare se convirti en profesor en la Universidad de Oxford en 1977 e hizo otro paso
audaz intelectual: en un artculo de 1978 en las Communications of the ACM (y
posteriormente en su libro Communicating Sequential Processes) propuso un
lenguaje (CPS), donde la interaccin entre los programas se limit a pre-comunicaciones
previstas. CSP ha inspirado una gran cantidad de nuevas investigaciones, incluidas las
herramientas que han alentado su uso en aplicaciones industriales.
Pgina
3
Lgica de Hoare
Desarrollada por Hoare en 1969, la lgica de Hoare es una lgica que permite probar la
verdad o falsedad de propiedades de programas imperativos sin concurrencia o paralelismo.
La caracterstica central de la lgica de Hoare son las ternas de Hoare, basado en el
diagrama de flujo anotado:
Este describe como la ejecucin de una pieza de cdigo cambia el estado del programa. Es
de la forma:
{P}
{Q}
{P} C {Q}
Donde P y Q son afirmaciones y C es un comando, que puede ser desde una sentencia o
conjunto de sentencias hasta un programa entero. P se llama precondicin y es cualquier
asercin que solo implica al estado inicial, Q se llama postcondicion y es una asercin que
solo implica al estado final, siendo una asercin una sentencia lgica que hacen referencia a
un estado de sistema. Cuando se cumple la precondicin, la ejecucin del comando
establece la postcondicion.
La Lgica de Hoare ofrece axiomas y reglas de inferencia para todas las construcciones de
un sencillo lenguaje de programacin imperativo. Existen reglas para la concurrencia, los
procedimientos, los saltos y los punteros.
La lgica de Hoare utiliza dos lenguajes formales:
-Un lenguaje de programacin imperativo (LP) para C
-Un lenguaje de formula (LF) para {P} y {Q}. En LF se usan los tipos (enteros, reales,
booleanos, etc.), funciones(suma de enteros, suma de reales, etc.) y predicados(<, >, etc.)
usados en el LP, incluidos los que son definidos por el mismo usuario.
En caso de que la terna de Hoare tenga la forma {P}C{P} siendo {P} una asercin que es a la
vez precondicin y postcondicion, esta pasara a denominarse invariante.
Pgina
4
La correccin sirve para, tal como dice su nombre, ver si la terna es vlida o no, para esto
te dice que si tienes una precondicin {P}, una postcondicion {Q} y un comando o parte
de cdigo C, entonces {P}C{Q} ser correcto si en todo caso inicial que satisface a {P} el
comando da como resultado un estado final que satisface a {Q}.
La correccin tiene dos tipos, que debemos distinguir para no cometer errores ms
adelante:
Correccin parcial.-
Correccin total.-
Pgina
5
Reglas generales
1) Fortalecimiento y debilitamiento de aserciones.Siendo A y B dos aserciones, se dice que A es ms fuerte que B si AB y tambin
se puede decir que B es ms dbil que A
si una asercin es fortalecida disminuye el nmero de estados que la pueden
satisfacer, y si AB entonces todos os estados que satisfacen A tambin
satisfacen B pero no en viceversa.
Ej.: i>1 es ms fuerte que i>0, porque siempre que i>1 se cumpla, implicara que
i>0. Por lo tanto i>1 i>0
1.1) Fortalecimiento de las precondiciones.Si {P}C{Q} es correcto y P1P se puede afirmar que {P1}C{Q} es correcto:
P P
{ P } C {Q }
{ P } C {Q }
1.2) Debilitamiento de las postcondicion.Una vez que {P}C{Q} y QQ1 hayan sido establecidos, se puede concluir que
{P}C{Q1}:
{ P } C {Q }
Q Q
{ P } C {Q }
1.3) Regla de la conjuncin.Esta regla permite reforzar la precondicin y postcondicion a la vez, siendo C
una parte de un cdigo:
{ P } C { Q }
{ P } C { Q }
{ P P } C {Q Q }
1.4) Regla de la disyuncin.Esta regla permite debilitar la precondicin y postcondicion a la vez, siendo C
una parte de un cdigo:
Pgina
6
{ P } C { Q }
{ P } C { Q }
{ P P } C {Q Q }
{ P } V =E {Q }
{ P} C { R}
{ R } C {Q }
{ P } C ; C {Q }
{ P B } C {Q }
{ P B } C {Q }
{ P } if B thenC thenC { Q }
2.4) While parcial.Se trata de la regla que permite calcular las pre y post condiciones de un
bucle While satisfaciendo la propiedad de correccin parcial:
{ P B } C {P }
{ P } while B do C { P B }
Pgina
7
Pgina
8
Bibliografa
http://gpd.sip.ucm.es/charlas/20130423RicardoHoare/mainFDIAbril13.pdf
http://www.infor.uva.es/~jvalvarez/docencia/tema8.pdf
http://www.cs.cmu.edu/~aldrich/courses/413/slides/24-hoare.pdf
Pgina
9