CS. de la COMPUTACION II 1 VERIFICACION DE PROGRAMAS

Documentos relacionados
Programación Lógica. Programación Lógica

1. INTRODUCCIÓN AL CONCEPTO DE LÍMITE

Construcción de los números reales.

Matemáticas Discretas Inducción y Recursión

Series alternadas Introducción

DEFINICIÓN DE PRODUCTO CARTESIANO:

TEMA 2: Potencias y raíces. Tema 2: Potencias y raíces 1

Sucesiones de números reales Sucesiones convergentes: límite de una sucesión

Marco Teórico n = i = 2. Deducción: Si la serie se suma dos veces de la siguiente forma:

Combinatoria. Tema Principios básicos de recuento

Coeficientes binomiales

Departamento de Matemáticas

Capítulo III Teoría de grupos

Sucesiones I Introducción

FUNDAMENTOS MATEMÁTICOS DE LA INGENIERÍA. Práctica nº 3: Sucesiones y series numéricas.

a n = Ejemplo: Representa las gráficas de las funciones f(x) = 1/x, g(x) = x 2 y h(x) =

FUNCIÓN SUMA DE LAS CIFRAS DE UN NÚMERO NATURAL UNIVERSIDAD NACIONAL ABIERTA CENTRO LOCAL ARAGUA. Trino G. Vivas Méndez RESUMEN

una sucesión de funciones de A. Formemos una nueva sucesión de funciones {S n } n=1 de A de la forma siguiente:

M arcelo, de vez en vez, usa una reata de 10 m de largo y 2 cm de grueso para

Series de potencias Introducción. Temas Series de potencias. Intervalo y radio de convergencia de una serie de potencias.

Sucesiones. Liceo Nº 35 - IAVA

ANALISIS CONVEXO CAPITULO CONVEXIDAD

MATEMÁTICA LIC. Y PROF. EN CS. BIOLÓGICAS

Algoritmos y Estructuras de Datos II, Segundo del Grado de Ingeniería Informática, Test de Análisis de Algoritmos, marzo Test jueves.

CAPITULO 0 CONCEPTOS BASICOS DE ALGEBRA Y PROGRAMACION LINEAL Algebra lineal Notación básica.

R. Urbán Introducción a los métodos cuantitativos. Notas de clase Sucesiones y series.

Medidas de Tendencia Central

CUADRATURA GAUSSIANA

SUCESIONES Y SERIES Una sucesión es un conjunto de números ordenados bajo cierta regla específica. 7, 10, 13, 16, 19, 22, 25,...

Semana 10 [1/24] Sucesiones (II) 2 de mayo de Sucesiones (II)

4. Sucesiones de números reales

Series infinitas de números reales. Series convergentes

Sistemas de Ecuaciones Lineales. M. en I. Gerardo Avilés Rosas

UNEFA C.I.N.U. Matemáticas

MEDIDAS DE TENDENCIA CENTRAL. _ xi

Capítulo VARIABLES ALEATORIAS

4 ALGEBRA DE BOOLE. 4.1 Introducción. 4.2 Axiomas. (a) a + b = b + a (b) a b = b a. (a) a + (b c) = (a + b) (a + c) (b) a (b + c) = a.

Notas de Teórico. Sistemas de Numeración

T ema 6 DISTRIBUCIONES DISCRETAS DE PROBABILIDAD. x 1. x 2 = 1 = 2. x 3 = 3. x 4. Variable aleatoria: definición y tipos:

Determinantes. Ramón Espinoza Armenta AVC APOYO VIRTUAL PARA EL CONOCIMIENTO

Convolución. Dr. Luis Javier Morales Mendoza. Procesamiento Digital de Señales Departamento de Maestría DICIS - UG

IES IGNACIO ALDECOA 1 AMPLIACIÓN DE MATEMÁTICAS 4º ESO CURSO 10/11

