Вы находитесь на странице: 1из 14

1.

Fundamentos de PROLOG
CONTENIDO
1.1. Introduccin
1.2. Los hechos PROLOG
1.3. Las preguntas PROLOG
1.4. Las reglas PROLOG
1.5. La Sintaxis PROLOG
1.6. Significado declarativo y procedural de los programas
1.7. El entorno de programacin ECLiPSe
1.1. Introduccin
PROLOG es un lenguaje de programacin declarativo. Los lenguajes declarativos se
diferencian de los lenguajes imperativos o procedurales en que estn basados en
formalismos abstractos (PROLOG est basado en la lgica de predicados de primer
orden y LISP, otro lenguaje de programacin declarativa, en lambda calculo), y por
tanto su semntica no depende de la mquina en la que se ejecutan. Las sentencias en
estos lenguajes se entienden sin necesidad de hacer referencia al nivel mquina para
explicar los efectos colaterales. Por tanto, un programa escrito en un lenguaje
declarativo puede usarse como una especificacin o una descripcin formal de un
problema. Otra ventaja de los programas escritos en lenguajes declarativos es que se
pueden desarrollar y comprobar poco a poco, y pueden ser sintetizados o
transformados sistemticamente.
PROLOG es un lenguaje de programacin muy til para resolver problemas que
implican objetos y relaciones entre objetos. Est basado en los siguientes
mecanismos bsicos, que se irn explicando a lo largo de este captulo:
Unificacin
Estructuras de datos basadas en rboles
Backtracking automtico
La sintaxis del lenguaje consiste en lo siguiente:
Declarar hechos sobre objetos y sus relaciones
Hacer preguntas sobre objetos y sus relaciones
Definir reglas sobre objetos y sus relaciones
Cada una de estas partes se explica en los siguientes apartados.
1.2. Los hechos PROLOG
Para explicar los fundamentos de PROLOG vamos a utilizar el tpico ejemplo de las
relaciones familiares.
Para decir que Laura es uno de los dos progenitores de Damin, podramos declarar
el siguiente hecho PROLOG:
progenitor(laura, damian).
progenitor es el nombre de la relacin o nombre de predicado y laura y
damian son los argumentos. Los hechos acaban siempre con punto. Nosotros
interpretaremos que Laura, primer argumento de la relacin, es la madre de Damin,
segundo argumento de la relacin. Sin embargo, este orden es arbitrario y cada
programador puede darle su propio significado. Los nombres de las relaciones y los
argumentos que se refieren a objetos o personas concretas se escribirn con
minscula.
Otros ejemplos de hechos pueden ser los siguientes:
le_gusta_a(juan,maria).
valioso(oro).
tiene(juan,libro).
da(juan,libro,maria).
Los nombres tambin son arbitrarios y el programador decidir la interpretacin que
haga de ellos. La relacin le_gusta_a(juan,maria) es equivalente a la relacin a(b,c),
aunque para que la interpretacin sea ms sencilla, se recomienda que los nombres se
elijan de forma que ayuden a su interpretacin.
Los hechos no tienen que reflejar el mundo real necesariamente, pero ser nica y
exclusivamente lo que PROLOG tomar como verdadero. Un conjunto de hechos
(tambin llamados clusulas), junto con un conjunto de reglas, forman lo que se
llama una base de datos PROLOG.
1.3. Las preguntas PROLOG
Sobre un conjunto de hechos se pueden realizar una serie de preguntas. Por ejemplo:
?- le_gusta_a(juan,maria).
PROLOG busca automticamente en la base de datos si existe un hecho que se puede
unificar (es decir, tiene el mismo nombre de predicado, el mismo nmero de
argumentos o aridad y cada uno de los argumentos tiene el mismo nombre, uno a
uno) con el hecho que aparece en la pregunta. PROLOG contestar SI si encuentra
ese hecho y NO si no lo encuentra. La contestacin NO no implica que el hecho
sea falso (aunque s lo sea para nuestra base de datos), sino que no se puede probar
(en general) que sea verdadero con el conocimiento almacenado en la base de datos.
Para realizar preguntas ms interesantes, como por ejemplo, qu le gusta a Mara o
cules son los padres de Damin, se usarn las variables. En PROLOG las variables
empiezan por mayscula. Por ejemplo:
?-le_gusta_a(maria,X).
?-progenitor(Y,damian).
Para obtener la o las respuestas, PROLOG recorre la base de datos hasta encontrar el
primer hecho que coincide con el nombre de la relacin y su aridad y con los
argumentos que no son variables. Marca esa posicin para poder recordar dnde se
qued en el recorrido por la base de datos. La o las variables se instancian al valor
que le corresponde segn el lugar que ocupan en la relacin, y ese valor es la
respuesta que proporciona PROLOG. Si pulsamos RETURN no obtendremos ms
que la primera respuesta. Si se quieren obtener todas las respuestas (para el caso de
que exista ms de una) se teclea ;. Cuando pulsamos ;, PROLOG sigue
automticamente la bsqueda desde la marca de posicin en la que se haba quedado
en la base de datos. Se dice entonces que PROLOG intenta resatisfacer la pregunta.
Se desinstancian las variables que se haban instanciado, y sigue buscando otro hecho
que coincida sintcticamente con la pregunta. A este mecanismo se le llama
backtracking, y PROLOG lo hace automticamente.
Para resolver preguntas ms complejas, como por ejemplo, se gustan Juan y Mara?
o tienen Ana y Damin un progenitor comn, es decir, son hermanos? o quin es el
nieto(s) de Toms?, se utilizan conjunciones de objetivos, es decir, preguntas
separadas por comas, que en PROLOG corresponden a la Y lgica.
?-le_gusta_a(juan,maria), le_gusta_a(maria,juan).
?-progenitor(X,ana), progenitor(X,damian).
?-progenitor(tomas,X), progenitor(X,Y).
En una conjuncin de objetivos correspondientes a la misma pregunta, la misma
variable se refiere al mismo objeto (en el segundo ejemplo, X se refiere a la misma
persona). En preguntas u objetivos distintos, el mismo nombre de variable se refiere
a distintos objetos (la X del segundo y el tercer ejemplo se refieren a personas
distintas).
Para buscar las soluciones a una conjuncin de objetivos, PROLOG establece una
marca de posicin para cada objetivo, y recorre toda la base de datos en la bsqueda
de cada objetivo.
Ejemplo 1.1
Suponemos definida la siguiente base de datos de relaciones familiares:
progenitor(clara,jose).
progenitor(tomas, jose).
progenitor(tomas,isabel).
progenitor(jose, ana).
progenitor(jose, patricia).
progenitor(patricia,jaime).
clara
tomas
jose
isabel
ana patricia
jaime
Para demostrar si Clara es bisabuela de Jaime, utilizaramos la siguiente conjuncin
de objetivos:
?-progenitor(clara,X), progenitor(X,Y), progenitor(Y,jaime).
Para explicar el funcionamiento del backtracking que permite obtener todas las
respuestas de la anterior conjuncin de objetivos, vamos a utilizar el esquema de
deduccin natural.
?-progenitor(clara,X), progenitor(X,Y), progenitor(Y,jaime).
X=jose
?-progenitor(clara,jose), progenitor(jose,Y), progenitor(Y,jaime).
Y=ana Y=patricia
progenitor(jose,ana),progenitor(ana,jaime) progenitor(jose,patricia),progenitor(patricia,jaime)


