Está en la página 1de 1

Verificacion Formal de

Programas

En el software, la verificación formal de programas, consiste en justificar que un programa cumpla una
especificación formal de su comportamiento. Esta verificación formal incluye la verificación deductiva, la
interpretación abstracta, la demostración automática de teoremas, etc. La característica principal es que
la verificación se escribe de manera dependiente al tipo de programación, es decir, las propias funciones
incluyen sus especificaciones y el mismo código establece la corrección frente a esas especificaciones.
Incluso, el propio lenguaje admite la verificación deductiva.

Que es un Sistema
Formal

En matemáticas, lógica y ciencias de la computación, un Sistema formal es un lenguaje cuyos símbolos son
primitivos y las reglas para unir esos símbolos están formalmente especificadas.1? 2?Al conjunto de los símbolos
primitivos se le llama el alfabeto (o vocabulario) del lenguaje, y al conjunto de las reglas se le llama la gramática
formal (o sintaxis). A una cadena de símbolos formada de acuerdo a la gramática se le llama una fórmula bien
formada (o palabra) del lenguaje. Estrictamente hablando, un lenguaje formal es idéntico al conjunto de todas sus
fórmulas bien formadas.

Logica de Hoare

Es un sistema formal con un conjunto de reglas lógicas para razonar rigurosamente sobre la corrección de los
programas de computadora . Fue propuesto en 1969 por el científico informático y lógico británico Tony Hoare
, y posteriormente refinado por Hoare y otros investigadores. [1] Las ideas originales fueron sembradas por el
trabajo de Robert W. Floyd

La característica central de la lógica de Hoare es el triple de Hoare . Un triple describe cómo la ejecución de
un fragmento de código cambia el estado del cálculo. Un triple de Hoare es de la forma {P}C{Q}

La lógica de Hoare proporciona axiomas y reglas de inferencia para todas las construcciones de un lenguaje
de programación imperativo simple. Además de las reglas para el lenguaje simple en el artículo original de
Hoare, desde entonces Hoare y muchos otros investigadores han desarrollado reglas para otras
construcciones del lenguaje. Hay reglas para la simultaneidad, procedimientos, saltos y punteros .

Existe Tipo de Reglas

Esquema de axioma de declaración vacía Esquema de axioma de asignacion


La regla de declaración vacía afirma que elskip declaración no cambia el estado El axioma de asignación establece que, después de la asignación, cualquier predicado
del programa, por lo tanto, cualquier cosa que sea verdadera antes skip también que antes era verdadero para el lado derecho de la asignación ahora es válido para la
es cierto después. variable. Formalmente, dejaP ser una aserción en la que la variable xes gratis

Regla de composicion Regla condicional


Las tres declaraciones siguientes (línea 2, 4, 6) intercambian los valores de las La regla condicional est ablece que una poscondición Q común a displays t yle t hen y else
variables a y b, sin necesidad de una variable auxiliar. En la prueba de part e es t ambién una condición post erior , la condición innecesaria y negada B se puede
verificación, el valor inicial de a y b se denota por la constante A y B, agregar a la condición previa P, respect ivament e. La condición,B, no debe t ener efect os
respectivamente. secundarios.

Mient ras gobierna


Aquí P es el ciclo invariante , que debe ser preservado por el cuerpo del ciclo S.
Mient ras que la regla para la corrección t ot al
Una vez finalizado el ciclo, este invariante P todavía se mantiene, y además
el cálculo de Hoare t ambién puede usarse para probar la corrección t ot al , es decir, la
debe haber causado el final del ciclo. Como en la regla condicional,B no debe
t erminación así como la corrección parcial.
tener efectos secundarios.

Carlos Damian Quintero Caicedo


Análisis y verificación de algoritmos
Grupo B01
cdquintero@poligran.edu.co
28/06/2022

También podría gustarte