UNIDAD 9. PROBABILIDAD Matemáticas II. Ies do Barral.Curso 2017/ Experimentos aleatorios

AMPLIACIÓN DE MATEMÁTICAS 4º ESO CURSO 1 /1

Series de funciones en C z n z. f n (z) converge puntualmente en D C, entonces

FUNCIONES. ( a) IGUALDAD DE FUNCIONES Sí y son dos funciones, diremos que las funciones f y

TEORÍA DE CÁLCULO I. Para Grados en Ingeniería. Capítulo 3: Sucesiones y series. Domingo Pestana Galván José Manuel Rodríguez García

Estimadores Puntuales: Propiedades de estimadores Sebastián Court

1.3 Introducción a la combinatoria

3. Notación asintótica TEMA 1: EFICIENCIA DE LOS ALGORITMOS. 3. Notación asintótica. 3. Notación asintótica. 3. Notación asintótica

1. a) Mostrar que los siguientes conjuntos están acotados. x b) Mostrar que los siguientes conjuntos no están acotados superiormente

MATEMATICAS ESPECIALES I PRACTICA 1 Conjuntos en C - Topología en C - Sucesiones de números complejos

Pauta de Corrección Primer Certamen Fundamentos de Informática II

CLAVES DE CORRECCIÓN GUÍA DE EJERCITACIÓN FACTORES Y PRODUCTOS PREGUNTA ALTERNATIVA Nivel

Axioma 1 (Principio de inducción matemática) Sea S N con la propiedad que: a) 1 S. b) k R, k S k + 1 S. Entonces S = N.

LAS SERIES GEOMÉTRICAS Y SU TENDENCIA AL INFINITO

Sucesiones. f : {1,2,...,r} S. Por ejemplo, la sucesión finita, (de longitud 4) de números primos menores que 10: 2,3,5,7

Sucesiones de números reales

Criterios de Convergencia

Curso: 3 E.M. ALGEBRA 8

Ecuaciones en Diferencias Recíprocas y Semirrecíprocas

MODULO SOBRE PROGRAMACION MATLAB

Cálculo de ceros de funciones

RELACIONES DE RECURRENCIA

Límite y Continuidad de Funciones.

Álgebra I Práctica 4 - Números enteros (Parte 1)

No negatividad. Definición positiva. Propiedad multiplicativa. Desigualdad triangular. Identidad de indiscernibles. Desigualdad triangular

Una sucesión es un conjunto infinito de números ordenados de tal forma que se puede decir cuál es el primero, cuál el segundo, el tercero, etc.

Series de potencias. Desarrollos en serie de Taylor

Representaciones irreducibles y carácter de una representación: * = corresponde al elemento i,k de la matriz asociada a la

Solución del Examen Extraordinario de Algebra y Matemática Discreta, Primer Curso, Facultad de Informática

Criterios de Convergencia

Universidad Antonio Nariño Matemáticas Especiales

No obstante, cuando intentamos hacer lo mismo con los números racionales y reales vemos que. con como lo hicimos con. es diferente de los conjuntos

Eje I: Números y Operaciones

valor absoluto de sus términos, se tiene la serie: que si es convergente, entonces también es convergente la serie alternada.

SOLUCIONARIO II Parcial Cálculo Proyecto MATEM UNIVERSIDAD DE COSTA RICA Miércoles 10 de agosto del Solucionario

INFERENCIA ESTADÍSTICA CONCEPTOS BÁSICOS

GUIA DE ESTUDIO Nro 1

Trabajo Práctico N 10 Recursividad

Guía 1 Matemática: Estadística NM 4

Espacio Vectorial Definición: Sea V un conjunto donde hemos definido una ley u operación interna, que

Tema 4 Sucesiones numéricas

Slide 1. Slide 2. Slide 3. Universidad Diego Portales Facultad de Economía y Negocios. Capítulo 4 Introducción a la Probabilidad.