Explicacin: Se intenta satisfacer X del primer objetivo de la conjuncin de
objetivos, progenitor(clara,X). El objetivo coincide con el primer hecho de la base de
datos, donde se quedar su marca de posicin asociada, y la variable X se instancia a
jose. Dentro de una misma pregunta, las variables con el mismo nombre se refieren
al mismo objeto, por tanto se sigue comprobando si se puede demostrar que
progenitor(jose,Y), progenitor(Y,jaime). Para el objetivo progenitor(jose,Y) se
empieza a buscar en la base de datos desde el principio, hasta encontrar un hecho que
unifique. El primer hecho que coincide es progenitor(jose, ana), por tanto Y se
instancia a ana y en este hecho se queda la marca de posicin para este objetivo.
Ahora se comprueba si se puede demostrar que es verdad progenitor(ana,jaime).
Como este hecho no est en la base de datos, esta no es una solucin, y se seala en
el rbol de derivacin natural, con el smbolo . La ltima variable que se haba
instanciado se desinstancia, y se sigue buscando en la base de datos, desde la marca
de posicin asociada, otro hecho que coincida con el objetivo actual. En este caso,
progenitor(jose,patricia). se instancia a !patricia". #hora se demostrar$ si se
cumple progenitor(patricia,jaime). %omo este s que es un hecho de la base de datos,
la instanciacin &'jose e 'patricia es una solucin a la conjuncin de objetivos del
ejemplo, y se se(ala en el $rbol con el smbolo . no hay m$s soluciones, porque
no hay otro hecho de la base de datos que coincida con progenitor(clara,&).
Ejerci ci o 1.1
)ada la base de datos *amiliar del ejemplo +.+, se pide la respuesta de ,-.L./ y el
enunciado verbal de las siguientes preguntas0
a) ?-progenitor(jaime,X).
b) ?-progenitor(X,jaime).
c) ?-progenitor(clara,X), progenitor(X,patricia).
d) ?-progenitor(tomas,X), progenitor(X,Y), progenitor(Y,Z).
Ejerci ci o 1.2
)ada la base de datos *amiliar del ejemplo +.+, *ormula en ,-.L./ las siguientes
preguntas0
a) 12ui3n es el progenitor de ,atricia4
b) 15iene 6sabel un hijo o una hija4
c) 12ui3n es el abuelo de 6sabel4
d) 1%u$les son los tos de ,atricia4 (no e7cluir al padre)
1.4. Las reglas PROLOG
Existe en PROLOG la posibilidad de definir la relacin abuelo(X,Y) o la relacin
tio(X,Y) como reglas, adems de poderlo hacer como hechos o como conjuncin
de objetivos.
Ejemplo 1.2
abuelo(X,Y):- progenitor(X,Z), progenitor(Z,Y).
tio(X,Y):- progenitor(Z,Y), progenitor(V,Z), progenitor(V,X).
V
Z
X
Y
A la primera parte de la regla se le llama cabeza o conclusin, el smbolo ":-" es el
condicional (SI), y a la parte de la regla que est despus de :- es el cuerpo o parte
condicional. El cuerpo puede ser una conjuncin de objetivos separados por comas.
Para demostrar que la cabeza de la regla es cierta, se tendr que demostrar que es
cierto el cuerpo de la regla.
Por lo visto hasta ahora, las clusulas PROLOG son de tres tipos: hechos, reglas y
preguntas. Las clusulas PROLOG consisten en una cabeza y un cuerpo. Los hechos
son clusulas que tienen cabeza pero no tienen cuerpo. Las preguntas slo tienen
cuerpo. Las reglas tienen siempre cabeza y cuerpo. Los hechos son siempre ciertos.
Las reglas declaran cosas que son ciertas dependiendo de una condicin. El programa
PROLOG (o base de datos PROLOG) est formado por hechos y reglas y para
PROLOG no hay ninguna distincin entre ambas. Las preguntas se le hacen al
programa para determinar qu cosas son ciertas.
Ejerci ci o 1.3
)ada la base de datos *amiliar del ejemplo +.+, y suponiendo definidas las
siguientes clusulas:
hombre(X).
mujer(X).
progenitor(X,Y).
dif(X,Y):- X\=Y.
)onde las 8 primeras cl$usulas se de*inir$n como hechos (por tanto no se podr$
poner una variable como argumento, ya que una variable hara que el hecho *uera
cierto para cualquier objeto) y la ltima como una regla (donde el smbolo 9'
signi*ica distinto). Escribir las reglas de ,-.L./ que e7presen las siguientes
relaciones0
a) es_madre(X).
b) es_padre(X).
c) es_hijo(X).
d) hermana_de(X,Y).
e) abuelo_de(X,Y) y abuela_de(X,Y).
f) hermanos(X,Y). Tened en cuenta que una persona no es hermano de s mismo.
g) tia(X,Y). Excluid a los padres.
Con la definicin del tipo de reglas anterior se pueden resolver problemas
interesantes, sin embargo, la gran potencia del PROLOG est en la definicin de
reglas recursivas. Como hemos visto en ejemplos anteriores se puede definir la
relacin progenitor, y las reglas abuelo, bisabuelo, tatarabuelo, etc. En general, puede
ser interesante definir la relacin predecesor(X,Y). Un predecesor de X podr ser el
progenitor de X. Tambin ser predecesor si es abuelo/a, si es tatarabuelo/a, etc., es
decir, necesitaramos un conjunto de reglas como:
predecesor(X,Y):-progenitor(X,Y).
predecesor(X,Y):-progenitor(X,Z), progenitor(Z,Y).
predecesor(X,Y):-progenitor(X,Z), progenitor(Z,V),
progenitor(V,Y).
La definicin de varias reglas con el mismo nombre de relacin equivale en
PROLOG a la O lgica o disyuncin. Pero la definicin de este conjunto de reglas
es infinito, nunca terminaramos de escribirlo. La siguiente regla recursiva nos
permitir definirlo.
Ejemplo 1.3
predecesor(X,Y):-progenitor(X,Y).
predecesor(X,Y):-progenitor(X,Z), predecesor(Z,Y).
La primera definicin de predecesor corresponde al caso ms sencillo en el que el
predecesor corresponde al progenitor. Es lo que llamaremos la regla de salida de la
recursividad. Si al intentar comprobar si una persona es predecesora de otra, se halla
en la base de datos que la primera persona es progenitora de la segunda, se habr
demostrado y PROLOG responder que s. En caso contrario, se intentar demostrar
que es predecesor utilizando la segunda regla, que contiene la llamada recursiva.
Ejerci ci o 1.4
)ada la base de datos *amiliar del ejemplo +.+0
a) Define una regla que permita obtener los sucesores de una persona.
b) Comprueba el funcionamiento de PROLOG para obtener los sucesores de Clara.
Escribir el rbol de derivacin natural.
c) Es una alternativa vlida a la definicin de predecesor la siguiente?
&
:

