professional documents
home
Profile
docsters
request
Blogs
Upload
about me
contact me
user photo
Manuel Arce Garcia
submit clear
Acrobat PDF

Programacion Logica Prolog center doc

1 Bibliograf´ıa y enlaces Sterling, L. y Shapiro, E. “The Art of Prolog” (Segunda edici ´on) MIT Press, 1994. Bratko, I. “Prolog Programming for Artificial Intelligence” (Segunda edici ´on) Addison-Wesley Ltd. 1990. Enlaces Repositorios, bibliograf´ıa, compiladores, etc.: !"#$%&'(#"$'!$#)'*+,#$*$,-./* 0213/4*$,"'(#$,*'567"'37'89*$,':#$&,#;'<+,:#"$'!$#"'=>* *'567"'37'89?5#$,"*$,Ciao Prolog: 6&@ *'5A"'37"'/B$#C'$'2+DE>F*G'$ Prolog de libre distribuci´on, para WINDOWS 95, NT, etc. y MS-DOS): 6&@0!H'>H)E>I./+F*#$%&"B&JHK(L#$*$,$&+*$M>* Transparencias, tarjeta de referencia de Emacs, etc.: NOPO;QSR2TPTU8U8UWVXPY=ZQSV<[MZ\]V<^MZ_V `8QPaSV5b=c;T=de=X;fHg8gb\cHT"Q3gf8YPfFh=T Programaci ´on L´ogica PROLOGProgramaci´on L´ogica Prolog Jes´us Correas Fern´andez jcorreas@fi.upm.es Despacho D-2205 Departamento de Inteligencia Artificial Facultad de Inform´ atica Universidad Polit ´ecnica de Madrid 28660-Boadilla del Monte, Madrid 17 de julio de 2002 Programaci ´on L´ogica PROLOG3 Uso de la l ´ogica (I) ? Uso convencional de los ordenadores – No es f ´ acil determinar la correcci ´on de los programas Programaci ´on L´ogica PROLOGINTRODUCCION L´ogica y Computaci´on direct use of logic as a programming tool program verification proving propertiesdeclarative programming logic of programming constraints logic programming verification logic algorithms programming logic and AI knowledge representation Logic of Computation Computational Logic Programaci ´on L´ogica PROLOG5 Uso de la l ´ogica (III) ? to also improve: YES /NO But, it would be interesting Logic La l ´ogica nos permite representar problemas Pero tambi ´en resolverlos! Programaci ´on L´ogica PROLOGUso de la l ´ogica (II) ? YES /NO Logic Visi ´on tradicional de la l ´ ogica: nos permite razonar sobre la correcci ´on de los programas Programaci ´on L´ogica PROLOG7 Ejemplo de l ´ogica simb´ olica Ejemplo cl ´asico de l ´ ogica: "! #$%&'()*$permite deducir que: "! #$%&Se puede representar mediante l ´ogica simb´ olica como: +-,/.102436587:9<;>=@?$3A2CB(D 97E=:FG+IHJ3K2BLB +MN.5O7E9;>=P?3Q:7R>=P+$FS?EQ:B F , .9<7:=EFS+HJ3Q:7R>=P+$FS?EQ:B TVU + ,>W +MYXZ[F , Elementos fundamentales de la l ´ogica: \ Sint ´ acticos: conectivas, cuantificadores, constantes, variables, s´ımbolos de funci ´on, s´ımbolos de predicado \ Axiom´ aticos: axiomas, reglas de inferencia, demostraci ´on \ Sem´ anticos Programaci ´on L´ogica PROLOGAproximaciones a la computaci´on Aproximaci ´on imperativa \ Basada en secuencias de instrucciones a ejecutar \ Especificaci ´on “bottom-up” a partir de una arquitectura particular \ No adecuada para problemas complejos, como los de IA Lenguaje natural En principio es la aproximaci ´on ideal, pero: \ es prolijo \ es ambiguo \ depende del contexto La l ´ogica: utilizada tradicionalmente por fil ´osofos y matem´aticos para representar y formalizar los razonamientos Programaci ´on L´ogica PROLOG9 Breve historia de la programaci´on l ´ogica D´ecada de 1960 \ Greene: problem solving. \ Robinson: resoluci ´on lineal. D´ecada de 1970 \ Kowalski: interpretaci ´on procedural de cl ´ausulas de Horn: \ Colmerauer: Prolog (Programmation et Logique). \ D.H.D. Warren: Prolog compiler (hecho en Prolog). Muy eficiente (WAM) D´ecadas 1980 y 1990 \ Investigaci ´on en paradigmas y t ´ecnicas de implementaci ´on avanzadas: Jap´on (Quinta Generaci ´on), US (MCC), Europa (ECRC, proyectos ESPRIT). \ Implementaciones comerciales \ Sistemas de programaci ´on l ´ogica paralelos y concurrentes. \ CLP: Programaci ´on l ´ogica de restricciones \ ISO Prolog standard. Programaci ´on L´ogica PROLOGDe la Representaci´on a la Computaci´on La soluci ´on anterior es buena para la representaci ´on del problema Si tuvi ´ eramos un procedimiento de deducci ´on efectivo D una nueva visi ´on de la resoluci ´on de problemas y la computaci ´on [Greene]: \ programar una sola vez el procedimiento de deducci ´on \ encontrar una representaci ´on adecuada del problema \ para obtener soluciones: formular preguntas y dejar que el procedimiento de deducci´on haga el resto Representation Questions Deduction system Problem Answers /Results Algoritmo = l ´ogica + control [Kowalski, 1979] Programaci ´on L´ogica PROLOG11 Caracter´ısticas de la Programaci´on L´ogica Elementos clave \ Unificaci ´on de t ´ erminos \ Mecanismo de inferencia autom ´ atica \ Recursi´on como estructura de control b ´asica \ Visi ´on l ´ogica de la computaci ´on Aplicaciones fundamentales \ Bases de datos \ Representaci ´on del conocimiento \ Lenguaje natural \ Metaprogramaci ´on \ En general, b´usqueda en un espacio de soluciones Programaci ´on L´ogica PROLOG Desarrollos actuales Muchos sistemas CLP comerciales Extensiones: orden superior, inclusi ´on de paradigma de programaci ´on funcional, etc ´ etera Compiladores optimizantes, paralelismo autom ´ atico. Sistemas distribuidos. Dialectos orientados a objetos. Programaci ´on L´ogica PROLOG13 Ejemplo introductorio (II) C´ alculo del factorial de un n´umero: ^\X"O3f;g.ZF\Y_V ^\X"O3f;g.ZF\Y_RZ;c^\X"O3f;g.ZF\YZ;cV Programaci ´on L´ogica PROLOG Ejemplo introductorio (I) Relaciones familiares #:%&+]"#$! #:%&+]"#'! #:A#$H',* #:A#"'WI'& &1*$:"$#%'&( ( #:)#%+* ,#:-*'&( &1*$:").'/( ( #:-.)0! ,#:10'/( 243 546 7"8:9<;>= 243 546 ?81@A;B8 2C3 5C6 DFE:=@HG 2C3 5C6 I1JK81L 2C3 5C6 ?;>M1JKE+N O O O O O P P P P P C´omo se puede representar \RQP`.bYP\,S;[bTT ? Programaci ´on L´ogica PROLOG15 Hechos y reglas Un es una expresi ´on de la forma: 3 F ,WW F:B donde es el nombre de un predicado y F ,W1W Fson t ´ erminos. Los hechos dicen cosas que son ciertas. Las son de la forma: 3 F%, WW F B "!$#&%'.)( ,>3 F ,, WW F , , B WW +* 3AF *, WW F ** B ,-#. /-0 Donde los 1 son nombres de predicado y los F *son t ´ erminos. “ ( ” representa la implicaci´on l ´ogica, y las comas la conjunci´on: 2436587:9<;>=>=>=;&7@?3=>=>=';&7 9?69 AD ... DE2FG587 F 9 ;>=>=>=;&7 F?'F A son ciertos Ejemplos: Hechos Reglas "#:"%&"&+"#$! $*$#A+,#$ +;'2"*:$&&"'$"A1##) 1"*$:)#%+& ( #:)#%:* ,#:-*+& +;'5*:$&"&'$-. ( +;'5*"). "*#"). Programaci ´on L´ogica PROLOG T´erminos Constantes: \ Cadenas de caracteres que empiezan con min´uscula, pueden incluir S y d´ıgitos. Tambi ´en pueden ir entre comillas: e"`M\IH aE\;g.ZF\ N.fYP\ h=\FO3f,SHhg\4H3[bKJ"L3fa"Q3gb \8YO3fMJ,ON'P QJ>R3Yh=fY,TSUJ \ N´umeros: VVV , XWW , Y V] Y >]"Imposible (2) 1. T´ erminos con diferente nombre y/o aridad no se pueden unificar. Solamente se pueden dar valores a las variables. 2. Una variable no se puede ligar a un t ´ ermino que contiene esa variable, porque esto crear´ıa un t ´ ermino infinito test de ocurrencia (occurs check). Programaci ´on L´ogica PROLOG Cl´ausulas, predicados, programas y consultas Reglas y hechos se denominan T@. Todas las cl ´ausulas cuya cabeza tienen el mismo s´ımbolo de predicado y aridad forman un )ih&[i. Las cl ´ausulas en un mismo predicado proporcionan diferentes alternativas: 22 9 ;>=>=>="; 2 ? 29 ;>=>=>=;F =>=>= se puede leer como: “para probar 2 , hay que probar 2 9 ;>=>=>='; 2 ? , o probar 9 ;>=>=>=;F , o ...” Ejemplo: +;'2"*:$&&'$"A1"##) +;'2"*:$&&'$"-. ( +;'5*,). "*#-. +;'2"*:$&&'$"-. ( +;'5*,). "":&1#1%-. 8Un h&[es un conjunto de definiciones de predicado. Una [es una pregunta que se realiza sobre un programa l ´ogico. Ejemplos: &+H'2"*:$&'$,0*!)R 1"*$:%&++. Programaci ´on L´ogica PROLOG19 Ejemplos de consultas Dado el programa... "#:"%&+]#$ "#:"%&+]#"' "#:""#$ ];'!,"* "#:""#'IF' 1"*$:)#%+& ( #:$# :* "]#:-*'&( 1"*$:-.+/ ( #:).%$0 "]#:10'/( ... PROLOG puede responder a consultas como: )QM\;[PgbS;[8b &e`.\IH Q.b;[8gf _V b=c QM\;[PgbS;[8b &e`.\IH [\@Z"[_V HMf \RQ8`3bYPf"SH[b \ a ZhH`3bYV \e`M\IH\RQ8`3bYPf"SH[b \ f]V \e`M\IH ] a ZhF`.bYf \e`M\IH ] [\EZ"[\RQ8`3bYPf"SH[b &e"`M\IH \ V \a ZhH`3bYf \[\@Z"[ Programaci ´on L´ogica PROLOG Rol de la Unificaci´on en la ejecuci ´on Se utiliza la unificaci ´on para pasar par ´ametros en llamadas a definiciones de predicados. Se utiliza la unificaci ´on para devolver valores al final de la ejecuci ´on de un predicado. El Gide un par ´ametro depende de la forma en que se unifican los argumentos al llamar a un predicado. Ejemplo: Consid´erese \!Q8`.bY;f"S;[b &e`M\4H \ _V frente a \RQ8`.bYPf"S;[8b \ 2[\@Z[V Tambi´en nos permite acceder a datos: Dado el programa: YZa ZOb aE\OgMZ;X`EYP\ 2^b=XN.\ Y bH.b;gf T,"("_V [MZ\ ^bXNM\ ZF\ S S ZF\V La consulta: Y=Za ZO=b aE\FOgMZ;X`MYP\ [MZF\ Z\ V proporciona en la variable ZF\ el d´ıa l´ımite para la entrega de matr´ıcula. Programaci ´on L´ogica PROLOG21 Un int ´erprete esquem´ atico de PROLOG (I) Un programa l ´ogico y una consulta . Todas las respuestas (soluciones) posibles a la consulta. \ Una respuesta es del tipo , donde es una sustituci ´on que hace que sea cierto (es decir es una consecuencia l ´ogica del programa). FALLO, si no es posible inferir ninguna respuesta (soluci ´ on). : Lista de objetivos a demostrar. : sustituci ´on a aplicar a la consulta. Programaci ´on L´ogica PROLOG Arbol de b´usqueda C8#:%&+]#$! C.#:%&+]#'! CM#:A#$H',* C @#:A#"'WI'& C!.&1*$:"$#%'&( ( #:)#%+* ,"#:")*%+&( C".&1*$:").'/( ( #:-.)0! ,"#:"0 +/( \RQP`.bYPf,S;[b e`M\IH \ V$# (De qui ´en es Juan abuelo?) {X=miguel} C3, C4, {X=david} EXITO X = miguel EXITO X = david C1, {K=pedro} C2, {K=maria} C1, {Z=pedro} C2, {Z=maria} C5,{L=juan, M=X} C6, {X’=juan, Y=X} abuelo_de(juan,X) padre_de(juan,K),padre_de(K,X) padre_de(juan,Z),madre_de(Z,X) padre_de(pedro,X) padre_de(maria,X) madre_de(pedro,X) madre_de(maria,X) Programaci ´on L´ogica PROLOG23 El primer programa Prolog 0. Crear un nuevo directorio #"$(&#$*$, 1. Entrar en el sistema: Men´u Inicio Programas Emacs 2. Entrar en el directorio !#"$(#$*$&, : C(D#"$(#$*$,'5+#$3. Crear el fichero $*.>F* C(DC(7"$*.>F*'2+#$4. Introducir el programa: "$*( "'!*) $*&+$ "+*3'5+#$5. Salvar el programa: C(DC('2+#$6. Cargar el programa en el int´erprete de Prolog: C(* 7. Cambiar de buffer : C(D$ 8. Realizar una consulta: "$*.'2+#$Programaci ´on L´ogica PROLOG Un int ´erprete esquem´ atico de PROLOG (II) 1. Inicializar la lista de objetivos a demostrar con la consulta . 2. Mientras no est ´e vac´ıo, hacer: 2.1.Tomar un literal de 2.2.Tomar una cl ´ausula (renombrando sus variables) ."(, WW del programa (hecho o regla, ! #" ): \ tal que y $unifican con el unificador . \ Si no hay tal cl ´ausula, terminar con FALLO. 2.3. Eliminar de y a˜ nadir , WW (al principio de) . 2.4. Aplicar a y a . 3. Si (lista de objetivos) es vac´ıa devolver y terminar (la consulta ha tenido EXITO), en otro caso terminar con FALLO. Los pasos 2.1 y 2.2 no est ´an completamente determinados. En PROLOG son, respectivamente, el primer literal y la primera cl ´ausula. En otros sistemas puede ser distinto. Cuando en una rama hay un FALLO, el sistema hace backtracking e intenta otra cl ´ausula en 2.2 Programaci ´on L´ogica PROLOG25 Datos Estructurados Las estructuras de datos se crean usando t ´ erminos compuestos. El nombre de un t ´ ermino compuesto se llama functor Ejemplos de t ´ erminos compuestos: ^b=XN.\ Z\ "e=bc>R[HZFf \;gQMf8Y>Z.YHb"aMbHO3f _=bPg\;gQMf8Y\ \;gQMf8YQ 3f3Z"[3f3Z[&\HgQMfY X=f=Z"[ =f3Z[,Ejemplos de programaci ´on con estructuras de datos: #'#1$*"' : 0: ,'! $%:'H'#"#1$*,$%I$'%7I$'R "$%! 8$%:'H'#"#1$*,: K : ,$% ( $%:'H'#"5K$% $%:'H'#"#1$*,: AI$'&! ,$% ( $%:'H'#"2$% Ejercicio: ¿Qu´e devuelve en \ la consulta g\3Z\ \ NMf;e\"S3ZF`6Z"bPg8[\\ QV ? Programaci ´on L´ogica PROLOG Programaci´on Recursiva A partir del ejemplo de relaciones familiares: "#:"%&+]#$ "#:"%+]#' "#:""#$ ];'!,"* "#:""#"'IF' Se puede definir la relaci ´on \IHObQM\cH\;[f8TT como: #$,&+H'$# ).'/ ( #:-.'/( #$,&+H'$# ).'/ ( #:-.'/( +&$").'/ ( #$,&+H'$#-.'/ +&$").'/ ( #$,&+H'$#-.)0 ,&+$10'/ Dado este programa, PROLOG puede responder a consultas del tipo: Consulta Respuesta \IHObQM\cH\;[f e`M\IH c]V Y = pedro; Y = maria; Y = miguel; Y = david \IHObQM\cH\;[f \ a ZhF`.bY_V X = pedro; X = juan \IHObQM\cH\;[f aE\;gMZ\ e`M\4H V no Ejercicio: Definir Q.\;gMZbIHO=b \ "], Q=gMZaEf\ "], a Z;caE\"SHhbH.bPg\XZFf4H \ ]Programaci ´on L´ogica PROLOG27 Programaci´on Recursiva: Listas (II) Ejercicio: \ Dado el programa: ZhH`M\8Y;b=c \ \ _V \ Obtener el resultado de las siguientes consultas: ZhH`M\8Y;b=c N5\ Q+P N5\\ PZhH`M\8Y;b=c N5\TP +N5\\ P%ZhH`M\8Y;b=c N5\TP +N5\ Q\ PZhH`M\8Y;b=c N'P N \ PPredicado equivalente a ZhH`M\8Y;b=c \ "]: \ ] (unificaci ´ on). Ejemplos: N5\ QP N5\\ P N5\[P N5\\ P \\ N \ &\TP N:]\ P Programaci ´on L´ogica PROLOG Programaci´on Recursiva: Listas (I) Las listas son un caso particular de t ´ erminos compuestos. Estructura binaria: el primer argumento es un elemento y el segundo argumento es el resto de la lista. Para representar esto necesitamos: \ Un s´ımbolo de constante: la lista vacia denotada [ ] \ Una estructura de aridad 2: tradicionalmente el nombre de la estructura es el punto “.” El punto no se usa normalmente: el t ´ ermino .(X,Y) se representa por [XY] (X es la cabeza, Y es la cola) objeto formal sintax. cons sintax. elemento .(a,[ ]) [a [ ]] [a] .(a,.(b,[ ])) [a [b [ ]]] [a,b] .(a,.(b,.(c,[ ]))) [a [b [c [ ]]]] [a,b,c] .(a,X) [a X] [a X] .(a,.(b,X)) [a [b X]] [a,b X] Programaci ´on L´ogica PROLOG29 Programaci´on Recursiva: Listas (IV) Concatenaci ´on de listas: \"QPQ.bH3[ N'P c]Mc]Mc V \"QPQ.bH3[ N \ \ c P c]McON \ =cPR\"Q8Q.bIH3[\ cf]Mc =cV Usos de \"Q8Q.bIH3[\ "] : Concatenar dos listas: ( &+1%0! 0A1+$ Encontrar diferencias entre listas: ( &+-.1 .A1+$ Ejercicio: Cu´ al es el resultado de \Q8Q.bH=[\ ] N5\ QPEjercicio: Definir g8b =bPg=cHb \ "]Programaci ´on L´ogica PROLOG Programaci´on Recursiva: Listas (III) Pertenencia de un elemento a una lista: aMb"aQ3bPg\ N \ \ c P_V aMb"aQ3bPg\ N:] ]Mc PR]cHMf4H 3\;g \ VO@Z"bH.bb[dEZO3f hgf"`H3[ \ : tiene ´ exito si \ no incluye variables. #,\^>]hgf"`H3[ \ V^\8Y8YP\ X;f4H@c"O3\4HO\ : tiene ´ exito si \ es una constante (n ´umero o ´atomo). #,\^>]X;f4H@c"O3\4HO\ V^\Y8YP\ Usos: \ controlar el orden de los objetivos, \ dar flexibilidad a programas que utilizan algunos predicados determinados (por ejemplo, los predicados aritm ´ eticos) Programaci ´on L´ogica PROLOG39 Meta-predicados: Orden superior (II) X;\8Y8Y\ se suele utilizar conjuntamente con los predicados de manipulaci ´on de estructuras: \ ^F`H@XO3f;g"R: es un t ´ ermino compuesto cuyo nombre es y cuya aridad es R . \ \;gPh _"R: El argumento de la posici ´on _ del t ´ ermino es R . Ejercicio: Definir aM\"Q gbP[ MZ;c"O=b=cque aplique el predicado gb;[ de aridad 2 a cada uno de los elementos de .Z;c"O (en el primer argumento de g8bP[ ), y devuelva los resultados (el segundo argumento de gb;[ ) en la lista =bc . Ejemplo: la consulta: aM\"Q ^\X"O3f;g.ZF\YS S N
rate this doc
email this doc
embed this doc
add to folder
digg reddit stumble delicious
flag this doc
497
41
not rated
0
12/24/2007
English
search termpage on Googletimes searched
Preview

