Sunteți pe pagina 1din 7

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  invierno) es una


tautología, con lo que nos queda:

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 literales, 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