Minimanualillo de SWI-Prolog
Enviado por felipeelizalde • 26 de Marzo de 2013 • Trabajo • 2.874 Palabras (12 Páginas) • 463 Visitas
Minimanualillo de SWI-Prolog
Roberto Torres de Alba
22 de marzo de 2006
´Indice
1. Introducci´on 2
2. Comandos b´asicos 2
3. Sintaxis de Prolog 2
4. Ayuda 4
5. Consultando y modificando programas 5
5.1. Consultar programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
5.2. Errores y avisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.3. Mostrar base de clausulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
5.4. Modificando la base de clausulas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6. Depurador 6
6.1. Depurador en modo texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
6.2. Depurador gr´afico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
7. Manejo de t´erminos 8
7.1. Jerarqu´ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
7.1.1. ´Atomos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
7.1.2. N´umeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
7.2. Escritura y lectura de t´erminos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
8. Listas 12
9. Conjuntos 12
10.Manejo de archivos 12
11.Todas las soluciones a un objetivo 13
1
1. Introducci´on
Este peque˜no manual pretende ser una introducci´on al uso de SWI-Prolog poni´endolo en relaci´on
con los conceptos de la asignatura de Programaci´on L´ogica de las Ingenier´ıas T´ecnicas de Gesti´on y de
Sistema. La versi´on sobre la que versa este manual es la ´ultima que se puede encontrar, a d´ıa de hoy,
en la p´agina www.swi-prolog.com, que es la 5.6.6 para Windows NT/2000/XP.
2. Comandos b´asicos
Una vez instalado SWI-Prolog y procediendo a su ejecuci´on observamos el shell visto como un n´umero
m´as los caracteres ”?-”. Desde ah´ı es de donde vamos a ajecutar todos los objetivos. Los siguientes
apartados explican de forma muy general todo aquello que es fundamental conocer a la hora de usar
este int´erprete.
1. Consultar un programa Prolog: la manera m´as f´acil de consultar un programa Prolog es usando el
men´u file/consult y navegando por los directorios. Tambi´en existe la posibilidad de hacerlo desde
el shell escribiendo el nombre del programa, sin la extensi´on ”.pl”, encerrada por corchetes ”[ ]” y
seguida de punto. Ej:
[mi_prog].
2. Ayuda: SWI-Prolog posee una ayuda gr´afica f´acil de usar. Basta con poner en el shell ”help.”. Si
se quiere consultar un tema o un predicado en concreto basta con escribir el tema de la siguiente
forma: help(Tema).
3. Ejecuci´on de objetivos: para ejecutar un objetivo simplemente lo escribimos en el shell (seguido de
punto). Si el objetivo no tiene ´exito SWI-Prolog responder´a ”no”. Si ha tenido ´exito y el objetivo
ten´ıa variables entonces devolver´a la unificaci´on de esas variables que ha producido el ´exito y el
programa esperar´a una acci´on del usuario. Ahora debemos escribir un ´unico car´acter. Si buscamos
m´as respuestas escribiremos ”;” (punto y coma), si no pulsamos enter. Para una lista de comandos
escribimos ”h”.
4. Depuraci´on: Para entrar en el modo trace hay que escribir ”trace.”. Al lado del shell deber´ıa
aparecer la palabra ”[trace]”. Para salir de este modo hay que escribir ”notrace.” y ”nodebug.”.
Existe la posibilidad de utilizar un depurador gr´afico escribiendo ”guitracer.”
3. Sintaxis de Prolog
Cualquier programa en Prolog tiene que estar escrito en un fichero de texto plano (sin formato). La
manera m´as sencilla es usar el Bloc de Notas. Dicho archivo debe poseer la extensin ”.pl” para indicar
que contiene c´odigo fuente de Prolog.
Un programa Prolog est´a formado con un conjunto de hechos y de reglas junto con un objetivo. El
archivo del c´odigo fuente de Prolog contendr´a el conjunto de hechos y de reglas y el objetivo ser´a lanzado
desde el shell de SWI-Prolog.
Existen ciertas consideraciones sobre la sintaxis de Prolog:
1. Variables:
El identificador de una variable tendr´a que tener su primera letra en may´usculas.
Ej: X, Atapuerca, Cobaltina, RADgtfCdf
2
2. Constantes:
La primera letra de una constante deber´a estar escrita en min´usculas.
Ej: a, incienso, roberto, rADgtfCdf
Tambi´en se consideran constantes a los n´umeros,
Ej: 1, 5.02, 0.7
las palabras entre comillas simples
Ej: ’a’, ’A’, ’a a’
y la lista vac´ıa [ ].
3. Funciones:
Al igual que las constantes, su primera letra debe ser una min´uscula. Deber´a estar seguido de un
conjunto de t´erminos (otras funciones, variables o constantes) encerrados entre par´entesis.
Ej: f(c,X), conc arbol(Hijo Izq, Raiz, Hijo Der), rADgtfCdf(RADgtfCdf, rADgtfCdf)
4. Predicados:
Su sintaxis es la misma que la de las funciones aunque, por su localizaci´on dentro de la cl´ausula (es
decir, dentro del programa Prolog), el compilador los identificar´a como tal, y no como funciones.
Ej: f(c,X), conc arbol(Hijo Izq, Raiz, Hijo Der), rADgtfCdf(RADgtfCdf, rADgtfCdf)
Tambi´en existe la posibilidad de tener predicados 0-arios.
5. Hechos:
Son cl´ausulas de Horn que poseen un ´unico predicado en la cabeza y ninguno en el cuerpo. Tienen
la siguiente forma en sintaxis de l´ogica de primer orden:
P
En Prolog no se escribe la flecha sino que se pone un punto al final:
p.
donde p es un predicado y tiene que seguir su sintaxis. Ej:
padre(aaron, maria).
compositor(shostakovich).
shostakovich(compositor).
6. Reglas:
Son cl´ausulas de Horn que poseen un ´unico predicado en la cabeza y uno o m´as en el cuerpo.
Tienen la siguiente pinta:
P Q1,Q2,Q3 escritos en sintaxis clausular o
P Q1 ^ Q2 ^ Q3 escritos en sintaxis de l´ogica de primer orden.
En Prolog la flecha se sustituye por ”:-”, las conectivas conjuntivas se escriben como comas ”,” y
la regla termina en punto:
p :- q1, q2, q3.
donde, al igual que los hechos, p y q1, q2 y q3 son predicados. Ej:
cuadrado(X) :-
...