Programacion logica y funcional incluye Ejemplos en Prolog

arcenal 12/24/2007 | 2850 | 86 | 0 | educational
Preview

programacion logica

arcenal 12/24/2007 | 346 | 37 | 0 | educational
Preview

Tecnicas basicas de programacion en Prolog

arcenal 12/29/2007 | 1013 | 45 | 0 | educational
Preview

Programacion practica en prolog

arcenal 12/24/2007 | 563 | 45 | 0 | educational
Preview

Aprendizaje automatico programacion logica inductiva

arcenal 12/10/2007 | 229 | 26 | 0 | educational
Preview

An Introduction to Prolog

arcenal 12/10/2007 | 190 | 13 | 0 |
Preview

GNU Prolog

arcenal 12/12/2007 | 133 | 8 | 0 | educational
Preview

Programacion Avanzada

arcenal 12/24/2007 | 390 | 28 | 0 | educational
Preview

Logic programming and Prolog

arcenal 12/22/2007 | 366 | 17 | 0 | educational
Preview

Logica - Immanuel Kant

arcenal 1/2/2008 | 177 | 6 | 0 | educational
Preview

Introduccion a la Programacion Funcional

arcenal 12/22/2007 | 240 | 19 | 0 | educational
Preview

SWI Prolog 5.6 reference manual