Laboratorio N 10, Series de Fourier. Introducción. Para funciones ( ) cos. f x está definida en la mitad del intervalo

1.1. SERIES NUMÉRICAS Y FUNCIONALES.

LOS NÚMEROS COMPLEJOS

Números naturales, enteros y racionales

Series Numéricas. Una forma de definir e es a través de la suma: ! + 1 1! + 1 2! + 1 3! + 1 4! n. cuyo límite es e, es decir:

3. Las medidas de centralización

Práctica 3 Sucesiones y series

Álgebra I Práctica 2 - Números Naturales e Inducción

Teoremas de convergencia. Integral sobre... Convergencia... Convergencia...

6. SUCESIONES Y SERIES NUMÉRICAS 6.1. SUCESIONES NUMÉRICAS

Ejercicios de preparación para olimpiadas. Funciones

CAPÍTULO XIV. SERIES NUMÉRICAS ARBITRARIAS

PRÁCTICA DE ALGORÍTMICA ENUNCIADO B

Probabilidad FENÓMENOS ALEATORIOS

Tarea 1 y 2. Problema 1. Calcula el supremo y el ínfimo de los siguientes conjuntos.

Transcripción:

CS. de la COMPUTACION II 1 VERIFICACION DE PROGRAMAS Uo de los efoques para determiar si u programa es correcto es establecer ua actividad de testig. Esta cosiste e seleccioar u cojuto de datos de etrada para determiar si los resultados producidos por el programa co esos datos coicide o o co los valores esperados. Para asegurar que el programa es correcto se debería aalizar el mismo co todos los valores posibles de los datos de etrada. Pero esto es imposible cuado este cojuto es ifiito. Por eso, el testig sólo puede mostrar la presecia de errores y o su ausecia. Otro efoque, la prueba formal de programas, es ua técica que se basa e el cálculo de predicados. Primero, se debe describir el comportamieto de cada istrucció del leguaje formalmete. Es decir, se debe defiir la semática de u leguaje de programació e térmios de fórmulas lógicas. Para probar u programa, se debe expresar su semática e térmios de fórmulas lógicas y luego probar que el programa sigifica lo mismo que su especificació. Ua prueba formal de u programa asegura que el programa es correcto co respecto a ua especificació para todas las etradas. Hay dos problemas importates co la prueba formal de programas: 1) la maipulació lógica puede ser tediosa y propesa a errores; 2) la prueba solamete muestra que el programa implemeta la especificació correctamete. No hay certeza de que la especificació describe lo que el usuario realmete desea. Defiició: Si u programa usa variables (x 1, x 2,..., x ) el estado s es ua tupla de valores (X 1, X 2,..., X ) dode X i es el valor de la variable x i. Ejemplo: Dado el estado s = (x, y) = (7, 8), el resultado de ejecutar la setecia de asigació x := 2*y+1 es el estado s = (x, y) = (17, 8) Ua variable se usa e u programa para describir ua posició de memoria que puede coteer valores diferetes e diferetes estados. Ua maera de describir u cojuto de estados es utilizado fórmulas del cálculo de predicados. Defiició: Sea U el cojuto de todos los posibles estados del programa y sea S U. Se defie P S, el predicado característico de S, tal que S = { s S / P S (s ) }. Es decir, es el predicado que solamete es satisfecho por los estados que perteece al cojuto S. Por ejemplo, e vez de decir que la setecia x:= 2*y+1 trasforma el estado s = (x, y) e el estado s = (2*y+1, y), defiiremos predicados P(x, y) y P (x, y ) tal que si P(x, y) es verdadero e el estado s etoces P (x, y ) será verdadero después de ejecutar la setecia x := 2*y+1. Ejemplo: Se quiere probar x 7 después de ejecutar x := 2*y+1. Esto es verdadero si 2*y+1 7 ates de ejecutar la setecia, es decir y 3. { y 3 } x := 2*y+1 { x 7 } {y 3} y {x 7} se deomia asercioes. Defiició: Ua aserció es ua fórmula del cálculo de predicados ubicada e u programa, que es verdadera cada vez que el programa pasa por ese puto. Defiició: {P} S {Q}, dode P y Q so asercioes llamadas pre-codició y post-codició respectivamete y S es u fragmeto de programa, se iterpreta como sigue: si la ejecució de S empieza e u estado caracterizado por P y S termia, etoces termiará e u estado caracterizado por Q. S se dice parcialmete correcto co respecto a P y Q. Si además se garatiza que S termia, S es totalmete correcto co respecto a P y Q. {P} S {Q} se deomia especificació formal de S.

