Especificación TEMA 1 formal de problemas Objetivos Revisar los principales conceptos de la lógica de primer orden Entender el concepto de estado de cómputo y cómo se modela con predicados lógicos Familiarizarse con los elementos de la especificación formal Especificar formalmente algoritmos simples Contenidos 1.1 Introducción. 1.2 Revisión de lógica de predicados 1.3 Especificación con predicados. 1
Motivación Necesitamos exponer nuestra idea a otros programadores Poder hacerle ver a otro colega que esto hace lo que digo Poder dejar claro qué es lo que tiene que hacer el programador Necesitamos especificar formalmente el algoritmo Especificación de una función en lenguaje natural Diseñar un algoritmo de una función que nos diga si dado un vector de 1000 elementos enteros y un número n entero entre 0 y 1000, ambos incluidos, hay algún elemento en el vector, en una posición que n, que sea igual a la suma de sus elementos anteriores en el vector. En el caso en que n sea 0 la función deberá devolver falso. En el caso en que el primer elemento del vector sea 0 y n mayor que 0, la función deberá devolver verdadero. Especificación pre-post con predicados lógicos α = α α = β β = 2
Especificación formal con predicados Ventajas Brevedad Precisión Permite la derivación y la verificación formal Especificación pre-post con predicados Algoritmo como caja negra del que se conocen solamente sus parámetros de entrada y salida (su interfaz). Es una función de estados en estados Comienza su ejecución en un estado inicial válido El valor de sus parámetros de entrada Termina en un estado final En el que los resultados están en los parámetros de salida {Q} S {R} Si S comienza su ejecución en un estado descrito por Q, S termina, y lo hace en un estado descrito por R Especificación pre-post Especificación de la interfaz de la función/procedimiento fun nombrefunción (p 1 : t 1 ; p 2 : t 2.. p n : t n ) dev (q 1 : r 1 ; q 2 : r 2.. q m : r m ) accion nombreacción (p 1 : cf t 1 ; p 2 : cf t 2.. p n : cf t n ) cf : nada o ent para sólo entrada sal para sólo salida ent/sal para entrada y salida 3
Especificación pre-post Q Precondición Predicado que tiene como variables libres los parámetros de entrada de S Caracteriza el conjunto de estados iniciales para los que está garantizado que el algoritmo devuelve un resultado correcto Describe las obligaciones del usuario Si se llama al algoritmo en un estado no definido por Q, el resultado es impredecible (no terminar, resultado absurdo, razonable, ) R Postcondición Predicado que tiene como variables libres los parámetros de entrada y de salida de S Caracteriza la relación entre cada estado inicial válido y el estado final correspondiente que alcanzará el algoritmo Describe las obligaciones del implementador, suponiendo que el usurio cumple las suyas Lógica de proposiciones Es la lógica más simple Simboliza y describe razonamientos basados en enunciados declarativos Está lloviendo, Antonio corre, 3+2=5 La extiende la lógica de predicados (objetos y sus relaciones) Algunas plantas tienen flores Lógica de proposiciones Proposiciones (variables proposicionales) Son los enunciados Sólo verdad o falso P, q, r, s, Fórmulas (sentencias) Combinación de variables proposicionales y conectivas (y, o, ) Valores de verdad o falso según las variables y las tablas de verdad de las conectivas 4
Lógica de proposiciones Sintaxis Regla de formación: una fórmula es una secuencia finita de proposiciones, conectivas y paréntesis Fórmula bien formada es la que tiene sentido Lógica de proposiciones Semántica tabla de verdad Lógica de predicados Situaciones imposible de expresar en lógica de proposiones Todos los hombres son mortales Sócrates es un hombre Luego Sócrates es mortal Tenemos Propiedades de individuos (ser hombre, mortal) Se pueden aplicar a un individuo cualquiera o a uno concreto (variable y constante) Necesitamos expresar una propiedad para todos los individuos o para alguno de ellos (cuantificadores) 5
Lógica de predicados Los predicados se especifican mediante fórmulas lógicas Los predicados se denotan con letras mayúsculas P x+y > 0; Q α N.a[α] < n Componentes de un predicado Variables libres (letras minúsculas) y ligadas (letras griegas) Conectivas,,, Cuantificadores,,,,N Lógica de predicados Variables en los predicados: Variables libres: corresponden a las variables del programa Variables mudas o ligadas: van asociadas a algún tipo de cuantificador. Ayudan a describir aspectos sobre un dominio. Están ligadas al cuantificador más cercano Un mismo identificador denota distintas variables Ej.: x D1. (f(x) ^ x D2.g(x))) Ej: x(x>y) ^ y(y<=x), en el primer conjuntante x es ligada e y es libre, en el segundo y es ligada y x libre. Lógica de predicados Predicados atómicos Una constante booleana (verdadero,falso) Una variable de tipo booleano (x,y) Una expresión relacional (x < y, x + y > 0) Una función booleana (espar(x), estaordenado(x)) 6
Lógica de predicados Siendo P y Q predicados y D un dominio de valores son también predicados P P Q P Q P Q P Q D. P() D. P() Lógica de predicados Cuantificadores y dominios vacíos Cuando el dominio de un cuantificador es vacío, la expresión cuantificada es igual al elemento neutro de la operación que representa el cuantificador cierto falso 0 1 N 0 7
Sustitución de variables libres Resultado de sustituir todas las apariciones libres de la variable x en la fórmula P por la expresión e Condiciones de la expresión e no debe contener variables ligadas de P debe ser del mismo tipo de datos que x Sustitución de variables libres Denota el resultado de sustituir simultáneamente todas las apariciones de las variables libres x 1,.,x n en el predicado P por las expresiones e 1,..,e n (Cada e i con las mismas condiciones ) Estados Estado de una variable de un programa Estado de un programa 8
Evaluación de predicados Para poder evaluar un predicado hay que conocer el estado de todas sus variables libres Un predicado P define un conjunto de estados -estados (P)- Predicado P más fuerte (más débil) que otro Q estados(p) estados(q) (estados(p) estados(q)) P Q ( P es más fuerte que Q, Q es más débil que P, Q es deducible de P Predicados no comparables Evaluación de predicados Para poder evaluar un predicado hay que conocer el estado de todas sus variables libres Un predicado P define un conjunto de estados -estados (P)- Predicado P más fuerte (más débil) que otro Q estados(p) estados(q) (estados(p) estados(q)) P Q ( P es más fuerte que Q, Q es más débil que P, Q es deducible de P Predicados no comparables Evaluación de predicados Siempre se puede reforzar un predicado P P Q P Siempre se puede debilitar un predicado P P P Q Hay otra técnica para debilitar predicados El predicado más debil es cierto cierto P cierto El predicado más fuerte es falso falso P falso Como consecuencia falsop 9
Especificación pre-post PLs α = α α = β β = Las llamadas a essuma con valores de n<0 o >1000 son incorrectas. En las llamadas con n=0 la función ha de devolver falso en b. En las llamadas con n>0 y a[1]=0 la función ha de devolver cierto en b. En el resto de las llamadas la función ha de devolver: cierto en b, si al menos hay un elemento de a[i], siendo i n, que sea igual a la suma de sus predecesores falso en b, si no hay ninguno que cumpla dicha propiedad 10