Está en la página 1de 10

PROCESO DE

DERIVACIÓN
JESSICA PAOLA FRESNEDA QUEVEDO
DEFINICIÓN

• La derivación de un algoritmo es un proceso que permite construir las instrucciones a


partir de la especificación preocupándose a lo largo de este proceso de su corrección. Así,
al terminar la derivación el algoritmo encontrado será correcto o sea cumple su
especificación, por construcción.
• En la especificación, la postcondición describe el estado que se desea alcanzar, de ahí que
el proceso de construcción está guiado por la postcondición.
DERIVACIÓN

• Construir las instrucciones a partir de la especificación asegurando su corrección.


• La postcondición dirige el proceso de verificación.
• Las igualdades de la postcondición se intentan satisfacer mediante las asignaciones
correspondientes:
Si la precondición es más fuerte que el predicado más débil de estas asignaciones y la
postcondición → Proceso finalizado
DERIVACIÓN

A1 - Instrucción del cuerpo del bucle que se


encarga de mantener cierto el invariante

A2 - Representa las instrucciones que


hacen que las variables que intervienen
en la expresión B avancen hacia la
condición de salida del bucle, es decir hacia
~B (hacen que decrezca la función cota)
PROCESO DERIVACIÓN

1. El invariante I.
2. La condición B del ciclo.
3. Las sentencias de inicialización de variables, esto es las condiciones iniciales A 0.

4. El cuerpo A del ciclo: el cuerpo está constituido por dos instrucciones


fundamentales A1 y A2. La Instrucción A1 es parte del cuerpo del bucle y se
encarga de mantener cierto el invariante, A 2 representa la instrucción que hace que las
variables que intervienen en la expresión B avancen hacia la condición de salida del
bucle.
5. La función cota.
EJEMPLO DERIVACIÓN

{n ≥ 0} 1. La postcondición
fun raiz-entera(int n) return int r { I≡r≥0∧r2≤n
r ≥ 0 ∧ r 2 ≤ n < (r + 1)2} Condición del bucle: n ≥ (r + 1)2

2. Para hacer cierto el invariante r puede valer 0


n ≥ 0 ⇒ I 0r
EJEMPLO

3. Consideremos la instrucción avanzar: r = r + 1:

4. Algo que decrezca y sea fácil de calcular puede ser: n − r, no es preciso que
haya más instrucciones en el cuerpo del bucle.
ALGORITMO RESULTANTE
PROCESO

• {P} precondición 1) {P}A0{I} El invariante se satisface antes de la


• Mientras (B ){I} invariante primer iteración.

• A 2) 2) {I ^ B} A {I} El invariante se mantiene al


ejecutar el cuerpo A del bucle.
• finMientras
3) 3) {I ^ ~B}=>{Q}El invariante se cumple al salir del
• {Q} postcondición
bucle (cuando B es falsa) y debe llevarnos a la
postcondición.
PROCESO

• 4) Además se debe probar que el algoritmo termina. Para ello debemos buscar una
función de cota C que tome valores enteros. Esta función se construye a partir de una
expresión con todas o algunas de las variables que intervienen en la expresión de
la condición del bucle y que son modificadas en el cuerpo del bucle. La idea es que esa
expresión debe dar idea del número de iteraciones que quedan por realizar cada vez que
se ejecuta el ciclo, de forma que se cumpla que:
• - La función cota es mayor o igual que 0 cuando se cumple la condición B  {I ^ B}=>
C≥0
• - La función cota decrece al ejecutar el cuerpo A del bucle.  {I ^ B ^ C=T} A {C < T}

También podría gustarte