arcenal 12/29/2007 | 339 | 6 | 0 | educational
Preview

Logica by Piquer, D. Andres

ebook 2/10/2008 | 49 | 0 | 0 | creative
Preview

prolog lab 8

mehwish 4/3/2008 | 38 | 0 | 0 |
Preview

ESTRUCTURA Y LOGICA INTERNA DE LOS DEPORTES

richardqt 7/4/2008 | 0 | 0 | 0 | educational
Preview

Apuntes de analisis numerico

arcenal 2/9/2008 | 604 | 74 | 2 | educational
Preview

manual de matlab 7 0 español

arcenal 2/9/2008 | 6886 | 192 | 5 | educational
Preview

criptografia y seguridad

arcenal 2/9/2008 | 1033 | 63 | 3 | educational
Preview

criptografia-matematicas

arcenal 2/9/2008 | 887 | 50 | 0 | educational
Preview

norma rs232

arcenal 2/9/2008 | 2017 | 45 | 0 | educational
Preview

cienematixca de un robot

arcenal 2/9/2008 | 676 | 25 | 0 | educational
Preview

topologia

arcenal 1/2/2008 | 170 | 2 | 0 | educational
Preview

Teoria y praxis - EMMANUEL KANT

arcenal 1/2/2008 | 327 | 7 | 0 | educational
Preview

Romero y julieta - Willian Shakespeare

arcenal 1/2/2008 | 690 | 5 | 0 | educational
Preview

Procesos Elementales En Una Computadora Cuantica

arcenal 1/2/2008 | 649 | 4 | 0 | educational
 
review this doc