Programación Lógica y Funcional
UNIDAD 4 Fundamentos de la programación lógica 4.1. 4.2. 4.3. 4.4.
Repaso de la lógica de primer orden. Unifcación y resolución. l!usulas de "orn. Resolución #$D. %rogramación lógica con cl!usulas de "orn.
4.&. #em!ntica de los programas lógicos. 4.'. Representación clausada del conocimiento. 4.(. onsulta de una )ase de cl!usulas 4.*. +spacios de ),s-ueda. 4.. %rogramación lógica con n,meros/ listas y !r)oles. 4.10. ontrol de ),s-ueda en programas lógicos 4.11. anipulación de trminos. %redicados metalógicos.
Fundamentos de la programación lógica Pág. 1
Programación Lógica y Funcional
4.1. Repaso de la lógica de primer orden.
Una contradicción. La palabra no tienen ninguna connotación insultante, implemente es la forma correcta de decir que algo se contradice a sí mismo: l caballo de !antiago es blanco y negro. "ay menos y más de dos man#anas en el cesto. $apcioso. que noque pretende insultante. &ndica las preguntas %tra quepalabra la persona debe ser responderlas no puede responder, porque esa persona no acepta alguna suposición implítica en la pregunta: '($uándo mató a su madre)' '*Pero si mamá +i+e' '*-esponda la pregunta'. Falacia. Una falacia es un error lógico en un ra#onamiento. $uando un ra#onamiento contiene una falacia, ese ra#onamiento no es +álido como ra#onamiento lógico. Puede ser+ir para acer política /'0i padre fue conser+ador, y por tanto yo lo soy, pero sospeco que el suyo fue asaltador de caminos...', pero no son ra#onamientos +álidos en lógica. 0ás sobre falacias en el e2celente artículo de la -ed 3tea sobre lógica y falacias /o en cualquier buen manual de lógica. FU4$&%4. Una cosa que se e+al5a de alg5n modo. Por e6emplo: 'logaritmo /7' o 'esposa /Pepe'. o !e lee 'logaritmo neperiano de 7' y 'esposa de Pepe'. o !i la esposa de Pepe es 0aru6a, 'esposa /Pepe' se e+al5a a 0aru6a. P-8&$38%. Un tipo de función, que se e+al5a a cierto o falso, osea una 'frase' que puede ser cierta o falsa. Por e6emplo: '2 9 7', 'Pepe lle+a un sombrero'. !e dice que los predicados se e+al5an a cierto o falso, lo que en lengua6e normal decimos 'ser' +erdadero o falso.
Pág. 7
Programación Lógica y Funcional
Fundamentos de la programación lógica 4.2. Unifcación y resolución.
l 0todo de -esolución es un intento de mecani#ar el proceso de deducción natural de forma e;ciente. Las demostraciones se consiguen utili#ando el mtodo refutati+o /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 lle+a a una contradicción con las sentencias conocidas /es insatisfactible. ALGORITMO DE RESOLUCION
2isten distintas strategias de -esolución: sistemática, con con6unto soporte, unitaria, primaria y lineal. l procedimiento de resolución consiste en un proceso iterati+o en el cual comparamos /resol+emos, dos cláusulas llamadas cláusulas padres y producimos una nue+a cláusula que se a inferido /deducido, de ellas. <0PL% Por e6emplo, supongamos que tenemos las clausulas siguientes /ambas +erdaderas:
¬
in+ierno ∨ +erano /es in+ierno o es +erano in+ierno ∨ frio /ace frio o no es in+ierno
3plicando resolución, podemos combinar ambas clausulas y obtener: in+ierno ∨ +erano
∨ ¬
in+ierno
∨
frio
3ora podemos acer una simpli;cación, ya que /in+ierno in+ierno es una tautología, con lo que nos queda:
∧¬
+erano ∨ frio /es +erano o ace frio La resolución opera tomando dos cláusulas tales que cada una contenga un mismo literal, en una cláusula en forma positi+a y en la Pág. =
Programación Lógica y Funcional
otra en forma negati+a. l resol+ente se obtiene combinando todos los literales de las cláusulas padres y eliminando aquellos que se cancelan. ALGORITMO DE UNIFICACION
Podemos de;nirque la compara Uni;cación como yundescubre procedimiento de empare6amiento dos literales si e2iste un con6unto de sustituciones que los aga idnticos. ALGORITMO
1. n primer lugar se comprueba si los predicados coinciden. !i es así, seguimos adelante> si no es que no son uni;cables. 7. !i el predicado concuerda, comen#amos a comparar los argumentos. !i el primero de ellos coincide en ambos literales, continuamos con el siguiente... y así asta completar todos los argumentos. =. Para conseguir que cada argumento de un literal sea coincidente conque su omólogo en empare6arlos. el otro literal, debemos buscar una sustitución nos permita ?. La 5nica condición que debe re unir esta susti tución es que a 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. 6emplo !e uni;cara P/2, 2 con P/y, #: Primera sustitución: /y@2 -esultado: P/y, y P/y, # !egunda sustitución: /#@y -esultado: P/#, # P /#, # La sustitución resultante es la composición de las sustituciones: s A B #@y , y@2C
Pág. ?
Programación Lógica y Funcional
Fundamentos de la programación lógica 4.3. l!usulas de "orn. Resolución #$D.
n lógica proposicional, una fórmula lógica es una cláusula de "orn si es una cláusula /disyunción de literales con, como má2imo, un literal positi+o. !e llaman así por el lógico 3lfred "orn, el primero en seDalar la importancia de estas cláusulas en 1E1. Una cláusula de "orn con e2actamente un literal positi+o es una cláusula 'de;nite'> en álgebra uni+ersal las cláusulas 'de;nites' resultan como cuasiGidentidades. Una cláusula de "orn sin ning5n literal positi+o es a +eces llamada cláusula ob6eti+o /goal o consulta /query, especialmente en programación lógica. <0PL%! !e llaman cláusulas de "orn aquellas que tienen como má2imo un literal positi+o. "ay dos tipos: •
•
•
Las cláusulas determinadas /de;nite clauses, o Hcláusulas de "orn con cabe#aI son las que sólo tienen un literal positi+o: /Jp1 Jp7 ... JpK q /p1 p7 ... pK q $aso particular son las no tienen más que ese literal positi+o, que representan HecosI, es decir, conocimiento factual. Los ob6eti+os determinados /de;nite goals, o Hcláusulas de "orn sin cabe#aI son las que no tienen ning5n literal positi+o: /Jp1 Jp7 ... JpK J/p1 p7 ... pK
-!%LU$&%4 !L8 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 acer resolución y en la selección de los literales a utili#ar en la resolución.
Pág.
Programación Lógica y Funcional
Los ecos y las reglas se denominan clausulas de;nidas: Los ecos representan ecos acerca de los ob6etosM /de nuestro uni+erso de discurso, relaciones elementales entre estos ob6etos las reglas e2presan relaciones condicionales entre los ob6etos, dependencias. -NL3! Un eco es una regla con cuerpo +acío un ob6eti+o es una regla con cabe#a +acía y el 2ito es una regla con cabe#a y cuerpo +acíos. n las cláusulas de "orn se traba6a con secuencias de literales en +e# de con6untos sto implica dos cosas: los literales pueden aparecer repetidos en el cuerpo ay un orden en los literales del cuerpo. <0PL% Un predicado p queda de;nido por el con6unto de cláusulas /ecos y reglas cuyas cabe#as tienen ese símbolo de predicado. 3sí pues la de;nición de un predicado en general tendrá el aspecto:
Pág. O
Programación Lógica y Funcional
Fundamentos de la programación lógica 4.4. %rogramación lógica con cl!usulas de "orn.
La aplicación de refutación por resolución en cláusulas de "orn es un mecanismo ampliamente utili#ado. l lengua6e de programación Prolog, se basa en este tipo de cláusulas y los programas implementados en l se denominan programas lógicos de;nidos. enemos tres tipos de cláusulas de "orn Tipo I: un átomo simple /eco e6. P11/2 Tipo II: una implicación /llamada regla cuyo antecedente consiste de
una con6unción de literales positi+os y el consecuente es sólo un literal positi+o: L1QL7RQLnG1 Ln donde las L son literales positi+os. 0ucas +eces se nota: L1,L7,R,LnG1 Ln . Tipo III : Un con6unto de literales negados, que puede notarse como
una implicación sin consecuente L1, L7RLn La notación utili#ando implicación es la preferida para escribir cláusulas de "orn y resulta equi+alente a la notación utili#ando la disyunción de literales. Una cláusula de "orn notada como disyunción ;nita de literales, siendo las L literales, se escribe así: GL1+GL7+R.GLnG1 +Ln , Lo cual pude notarse como con6unto: BGL1,GL7,R..GLnG1, LnC S es equi+alente a: L1,L7,R,LnG1 Ln /las comas son con6unciones
Pág. T
Programación Lógica y Funcional
<0PL% n general cualquier cláusula puede escribirse como implicación, dando lugar a lo que se conoce como forma normal con6unti+a. La equi+alencia es directa, si tenemos una cláusula de la forma 31 +R.+3n +G1 +R.+Gn equi+ale a 1Q...Qn 31,+R+ 3n Fundamentos de la programación lógica 4.&. #em!ntica de los programas lógicos.
!emántica pro+iene de un +ocablo griego que puede traducirse como signi;cati+oM. !e trata de aquello perteneciente o relati+o a la signi;cación de las palabras. Por e2tensión, se conoce como semántica al estudio del signi;cado de los signos lingVísticos y de sus combinaciones. La semántica lógica, por otra parte, se encarga del análisis de los problemas lógicos de signi;cación. Para esto estudia los signos /parntesis, cuanti;cados, etc., las +ariables y constantes, los predicados y las reglas. La semántica lógica, por otra parte, se encarga del análisis de los problemas lógicos de signi;cación. Para esto estudia los signos /parntesis, cuanti;cados, etc., las +ariables y constantes, los predicados y las reglas.
$3-3$-&!&$3! W Una tarea de la semántica es in+estigar las $%48&$&%4! 8 X-838 de los enunciados W La semántica formal se ocupa 5nicamente de los aspectos formales o estructurales de las condiciones de +erdad W Un enunciado comple6o será +erdadero o falso en función de la forma en que estn dispuestos los enunciados simples que lo componen W sta forma +iene dada por la disposición de las conecti+as dentro del enunciado.
Pág. Y
Programación Lógica y Funcional
6emplo
La semántica operacional de los programas lógicos está basada en el mtodo de resolución de -obinson, aplicado a cláusulas de "orn. sto supone una limitación tanto sintáctica como semántica que, a pesar de las +enta6as teóricas y prácticas que trae consigo, restringe en algunos casos la aplicabilidad de la Programación en Lógica. 3lternati+as para capturar la semántica de los programas lógicos. W !emántica %peracional W !emántica 8eclarati+a W !emántica de Punto Fi6o
Pág. E
Programación Lógica y Funcional
Fundamentos de la programación lógica 4.'. Representación clausada del conocimiento.
-epresentación del conocimiento es un trmino com5nmente usado para referirse a representaciones pensadas para el procesamiento por ordenadores modernos, y en particular, para representaciones compuestas por ob6etos e2plícitos y de a;rmaciones sobre ellos. -epresentar el conocimiento en una forma e2plícita como esta permite a los ordenadores sacar conclusiones de conocimiento pre+iamente almacenado. l pasa6e a forma clausal se puede reali#ar aplicando cinco reglas: •
•
•
•
liminar implicaciones, despla#ar negaciones acia interior de la sentencia /sobre las con6unciones, disyunciones y cuanti;cadores asta quedar delante de fórmulas atómicas. 8espla#ar las disyunciones acia el interior de la sentencia /sobre las con6unciones y cuanti;cadores asta quedar conectando 5nicamente literales. 8espla#ar 8isyunciones: para despla#ar las disyunciones al interior de las sentencias de tal forma que conecten literales /átomos o átomos negados liminación de cuanti;cadores e2istenciales: La eliminación de un cuanti;cador e2istencial introduce una sentencia que no es equi+alente, que implica la sentencia original pero no es implicada por esta.
Pág. 1Z
Programación Lógica y Funcional •
2presar las disyunciones como cláusulas /en forma norma con6unti+a.
$3-3$-&!&$3! W Los ob6etos y las relaciones importantes deben aparecer e2plícitamente y de forma con6unta W Las restricciones inerentes al problema se muestran pero no los detalles irrele+antes. W La representación debe ser transparente: se entiende lo que se dice. W $ompleta y concisa: stán representados con e;cacia todos los ob6etos y relaciones. W -ápidos y computables: !e puede almacenar y recuperar la información con rapide#, y se pueden crear mediante un procedimiento ya e2istente. W Partes de una representación: W Parte l2ica: 8etermina qu símbolos están permitidos en el +ocabulario de la representación.
Fundamentos de la programación lógica 4.(. onsulta de una )ase de cl!usulas
Las cláusulas contienen la especi;cación o implementación del con6unto de ecos y reglas que componen el programa. 8ica sección se encabe#a con la palabra $L3U!! Una cláusula puede ser: Un eco: por e6emplo padre /
Programación Lógica y Funcional
cabe#a :G o6eti+o1, o6eti+o7, ..., o6eti+o4. odo gira en torno al operador ':G'. Lo que aparece a la i#quierda se denomina cabe#a y la secuencia de ob6eti+os que aparece a la dereca se denomina cuerpo. La cabe#a un trmino Por e6emplo, /[, decir, 17 podría la cabe#a deesuna cláusulasimple. del predicado p@7. ps todasserlas cláusulas de un mismo predicado tienen en la cabe#a un trmino con el mismo functor y aridad, aunque los argumentos pueden ser distintos. l cuerpo no es más que el con6unto de condiciones que deben cumplirse /tener 2ito para que el predicado tenga 2ito si lo in+ocamos con un ob6eti+o que uni;que con la cabe#a. !i una misma +ariable aparece en dos cláusulas diferentes, entonces son +ariables diferentes pero con el mismo nombre. -ecuerde que el ámbito de +isibilidad de las +ariables es una 5nica cláusula.
Fundamentos de la programación lógica 4.*. +spacios de ),s-ueda.
$uando se resuel+e un problema, se busca la me6or solución entre un con6unto de posibles soluciones. 3l con6unto de todas las posibles soluciones a un problema concreto se llama espacio de b5squeda. $ada punto en el espacio de b5squeda representa una posible solución. $ada posible solución se le puede asociar un ;tness o un +alor que indicará cómo de buena es la solución para el problema. Un algoritmo gentico /3N de+ol+erá la me6or solución de entre todas las posibles que tenga en un momento dado. 2isten mucos mtodos que se usan para buscar una solución +álida, pero no necesariamente obtienen la me6or solución. 3lgunos de estos mtodos son los algoritmos de escalada, bacKtracKing o +uelta atrás, b5squeda a ciegas y los algoritmos genticos. Las soluciones que encuentran estos tipos de b5squeda suelen ser buenas soluciones, pero no siempre encuentran la óptima. Pág. 17
Programación Lógica y Funcional
n optimi#ación, espacio de b5squeda se re;ere al dominio de la función a ser optimi#ada. n el caso de los algoritmos de b5squeda, que mane6an espacios discretos, se re;ere al con6unto de todas las posibles soluciones candidatas a un problema. Fi6ada una regla de cálculo, los distintos cálculos posibles para un programa constituido por unagrá;camente cuestión \ y una base deun conocimiento P se pueden representar mediante árbol de b5squeda caracteri#ado por: su raí#, etiquetada con la cuestión \ o primer resol+ente> y los demás nodos etiquetados con los resol+entes producidos por pasos de resolución> además para cada nodo etiquetado con un resol+ente no +acío, si 3 es la fórmula que selecciona la regla de cálculo, e2istirán tantos descendientes como cláusulas con cabecera coincidente con 3 e2istan en el procedimiento de de;nición del correspondiente predicado, los nodos etiquetados con resol+entes +acíos no tienen descendientes. Las distintas reglas de b5squeda representan distintas formas de recorrido de los árboles de b5squeda.
Fundamentos de la programación lógica 4.. %rogramación lógica con n,meros/ listas y !r)oles.
4umricos n P-%L%N los ob6etos numricos pueden corresponder a tipos integer o ]oat de $. Para reali#ar operaciones numricas, se tiene el predicado is, que se comporta como una asignación en un lengua6e imperati+o. 3sí, el ob6eti+o [ is ^e2presión9 será +erdadero cuando [ uni;que con el resultado numrico de e+aluar ^e2presión9. <0PL% si de;nimos: 0asuno/[, S: G S is [_1. [masuno /[, S: G S A [_1. Pág. 1=
Programación Lógica y Funcional
%bser+aremos el siguiente comportamiento: )G masuno /,. Ses )G 2masuno/?, 4o Lista ste algoritmo es my ine;ciente en el peor caso tendrá que generar las 4 permutaciones para una lista de largo 4. !e representan utili#ando trminos compuestos f/t1, . . . , tn /para los naturales ya emos utili#ado una estructura de datos s/`.
Fundamentos de la programación lógica 4.10. ontrol de ),s-ueda en programas lógicos
l predicado /leído corte proporciona control sobre el mecanismo de bacKtracKing de programación lógica: siempre tiene 2ito pero tiene el efecto lateral de podar todas las elecciones alternati+as en el nodo correspondiente en el árbol de b5squeda. ste es un predicado metaGlógico o e2traGlógico: es un predicado que afecta al comportamiento operacional de programación lógica. s en cierto sentido un predicado impuro /a6eno a la lógica pero es un predicado muy 5til. . . casi fundamental para el programador de programación lógica. ($ómo opera el corte) $uando se resuel+e un ob6eti+o p con una clausula de la forma: Pág. 1?
Programación Lógica y Funcional
P: G q1, R, qn , r1, R, rm Programación lógica intenta resol+er los ob6eti+osq1, R, qn normalmente /aciendo bacKtraKing sobre cada uno de ellos si es necesario> <0PL% l corte en e6emplos /& n la página )) de;níamos un predicado para incrementar en 1 los enteros de una lista /de6ando intactos los no enteros: incLst7/ , . incLst7/ [ [s , S Ss : G integer/ [ , , S is [_1, incLst7/ [s, Ss . incLst7/ [ [s , [ Ss : G incLst7/ [s, Ss .
Fundamentos de la programación lógica 4.11. anipulación de trminos. %redicados metalógicos
l primer mecanismo es el A que usamos para uni;car trminos. l operador AA@7 y se satisface cuando sus dos operando son trminos literalmente iguales, la diferencia con A es que AA no fuer#a uni;cación. l operador AA@ es la negación del operador anterior y se satisface cuando sus operandos son trminos literalmente diferentes: )G f/[ AA f /S. 4o )G [ A S, f/[ AA f /S. 4o Pág. 1
Programación Lógica y Funcional
2isten operadores para el cequeo de tipos de trminos, se pueden usar para mane6o de errores, el predicado +ar@1 se satisface cuando su argumento es una +ariable no uni;cada, non+ar@1 es su negación, e6emplo: 0asuno /[,S :G +ar /[, rite /--%-:, hrite/primer argumento no instanciado, , fail. La construcción sir+e para pasar nombres de predicados como argumentos. l siguiente predicado determina si cierta lista esta ordenada seg5n alg5n criterio que no se conoce a priori: ord$ /`,`. ord$ /[, S L, $riterio : G 0enor A.. $riterio, [, S, call /0enor, ord$ /SL, $riterio.
Pág. 1O