Figura 1.1 )iagrama que e7plica la de*inicin de predecesor. La lnea


continua se re*iere a un progenitor directo y la discontinua a un predecesor.
predecesor(X,Z):-progenitor(X,Z).
predecesor(X,Z):- progenitor(Y,Z), predecesor(X,Y).
Dibuja un diagrama que explique la definicin.
1.5. La sintaxis PROLOG
Los objetos o trminos PROLOG pueden ser objetos simples o estructuras (ver figura
1.2). Los objetos simples pueden ser constantes o variables. Las constantes sern
tomos o nmeros. Los tomos empiezan con letra minscula (nunca con nmeros),
pueden contener caracteres especiales y pueden ser nombres entre comillas simples.
Los nmeros sern enteros o reales, sin una definicin explcita de tipos. PROLOG
se utiliza para una programacin simblica, no numrica, por eso los enteros se
utilizarn por ejemplo para contar el nmero de elementos de una lista, pero los
reales son poco utilizados. Las variables empiezan con mayscula o con subrayado.
Las variables annimas son aquellas cuyo nombre es slo el carcter subrayado (_).
Se usan cuando no es importante el nombre de la variable o cuando la variable no
puede unificar con otra, dentro de la misma clusula.
Figura 1.2: Trminos PROLOG
Por ejemplo:
tiene_un_ijo(X):-progenitor(X,Y).
Y no unifica con otra variable en la definicin de la relacin tiene_un_hijo, por
lo que es aconsejable sustituirla por una variable annima (en algunos entornos de
programacin PROLOG se advierte sobre la conveniencia de ello).
tiene_un_ijo(X):-progenitor(X,_).
Es importante sealar que el alcance de una variable es la clusula donde aparece, y
el alcance de una constante es todo el programa PROLOG.
objetos
{
simples
{
constantes
{
tomos
nmeros
ariables
{
ariables normales
ariablesan!nimas
estructuras
La sintaxis de las estructuras es la misma que la de los hechos. Los funtores de las
estructuras son los nombres de los predicados de hechos y reglas. Los argumentos de
los hechos y las reglas son los componentes de las estructuras.
Ejemplo 1.4
tiene(juan,libro).
tiene(juan,libro(don_!uijote,autor(miguel,cervantes),"#$%)).
Las estructuras se pueden representar mediante rboles. Por ejemplo, un punto en 2-
dimensiones se puede representar con la estructura punto(X,Y) y un punto en 3-
dimensiones con la estructura punto(X,Y,Z). Ambas estructuras son distintas porque
tienen distinta aridad o nmero de argumentos. La estructura en rbol
correspondiente sera:
punto punto
X Y X Y Z
Un segmento se puede representar con 2 puntos, segmento(punto(X1,Y1),
punto(X2,Y2)); y un tringulo con 3 puntos, triangulo(punto(X1,Y1), punto(X2,Y2),
punto(X3,Y3)).
La operacin ms importante sobre trminos es la unificacin. Dos trminos pueden
unificarse si son idnticos o las variables de ambos trminos pueden instanciarse a
objetos tales que despus de la sustitucin de las variables por esos objetos, los
trminos sean idnticos.
Ejemplo 1.5
&eca(',(,)**+) , &eca('),ma-o,.)
piloto(.,/ondres) , piloto(londres,paris)
punto(X,Y,Z) , punto(X),Y),Z))
&(X,a(b,c)) , &(Z,a(Z,c))
En el caso de que ?-X=Y sea una pregunta PROLOG, puede ocurrir varias cosas:
(1) que una de las dos variables no est instanciada pero la otra s, entonces el
objetivo se satisface y la variable que no estaba instanciada queda instanciada
al valor de la variable que estaba instanciada;
(2) que ambas variables estn sin instanciar, entonces el objetivo se satisface y
adems ambas variables quedan compartidas, es decir, que cuando una de las
dos variables se instancie, la otra quedar instanciada a lo mismo;
(3) si X e Y son constantes ambas tiene que ser el mismo objeto, y si son
estructuras, tienen que tener el mismo funtor, el mismo nmero de
argumentos y que coincidan todos los argumentos.
Usando solamente la unificacin se pueden resolver problemas interesantes.
Ejemplo 1.6
vertical(segmento(punto(X,Y)),punto(X,Y#)).
ori0ontal(segmento(punto(X),Y),punto(X#,Y)).
Un segmento vertical en 2-D est formado por dos puntos, en los cuales la
coordenada X coincide. Y un segmento horizontal en 2-D est formado por dos
puntos, en los cuales la coordenada Y coincide.
Ejerci ci o 1.5
Decir si la unificacin tiene xito y cul es el resultado de la instanciacin de las
variables en:
triangulo(punto(-1,0),P2,P3) = triangulo(P1,punto(1,0),punto(0,Y)).
A qu familia de tringulos da lugar la instanciacin resultante?
Ejerci ci o 1.6
Con la siguiente definicin de segmento:
segmento(punto(X1,Y1),punto(X2,Y2)).
Representar cualquier segmento lnea vertical con X=5.
Ejerci ci o 1.7
Si representamos el rectngulo por rectngulo(P1,P2,P3,P4) donde Pi son vrtices
ordenados positivamente, define la relacin
regular(R)
que ser verdadero cuando los lados del rectngulo R sean verticales y
horizontales.
Ejerci ci o 1.8
Dado el siguiente programa:
f(1,uno).
f(s(1),dos).
f(s(s(1)),tres).
f(s(s(s(X))),N):- f(X,N).
1%mo se comporta ,-.L./ ante las siguientes preguntas4
a) ?-f(s(1),A).
b) 4;*(s(s(+)),dos).
c) ?-f(s(s(s(s(s(s(1)))))),C).
d) ?-f(D,tres).
Ejerci ci o 1.9
Dada la siguiente base de datos familiar:
progenitor(clara,jose).
progenitor(tomas, jose).
progenitor(tomas,isabel).
progenitor(jose, ana).
progenitor(jose, patricia).
progenitor(patricia,jaime).
mujer(clara).
mujer(isabel).
mujer(ana).
mujer(patricia).
hermana_de(X,Y):- mujer(X), progenitor(Z,X), progenitor(Z,Y).
tia(X,Y):- hermana_de(X,Z), progenitor(Z,Y).
Construir el esquema de deduccin natural para las siguientes preguntas:
a) ?-tia(isabel,ana).
b) ?-tia(clara,ana).
c) Si aado la clusula progenitor(tomas, maria), cmo quedaran a) y b) si
pulsamos ;?
1.6. Significado declarativo y procedural de los programas
En un lenguaje declarativo puro, sera de esperar que el orden en el que aparecen los
hechos y las reglas en la base fuera independiente de los datos, sin embargo en
PROLOG no es as.
El significado declarativo tiene que ver slo con las relaciones definidas por el
programa. De esta manera, el significado declarativo determina cul ser la salida del
programa. Por otro lado, el significado procedural determina cmo se ha obtenido
esta salida; es decir, como evala las relaciones PROLOG.
Si tenemos un conjunto de hechos y reglas con el mismo nombre de relacin y la
misma aridad, puede ser conveniente que los hechos estn situados en la base de
datos antes que las reglas, (sobre todo, si los hechos son excepciones de las reglas).
Adems tambin suele ser aconsejable poner la regla para salirse de la recursividad
antes que la regla recursiva.
La habilidad de PROLOG para calcular de forma procedural es una de las ventajas
especficas que tiene el lenguaje. Como consecuencia esto anima al programador a
considerar el significado declarativo de los programas de forma relativamente
independiente de su significado procedural.
Es decir, las ventajas de la forma declarativa de este lenguaje son claras (es ms fcil
pensar las soluciones y muchos detalles procedurales son resueltos automticamente
por el propio lenguaje) y podemos aprovecharlas.
Los aspectos declarativos de los programas son, habitualmente, ms fciles de
entender que los procedurales. Esta es la principal razn por la que el programador
debe concentrarse en el significado declarativo y evitar distraerse por los detalles de
cmo se ejecutan los programas.
El acercamiento a la programacin declarativa no es suficiente. Una vez se tenga el
concepto claro, y cuando se trabaje con programas grandes, los aspectos procedurales
no se pueden ignorar por completo por razones de eficiencia. No obstante, el estilo
declarativo a la hora de pensar en PROLOG debe ser estimulado y los aspectos
procedurales ignorados para favorecer el uso de las restricciones.
Ejerci ci o 1.10
Construir el rbol de resolucin lineal para la pregunta:
?-predecesor(clara,patricia).
teniendo en cuenta las siguientes 4 definiciones de predecesor:
a) predecesor(X,Y):-progenitor(X,Y).
predecesor(X,Y):-progenitor(X,Z), predecesor(Z,Y).
b) predecesor(X,Y):-progenitor(X,Z), predecesor(Z,Y).
predecesor(X,Y):-progenitor(X,Y).
c) predecesor(X,Y):-progenitor(X,Y).
predecesor(X,Y):-predecesor(Z,Y), progenitor(X,Z).
d) predecesor(X,Y):-predecesor(Z,Y), progenitor(X,Z).
predecesor(X,Y):-progenitor(X,Y).
1.7. El entorno de programacin ECLiPSe
ECLiPSe es un entorno de programacin que contiene el lenguaje de programacin
PROLOG y algunas extensiones que permitirn manejar bases de datos (incluyendo
bases de datos declarativas y bases de conocimiento), programacin lgica basada en
restricciones (en concreto programacin lgica basada en restricciones sobre
dominios finitos), y programacin concurrente.
En nuestra Universidad, el software de ECLiPSe est cargado en lynx (lynx.uji.es;
IP: 150.128.40.114), la mquina que gestiona las prcticas de todas las asignaturas de
todos los alumnos. Por tanto para acceder al entorno basta con entrar en lynx con la
cuenta que cada alumno tiene asignada en la mquina y ejecutar eclipse-
prolog.
ECLiPSe dispone de un editor interno al que se accede tecleando [user]. desde la
entrada de ECLiPSe, del cual se sale pulsando Ctrl + D. Sin embargo se
recomienda que se abran dos sesiones, en una de ellas se utilizar un editor (el
favorito de cada alumno) y en la otra sesin se tendr abierto ECLiPSe. De esta
manera el ciclo cambiar cdigo/compilar/ejecutar con debugger se hace cambiando
slo de ventana, sin tener que salirse cada vez del entorno de ECLiPSe.
Una vez generado un fichero con el editor (por ejemplo lo llamaremos prueba) y
grabado, se carga y compila en ECLiPSe mediante el objetivo [prueba].
(terminado en punto).
Para utilizar el debbuger podemos teclear trace. o 1sp-(nombre del
predicado - aridad).. trace hace un debbuger minucioso. Tecleando
c (de creep) o retorno de carro, pasaremos por todos los subobjetivos que definen
nuestro programa PROLOG; con s (de skip) podemos saltar todo lo referente a la
clusula en donde lo tecleemos. sp-(nombre del predicado -
aridad). slo har el debbuger del predicado en el que hayamos puesto el
sp-.
Cada vez que hacemos alguna cosa en el entorno ECLiPSe (compilar, ejecutar, hacer
una traza, etc.), el prompt del eclipse va cambiando, incrementando de 1 en 1 el
nmero del final de la entrada. Ese nmero puede utilizarse posteriormente como
forma de escritura rpida del comando que contena esa entrada.
Por ejemplo:
2eclipse)34prueba5.
2eclipse#3inversa(4a,b,c5,/).
2eclipse"3inversa(4a,b,c5,4c,b,a5).
Supongamos que en este punto queremos cambiar el cdigo de prueba. Despus de
grabar el fichero, compilaramos y ejecutaramos con las siguientes llamadas:
2eclipse63).
2eclipse$3#.
2eclipse%3".
1.8. Bibliografa
[Clocksin 93] Clocksin, W.F., Mellish, C.S., Programacin en PROLOG.
Segunda edicin. Coleccin Cincia Informtica. Editorial
Gustavo Gili S.A., 1993.
[Brisset 94] P. Brisset et al., ECLiPSe 3.4 Extensions User Manual,
European Computer-Industry Research Center, Munich,
Germany, 1994.
[Konigsberger & Bruyn 90] Konigsberger, H., Bruyn, F., PROLOG from the beginning.
McGraw-Hill book Company, 1990.