CS. de la COMPUTACION II 2 Ejemplos: Los siguietes so ejemplos de programas especificados e térmios de pre y post codicioes. 1) Dados dos úmeros aturales a y b, b 0, ecotrar el cociete etre a y b. P: { a, b N b > 0} Q: { a = b*c + r 0 r < b c 0 } 2) Dado u arreglo de úmeros eteros, ordearlo e forma ascedete. P: { i: 1 i : (iteger(a[i]) a[i] = A[i]) } A referecia el valor de los elemetos del arreglo a ates de iiciar la ejecució Q: { i: 1 i < : a[i] a[i+1] permutació(a, A)} El predicado permutació(a, A) se defie como: permutació(a, A) = { i: 1 i : (Nj: 1 j : a[i] = a[j]) = (Nk: 1 k : a[i] = A[k])} 3) Ecotrar el valor máximo de u arreglo de úmeros eteros. P: { i: 1 i : (iteger(a[i]) a[i] = A[i]) } A referecia el valor de los elemetos del arreglo a ates de iiciar la ejecució Q: { i: 1 i : (max = a[i] j: 1 j : (a[j] max a[j] = A[j] ))} Volviedo al ejemplo { y 3 } x := 2*y+1 { x 7 }, { y 3 } o es la úica pre-codició que hace verdadera la post-codició después de la ejecució de la setecia de asigació. Otra precodició podría ser { y = 1 y = 3}. Pero esta última es meos iteresate porque o caracteriza todos los estados desde los cuales se puede alcazar u estado caracterizado por la post-codició. Se desea determiar como pre-codicioes aquellas fórmulas que describa tatos estados como sea posible. Esto se hace eligiedo el predicado meos restrictivo posible. Defiició: Ua fórmula A es más débil que ua fórmula B si B A (B es más fuerte que A). Como A es más débil que B, A describe más estados que B. Ua aserció es ua fórmula del cálculo de predicados; como casos especiales se puede distiguir las fórmulas T (true) y F(false). Como T es verdadero e todo estado, es la más débil etre las fórmulas. F es más fuerte que toda fórmula. Por ejemplo, y 3 es más débil que (y = 1 y =3) porque (y = 1 y =3) y 3 Defiició: Para todo fragmeto de programa S y fórmula Q, se defie la pre-codició más débil R = wp(s, Q) tal que {R} S {Q} es verdadero. Es decir, wp(s, Q) represeta todos los estados tal que la ejecució de S que comezó e cualquiera de ellos, si termia, termia e u estado que satisface Q. La otació {P} S {Q} (defiida ateriormete) es otra otació para P wp(s, Q). wp se deomia tambié predicado trasformador, ya que para cualquier fragmeto de programa defie ua trasformació de u predicado post-codició e u predicado pre-codició. Es decir, e vez de describir cómo u programa trasforma u cojuto de estados iiciales e u cojuto de estados fiales, describe cómo u programa trasforma u predicado post-codició, que caracteriza el cojuto de estados fiales, e u predicado pre-codició que caracteriza el cojuto de estados iiciales. Esto sigifica que para probar formalmete u programa se comezará desde la post-codició y se trabajará hacia atrás para verificar cada ua de las setecias idividuales del programa.

