2018
UNIDAD 3: PROGRAMACION LOGICA PROGRAMACION LOGICA Y FUNCIONAL JOSUE EVANGELISTA CRUZ
UNIDAD 3 Programación Lógica 3.1. Repaso de la lógica de primer orden.
Una contradicción es la forma correcta de decir que algo se contradice a sí mismo: El caballo de Santiago es blanco y negro. Hay menos y más de dos manzanas en el cesto. Capcioso. Indica las preguntas que la persona, que debe responderlas, no puede responder, porque esa persona no acepta alguna suposición implícita en la pregunta: "¿Cuándo mató a su madre?" "¡Pero si mamá vive!" "¡Responda la pregunta!". Falacia. Una falacia es un error lógico en un razonamiento. Cuando un razonamiento contiene una falacia, ese razonamiento no es válido como razonamiento lógico. Puede servir para hacer política ("Mi padre fue conservador, y por tanto yo lo soy, pero sospecho que el suyo fue asaltador de caminos..."), pero no son razonamientos válidos en lógica. FUNCION. Una cosa que se evalúa de algún modo. Por ejemplo: "logaritmo (2)" o "esposa (Pepe)". O Se lee "logaritmo neperiano de 2" y "esposa de Pepe". O Si la esposa de Pepe es Maruja, "esposa (Pepe)" se evalúa a Maruja. PREDICADO. Un tipo de función, que se evalúa a cierto o falso, ósea una "frase" que puede ser cierta o falsa. Por ejemplo: "x > 2", "Pepe lleva un sombrero". Se dice que los predicados se evalúan a cierto o falso, lo que en lenguaje normal decimos "ser" verdadero o falso.
3.2. Unificación y resolución.
El Método de Resolución es un intento de mecanizar el proceso de deducción natural de forma eficiente. Las demostraciones se consiguen utilizando el método refutativo (reducción al absurdo), es decir lo que se intenta es encontrar contradicciones. Para probar una sentencia basta con demostrar que su negación nos lleva a una contradicción con las sentencias conocidas (es insatisfactible).
ALGORITMO DE RESOLUCION
Existen distintas Estrategias de Resolución: sistemática, con conjunto soporte, unitaria, primaria y lineal. El procedimiento de resolución consiste en un proceso iterativo en el cual comparamos (resolvemos), dos cláusulas llamadas cláusulas padres y producimos una nueva cláusula que se ha inferido (deducido), de ellas. EJEMPLO Por ejemplo, supongamos que tenemos las clausulas siguientes (ambas verdaderas):
Invierno verano (es invierno o es verano) invierno frio (hace frio o no es invierno)
Aplicando resolución, podemos combinar ambas clausulas y obtener: Invierno verano invierno frio Ahora podemos hacer una simplificación, ya que (invierno tautología, con lo que nos queda:
invierno) es una
Verano frio (es verano o hace frio) La resolución opera tomando dos cláusulas tales que cada una contenga un mismo literal, en una cláusula en forma positiva y en la otra en forma negativa. El resolvente se obtiene combinando todos los literales de las cláusulas padres y eliminando aquellos que se cancelan.
ALGORITMO DE UNIFICACION
Podemos definir la Unificación como un procedimiento de emparejamiento que compara dos literales y descubre si existe un conjunto de sustituciones que los haga idénticos. ALGORITMO
1. En primer lugar se comprueba si los predicados coinciden. Si es así, seguimos adelante; si no es que no son unificables. 2. Si el predicado concuerda, comenzamos a comparar los argumentos. Si el primero de ellos coincide en ambos literales, continuamos con el siguiente... y así hasta completar todos los argumentos. 3. Para conseguir que cada argumento de un literal sea coincidente con su homólogo en el otro literal, debemos buscar una sustitución que nos permita emparejarlos. 4. La única condición que debe reunir esta sustitución es que ha de aplicarse a todo el literal, es decir, que la sustitución afecta a todo el literal, y no sólo al argumento en cuestión. Ejemplo Se unificara P(x, x) con P (y, z): Primera sustitución: (y/x) Resultado: P (y, y) P (y, z) Segunda sustitución: (z/y) Resultado: P (z, z) P (z, z) La sustitución resultante es la composición de las sustituciones: s = {z/ y, y/x}
3.3. Cláusulas de Horn. Resolución SLD.
En lógica proposicional, una fórmula lógica es una cláusula de Horn si es una cláusula (disyunción de literales) con, como máximo, un literal positivo. Se llaman así por el lógico Alfred Horn, el primero en señalar la importancia de estas cláusulas en 1951. Una cláusula de Horn con exactamente un literal positivo es una cláusula "definite"; en álgebra universal las cláusulas "definites" resultan como cuasi-identidades. Una cláusula de Horn sin ningún literal positivo es a veces llamada cláusula objetivo (goal) o consulta (query), especialmente en programación lógica.
EJEMPLOS Se llaman cláusulas de Horn aquellas que tienen como máximo un literal positivo. Hay dos tipos:
Las cláusulas determinadas (definite clauses), o «cláusulas de Horn con cabeza» son las que sólo tienen un literal positivo: (¬p1 ¬p2 ... ¬pk q) (p1 p2 ... pk q) Caso particular son las que no tienen más que ese literal positivo, que representan «hechos», es decir, conocimiento factual. Los objetivos determinados (definite goals), o «cláusulas de Horn sin cabeza» son las que no tienen ningún literal positivo: (¬p1 ¬p2 ... ¬pk) ¬ (p1 p2 ... pk)
RESOLUCION SLD La resolución general es un mecanismo muy potente de demostración pero tiene un alto grado de indeterminismo: en la selección de las clausulas con las que hacer resolución y en la selección de los literales a utilizar en la resolución. Los hechos y las reglas se denominan clausulas definidas: Los hechos representan “hechos acerca de los objetos” (de nuestro universo de discurso), relaciones elementales entre estos objetos las reglas expresan relaciones condicionales entre los objetos, dependencias.
REGLAS Un hecho es una regla con cuerpo vacío un objetivo es una regla con cabeza vacía y el éxito es una regla con cabeza y cuerpo vacíos. En las cláusulas de Horn se trabaja con secuencias de literales en vez de conjuntos Esto implica dos cosas: los literales pueden aparecer repetidos en el cuerpo hay un orden en los literales del cuerpo. EJEMPLO Un predicado p queda definido por el conjunto de cláusulas (hechos y reglas) cuyas cabezas tienen ese símbolo de predicado. Así pues la definición de un predicado en general tendrá el aspecto:
3.4. Programación lógica con cláusulas de Horn.
La aplicación de refutación por resolución en cláusulas de Horn es un mecanismo ampliamente utilizado. El lenguaje de programación Prolog, se basa en este tipo de cláusulas y los programas implementados en él se denominan programas lógicos definidos. Tenemos tres tipos de cláusulas de Horn Tipo I: un átomo simple (hecho) ej. P11(x) Tipo II: una implicación (llamada regla) cuyo antecedente consiste de una conjunción
de literales positivos y el consecuente es sólo un literal positivo: L1^L2…^Ln-1 Ln donde las L son literales positivos. Muchas veces se nota: L1,L2,…,Ln-1 Ln . Tipo III: Un conjunto de literales negados, que puede notarse como una implicación
sin consecuente L1, L2…Ln
La notación utilizando implicación es la preferida para escribir cláusulas de Horn y resulta equivalente a la notación utilizando la disyunción de literales. Una cláusula de Horn notada como disyunción finita de literales, siendo las L li terales, se escribe así: -L1v-L2v….-Ln-1 vLn , Lo cual pude notarse como conjunto: {-L1,-L2,…..-Ln-1, Ln} Y es equivalente a: L1,L2,…,Ln-1 Ln (las comas son conjunciones)
EJEMPLO En general cualquier cláusula puede escribirse como implicación, dando lugar a lo que se conoce como forma normal conjuntiva. La equivalencia es directa, si tenemos una cláusula de la forma A1 v….vAn v-B1 v….v-Bn equivale a B1^...^Bn A1,v…v An