Вам также может понравиться

  • 30 Enigmas y Juegos de Logica - Miquel Capo
    30 Enigmas y Juegos de Logica - Miquel Capo
    Документ52 страницы
    30 Enigmas y Juegos de Logica - Miquel Capo
    m
    Оценок пока нет
  • Prolog
    Prolog
    Документ6 страниц
    Prolog
    Tania Reyálvarez
    Оценок пока нет
  • Informe Sobre Lenguaje Funcional Prolog
    Informe Sobre Lenguaje Funcional Prolog
    Документ12 страниц
    Informe Sobre Lenguaje Funcional Prolog
    Ravenigma D. Yizuz RavenClow Kuzagami
    Оценок пока нет
  • Prolog
    Prolog
    Документ79 страниц
    Prolog
    Jose Fredy Vargas Martinez
    Оценок пока нет
  • Programación Lógica en Visual Prolog
    Programación Lógica en Visual Prolog
    Документ47 страниц
    Programación Lógica en Visual Prolog
    juampiin
    Оценок пока нет
  • Prolog
    Prolog
    Документ79 страниц
    Prolog
    Néstor Rodríguez
    100% (1)
  • PROLOG
    PROLOG
    Документ6 страниц
    PROLOG
    Juan Arevalo
    Оценок пока нет
  • 02 Prolog
    02 Prolog
    Документ46 страниц
    02 Prolog
    Ander Chalco Huarachi
    Оценок пока нет
  • Sesion 2
    Sesion 2
    Документ7 страниц
    Sesion 2
    Elvis Tineo Morales
    Оценок пока нет
  • 3.1 Unificacion y Resolucion - Prolog
    3.1 Unificacion y Resolucion - Prolog
    Документ19 страниц
    3.1 Unificacion y Resolucion - Prolog
    Linda Martínez Rodríguez
    Оценок пока нет
  • Lengupro 4 - Unidad 3
    Lengupro 4 - Unidad 3
    Документ12 страниц
    Lengupro 4 - Unidad 3
    Edwin Cely
    Оценок пока нет
  • Laboratorio 1 de Win Prolog
    Laboratorio 1 de Win Prolog
    Документ5 страниц
    Laboratorio 1 de Win Prolog
    SERGIO ANDRES LOPEZ ALVAREZ
    Оценок пока нет
  • Act3 Practica1
    Act3 Practica1
    Документ21 страница
    Act3 Practica1
    Oscar Reyes Cuevas
    Оценок пока нет
  • Inteligencia Artificial: Prolog: Unificaci On en Prolog
    Inteligencia Artificial: Prolog: Unificaci On en Prolog
    Документ17 страниц
    Inteligencia Artificial: Prolog: Unificaci On en Prolog
    Eduardo Ojeda
    Оценок пока нет
  • Tema1-Programacion Logica
    Tema1-Programacion Logica
    Документ24 страницы
    Tema1-Programacion Logica
    Mardonius Yupanqui
    Оценок пока нет
  • Sistemas-Expertos Sem2
    Sistemas-Expertos Sem2
    Документ60 страниц
    Sistemas-Expertos Sem2
    Jose Rivera
    Оценок пока нет
  • Hechos y Reglas en Prolog
    Hechos y Reglas en Prolog
    Документ24 страницы
    Hechos y Reglas en Prolog
    Mario Enrique Baide Pascua
    Оценок пока нет
  • HBFSGHJK
    HBFSGHJK
    Документ10 страниц
    HBFSGHJK
    JESFI
    Оценок пока нет
  • Tema Reglas PRO
    Tema Reglas PRO
    Документ27 страниц
    Tema Reglas PRO
    LuKas
    Оценок пока нет
  • Clase de PROLOG
    Clase de PROLOG
    Документ22 страницы
    Clase de PROLOG
    Melina Solis Hernandez
    Оценок пока нет
  • Tema 1. Introducción PROLOG - Curso 2022-2023
    Tema 1. Introducción PROLOG - Curso 2022-2023
    Документ35 страниц
    Tema 1. Introducción PROLOG - Curso 2022-2023
    Elena
    Оценок пока нет
  • TP Prolog
    TP Prolog
    Документ12 страниц
    TP Prolog
    Joaquin Tomas Perez Ale
    Оценок пока нет
  • Christian Valdes C8
    Christian Valdes C8
    Документ14 страниц
    Christian Valdes C8
    Christian Valdes
    100% (1)
  • Clausula de Horn
    Clausula de Horn
    Документ26 страниц
    Clausula de Horn
    kevinjunior97
    Оценок пока нет
  • Unidad 4 Ex Poner
    Unidad 4 Ex Poner
    Документ38 страниц
    Unidad 4 Ex Poner
    montezco9
    67% (3)
  • Prolog
    Prolog
    Документ159 страниц
    Prolog
    Engels Engels
    Оценок пока нет
  • Cálculo de Predicados
    Cálculo de Predicados
    Документ4 страницы
    Cálculo de Predicados
    Sánchez JE
    Оценок пока нет
  • Lenguaje y Lógica Simbólica Semana 8
    Lenguaje y Lógica Simbólica Semana 8
    Документ23 страницы
    Lenguaje y Lógica Simbólica Semana 8
    Franco
    Оценок пока нет
  • Logica de Primer Orden
    Logica de Primer Orden
    Документ52 страницы
    Logica de Primer Orden
    SoledadDavilaPuicon
    100% (1)
  • Prolog - Práctica 10
    Prolog - Práctica 10
    Документ3 страницы
    Prolog - Práctica 10
    Linda Martínez Rodríguez
    Оценок пока нет
  • Tutorial Prolog
    Tutorial Prolog
    Документ2 страницы
    Tutorial Prolog
    luiszhernandez16
    Оценок пока нет
  • Lenguaje de Programación Prolog
    Lenguaje de Programación Prolog
    Документ10 страниц
    Lenguaje de Programación Prolog
    WAGNER SEBASTIAN UZQUIANO MELLADO
    Оценок пока нет
  • IA - Clase 2020 Sistemas Expertos PROLOG
    IA - Clase 2020 Sistemas Expertos PROLOG
    Документ46 страниц
    IA - Clase 2020 Sistemas Expertos PROLOG
    Gabriela Elizabeth Figueroa Riquelme
    Оценок пока нет
  • Tarea 1
    Tarea 1
    Документ4 страницы
    Tarea 1
    Daniel Tulio
    Оценок пока нет
  • Predicados Con Cuantificadores
    Predicados Con Cuantificadores
    Документ36 страниц
    Predicados Con Cuantificadores
    Maira Espinoza
    Оценок пока нет
  • Prolog IA
    Prolog IA
    Документ4 страницы
    Prolog IA
    Holger Coronel
    Оценок пока нет
  • Logica Simbolica
    Logica Simbolica
    Документ36 страниц
    Logica Simbolica
    Alejandro Salas Gamarra
    Оценок пока нет
  • 1 - Prolog
    1 - Prolog
    Документ23 страницы
    1 - Prolog
    Frank Luis Gallardo Cabrera
    Оценок пока нет
  • Programación Lógica en Prolog
    Programación Lógica en Prolog
    Документ15 страниц
    Programación Lógica en Prolog
    José Alexander
    Оценок пока нет
  • Carlos Valencia Control8
    Carlos Valencia Control8
    Документ23 страницы
    Carlos Valencia Control8
    Carlos Valencia Miranda
    Оценок пока нет
  • Paradigmas
    Paradigmas
    Документ6 страниц
    Paradigmas
    Melisa Rocha Rodriguez
    Оценок пока нет
  • Lenguaje de Programación Prolo1
    Lenguaje de Programación Prolo1
    Документ45 страниц
    Lenguaje de Programación Prolo1
    Johnny Fernando Hidalgo Rodriguez
    Оценок пока нет
  • LOGIQUITA
    LOGIQUITA
    Документ4 страницы
    LOGIQUITA
    jose
    Оценок пока нет
  • Clase 3 SE
    Clase 3 SE
    Документ17 страниц
    Clase 3 SE
    Hamilton Olmedo
    Оценок пока нет
  • S04.s1-Programacion Logical y Funcional
    S04.s1-Programacion Logical y Funcional
    Документ25 страниц
    S04.s1-Programacion Logical y Funcional
    Alexis
    Оценок пока нет
  • Logica de Predicados
    Logica de Predicados
    Документ26 страниц
    Logica de Predicados
    Eli Auqui Ramos
    Оценок пока нет
  • Prolog
    Prolog
    Документ12 страниц
    Prolog
    inggafabifi
    Оценок пока нет
  • Caso de Estudio Backtraking
    Caso de Estudio Backtraking
    Документ11 страниц
    Caso de Estudio Backtraking
    Nico Garcia
    Оценок пока нет
  • Prolog
    Prolog
    Документ13 страниц
    Prolog
    Angel Alvarez
    Оценок пока нет
  • Clase 4 - Programación Lógica
    Clase 4 - Programación Lógica
    Документ59 страниц
    Clase 4 - Programación Lógica
    Rodrigo Nicolás Mungo
    Оценок пока нет
  • Pract10PrologOct2011.Doc 0
    Pract10PrologOct2011.Doc 0
    Документ6 страниц
    Pract10PrologOct2011.Doc 0
    Javier Sánchez
    Оценок пока нет
  • Ejemplos de Prolog
    Ejemplos de Prolog
    Документ8 страниц
    Ejemplos de Prolog
    Dianys López
    Оценок пока нет
  • Números Racionales
    Números Racionales
    Документ13 страниц
    Números Racionales
    danielapages
    Оценок пока нет
  • Logica de Predicados
    Logica de Predicados
    Документ15 страниц
    Logica de Predicados
    egda
    Оценок пока нет
  • Paper Programación Lógica
    Paper Programación Lógica
    Документ5 страниц
    Paper Programación Lógica
    Samuel Galvez
    Оценок пока нет
  • Semana 7 Lógica
    Semana 7 Lógica
    Документ9 страниц
    Semana 7 Lógica
    Jose Alvaray
    Оценок пока нет
  • Algoritmos de Busqueda
    Algoritmos de Busqueda
    Документ8 страниц
    Algoritmos de Busqueda
    Ricardo Beltran Farfan
    Оценок пока нет
  • A5 Logic
    A5 Logic
    Документ42 страницы
    A5 Logic
    florxita21
    Оценок пока нет
  • Las dependencias de los objetos
    Las dependencias de los objetos
    От Everand
    Las dependencias de los objetos
    Оценок пока нет
  • Ejercicios de Conjuntos y Funciones
    Ejercicios de Conjuntos y Funciones
    От Everand
    Ejercicios de Conjuntos y Funciones
    Оценок пока нет
  • Ejercicios de Teoría de Galois
    Ejercicios de Teoría de Galois
    От Everand
    Ejercicios de Teoría de Galois
    Оценок пока нет
  • Informe Practicas Juan Jose Villalba
    Informe Practicas Juan Jose Villalba
    Документ17 страниц
    Informe Practicas Juan Jose Villalba
    Juan Jose Villalba Acosta
    Оценок пока нет
  • Reflexión Caso Roberto
    Reflexión Caso Roberto
    Документ2 страницы
    Reflexión Caso Roberto
    Carmen Rojas
    Оценок пока нет
  • QCP Electrónico
    QCP Electrónico
    Документ13 страниц
    QCP Electrónico
    Gonzalo Inn
    Оценок пока нет
  • Codigo de Gambas
    Codigo de Gambas
    Документ6 страниц
    Codigo de Gambas
    MichaelMoreno
    Оценок пока нет
  • Guia para Encuesta Autodesk
    Guia para Encuesta Autodesk
    Документ10 страниц
    Guia para Encuesta Autodesk
    Vanessa Anabet Mamani Puraca
    Оценок пока нет
  • Prueba de Como Domesticar A Tus Papas
    Prueba de Como Domesticar A Tus Papas
    Документ3 страницы
    Prueba de Como Domesticar A Tus Papas
    karen ojeda
    Оценок пока нет
  • Filosofia Peruana
    Filosofia Peruana
    Документ17 страниц
    Filosofia Peruana
    jonathan CH
    Оценок пока нет
  • Sesioncito de Comu
    Sesioncito de Comu
    Документ12 страниц
    Sesioncito de Comu
    Santiago
    Оценок пока нет
  • Lo Que Aprendí de Warren Buffett
    Lo Que Aprendí de Warren Buffett
    Документ7 страниц
    Lo Que Aprendí de Warren Buffett
    Rodo Gonzalez Delgado
    Оценок пока нет
  • Analisis de Estados Financieros
    Analisis de Estados Financieros
    Документ6 страниц
    Analisis de Estados Financieros
    Solmar Mosqueda
    Оценок пока нет
  • Trabajo Practico I Filo
    Trabajo Practico I Filo
    Документ3 страницы
    Trabajo Practico I Filo
    Adriana Muñoz Lambies
    Оценок пока нет
  • 2 Unidad Seguridad e Higiene Industrial II
    2 Unidad Seguridad e Higiene Industrial II
    Документ53 страницы
    2 Unidad Seguridad e Higiene Industrial II
    IvanJairGonzalezBautista
    Оценок пока нет
  • Secuencia 13. La Importancia de La Fisica en La
    Secuencia 13. La Importancia de La Fisica en La
    Документ7 страниц
    Secuencia 13. La Importancia de La Fisica en La
    Miguel Angel Santiago Castillo
    Оценок пока нет
  • EL CASO de GENIE (Psicología) Raquel y Marina
    EL CASO de GENIE (Psicología) Raquel y Marina
    Документ5 страниц
    EL CASO de GENIE (Psicología) Raquel y Marina
    Marina
    Оценок пока нет
  • Tributacion
    Tributacion
    Документ2 страницы
    Tributacion
    BRAYAN MACHADO
    Оценок пока нет
  • Actividades Tercero Mate
    Actividades Tercero Mate
    Документ1 страница
    Actividades Tercero Mate
    Andrea Hurtado
    Оценок пока нет
  • Indicadores Gest. Compras
    Indicadores Gest. Compras
    Документ8 страниц
    Indicadores Gest. Compras
    Winston1609wb
    Оценок пока нет
  • ESCUELA POLITECNICA DEL EJÉRCITO Sensor Hall
    ESCUELA POLITECNICA DEL EJÉRCITO Sensor Hall
    Документ5 страниц
    ESCUELA POLITECNICA DEL EJÉRCITO Sensor Hall
    Carlos Andres Tapia
    Оценок пока нет
  • Silabo Psicologia Educativa
    Silabo Psicologia Educativa
    Документ8 страниц
    Silabo Psicologia Educativa
    CarlosIvan
    Оценок пока нет
  • Resumen - Norma Iso 14001
    Resumen - Norma Iso 14001
    Документ4 страницы
    Resumen - Norma Iso 14001
    Marcela Fragozo
    Оценок пока нет
  • Rueda Del Exito
    Rueda Del Exito
    Документ2 страницы
    Rueda Del Exito
    Paiz Roger
    Оценок пока нет
  • Reglamento Nacional de Vehículos 100 1
    Reglamento Nacional de Vehículos 100 1
    Документ17 страниц
    Reglamento Nacional de Vehículos 100 1
    Paul Castro Huamani
    Оценок пока нет
  • Importancia de La Ética Ambiental
    Importancia de La Ética Ambiental
    Документ1 страница
    Importancia de La Ética Ambiental
    fundamento general
    Оценок пока нет
  • Unidades de Medida
    Unidades de Medida
    Документ2 страницы
    Unidades de Medida
    yugusan
    Оценок пока нет
  • Espinoza Medina PDF
    Espinoza Medina PDF
    Документ3 страницы
    Espinoza Medina PDF
    Rivaldo EM
    Оценок пока нет
  • Laura Giraldo, Juan Erazo, Jeronimo Sierra
    Laura Giraldo, Juan Erazo, Jeronimo Sierra
    Документ5 страниц
    Laura Giraldo, Juan Erazo, Jeronimo Sierra
    Juanma erazo312
    Оценок пока нет
  • Laboratorio de Física I
    Laboratorio de Física I
    Документ9 страниц
    Laboratorio de Física I
    Viany Juarez Castillo
    Оценок пока нет
  • Metodología de La Cs. Sociales-Resumen
    Metodología de La Cs. Sociales-Resumen
    Документ34 страницы
    Metodología de La Cs. Sociales-Resumen
    fernanda lauro
    Оценок пока нет
  • Pompeya Teatro
    Pompeya Teatro
    Документ32 страницы
    Pompeya Teatro
    María Inés Guarda
    Оценок пока нет