CS. de la COMPUTACION II 3 Se defie a cotiuació el predicado wp para u leguaje de programació co setecias de asigació, codicioal (if B S 1 else S 2 ) e iteració (while B S). Defiició: wp(x = e, Q) = Q {x/e} e es ua expresió Por ejemplo wp(y = b, y 0} = (y 0) {y/b} = b 0 wp(x = x+1, x = 5) = (x = 5) {x/x+1} = (x+1 = 5) = (x = 4) Defiició: wp(s 1 ; S 2, Q) = wp(s 1, wp(s 2, Q)) Por ejemplo se desea calcular la pre-codició más débil del siguiete fragmeto de programa: x = x+1; y = y+2 {x < y} wp(x = x+1; y = y+2, x < y) = wp(x = x+1, wp(y = y+2, x < y)) = wp(x = x+1, x < y+2) = x < y+1 Esto se puede escribir tambié como sigue { x < y+1 } x = x+1; { x < y+2 } y = y+2 { x < y } Defiició: wp(if B S 1 else S 2, Q) = (B wp(s 1, Q)) ( B wp(s 2, Q)) Ejemplo: Calcular la pre-codició más débil del siguiete fragmeto de programa: if y = 0 x = 0 else x = y 1 { x = y } wp(if y = 0 x = 0 else x = y-1, x = y) = = ( y = 0 wp(x = 0, x = y)) ( (y = 0) wp(x = y-1, x = y)) = ( y = 0 y = 0) (y 0 y-1 = y) = T (y 0 F) = (y 0 F) = ( (y 0) F) = (y 0) = (y = 0) Por lo tato la pre-codició más débil es P: { y = 0 } Defiició: U predicado I se llama ivariate de ua setecia S si wp(s, I) = I Defiició: Para probar la correcció de ua setecia while B S, co post-codició Q se deberá: 1) Calcular el predicado ivariate I.

CS. de la COMPUTACION II 4 2) Probar que I B wp(s, I) 3) Probar que I vale ates de iterar 4) Probar que I B Q (Q es la post-codició de la setecia while B S) Ejemplo: Para el siguiete fragmeto de programa y sus pre y post codicioes, probar si es o o correcto co respecto a las especificacioes dadas. pre: { >0} (6) i = 1; (5) suma = 0; (4) while (i <= ) (3) { suma = suma + i; (2) i++; (1) } post: {suma = Σ j } j = 1 El predicado ivariate es I: { 1 i +1 suma = Σ j } (1) = I ( es decir, después de ejecutar i++ es verdadero el predicado ivariate) (2) = (1) {i/i+1} = {1 i+1 +1 suma = Σ j } = {0 i suma = Σ j } i (3) = (2){suma/suma+i} = {0 i suma+i = Σ j } = {0 i suma+i = Σ j + i} (3) = {0 i suma = Σ j } I {i <= } (3) {1 i +1 suma = Σ j } {i <= } (3) i+1-1 {1 i suma = Σ j } {0 i suma = Σ j } i I {i > } post {1 i +1 suma = Σ j } {i > } post

CS. de la COMPUTACION II 5 {i = +1 suma = Σ j } { suma = Σ j } {suma = Σ j } { suma = Σ j } (4) = I (5) = (4){suma/0} = { 1 i +1 0 = Σ j } 1-1 (6) = (5){i/1} = { 1 1 +1 0 = Σ j } = { 0 0 = 0 } = { 0 } La aserció (6) es la pre-codició más débil del programa. Se debe comprobar además si la pre-codició del programa es más fuerte que la pre-codició más débil del programa, esto es { > 0 } { 0 } Es imediato que se cumple. Por lo tato, se ha probado formalmete que el fragmeto de programa dado es parcialmete correcto. Para probar que es totalmete correcto se debería probar que el programa termia y para probar esto se debería probar que el úico ciclo que tiee el programa termia.