LENGUAJES LENGUAJES
DE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIAL
UNIVERSDAD DE CRDOBA
ESCUELA POLITCNICA SUPERIOR
DEPARTAMENTO DEINFORMTICA Y ANLISIS NUMRICO
DE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALINGENIGERA TCNICA EN INFORMTICA DE GESTIN
INGENIERA TCNICA EN INFORMTICA DE SISTEMAS
SEGUNDO CURSO
PRIMER CUATRIMESTRE
Tema 8.- Introduccin al Lenguaje Prolog
Primera parte: Scheme
Tema 1.- Introduccin al Lenguaje Scheme
Tema 2.- Expresiones y Funciones
Tema 3.- Predicados y sentencias condicionales
Tema 4.- Iteracin y Recursin
Tema 5.- Tipos de Datos Compuestos
Tema 6.- Abstraccin de Datos
LENGUAJES DE INTELIGENCIA ARTIFICIAL LENGUAJES DE INTELIGENCIA ARTIFICIAL PROGRAMAPROGRAMA
2
Tema 6.- Abstraccin de Datos
Tema 7.- Lectura y Escritura
Tema 8.- Introduccin al Lenguaje Prolog
Tema 9.- Elementos Bsicos de Prolog
Tema 10.- Listas
Tema 11.- Reevaluacin y el corte
Tema 12.- Entrada y Salida
Segunda parte: Prolog
Segunda parte: Prolog
LENGUAJES DE INTELIGENCIA ARTIFICIAL LENGUAJES DE INTELIGENCIA ARTIFICIAL PROGRAMAPROGRAMA
Tema 8.- Introduccin al Lenguaje Prolog
Tema 9.- Elementos Bsicos de Prolog
Tema 10.- Listas
3
Tema 10.- Listas
Tema 11.- Reevaluacin y el corte
Tema 12.- Entrada y Salida
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
4
5. Conjuncin, disyuncin y negacin
6. Reglas
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Programacin declarativa
Programacin lgica
Conceptos comunes de la programacin lgica y la programacin funcional
5
programacin funcional
Orgenes de la programacin lgica
Funcionamiento bsico de Prolog
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Programacin declarativa
o Su prioridad es responder a la siguiente pregunta
Qu problema hay que resolver?
6
Qu problema hay que resolver?
o No se preocupa de
Cmo hay que resolver el problema?
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Tipos de programacin declarativa
o Programacin funcional:
Basada en los conceptos de funcin y expresin
7
Basada en los conceptos de funcin y expresinmatemtica.
o Programacin Lgica:
Basada en los fundamentos tericos de la lgicamatemtica.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Programacin declarativa
Programacin lgica
Conceptos comunes de la programacin lgica y la programacin funcional
8
programacin funcional
Orgenes de la programacin lgica
Funcionamiento bsico de Prolog
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Programacin lgica
oo Programa = Lgica + ControlPrograma = Lgica + Control
Lgica:
Declaracin de qu problema debe resolverse
9
Declaracin de qu problema debe resolverse
Responsabilidad del programador
Control:
Declaracin de cmo debe resolverse el problema
Responsabilidad del intrprete
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Programacin Lgica
o Hecho: cosa que sucede.
o Regla: relacin entre hechos.
10
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Programacin declarativa
Programacin lgica
Conceptos comunes de la programacin lgica y la programacin funcional
11
programacin funcional
Orgenes de la programacin lgica
Funcionamiento bsico de Prolog
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Conceptos comunes de la programacin lgica y la programacin funcional
o Recursin
o Listas
12
o Listas
o Lenguajes interpretados
o Gestin automtica de memoria:
garbage collection (recogida de basura).
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Programacin declarativa
Programacin lgica
Conceptos comunes de la programacin lgica y la programacin funcional
13
programacin funcional
Orgenes de la programacin lgica
Funcionamiento bsico de Prolog
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Orgenes de la programacin lgica
o Fundamentos tericos
o Precursores
o Desarrollo histrico
14
o Desarrollo histrico
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Orgenes de la programacin lgica
o Fundamentos tericos:
Lgica matemtica
Lgica proposicional
15
Lgica proposicional
Lgica de predicados
Clusulas de Horn
Principio de resolucin (Robinson, 1965)
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Clusulas de Horn:
o Disyuncin de literales negados, excepto uno:
p1 p2 pn q
16
p1 p2 pn q
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Clusulas de Horn:
o Interpretacin
p1 p2 pn q
(aplicando la Ley de Morgan)
17
(aplicando la Ley de Morgan)
(p1 p2 pn ) q
(aplicando la equivalencia de la conectiva )
p1 p2 pn q
significa que
Si se verifican p1, p2, y pn entonces se verifica q
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Clusulas de Horn
o q se verifica si se verifican p1, p2, y pn
p1
18
o Interpretacin modular:
o Prolog: regla
q :- p1, p2,, pn
p1
p2
pn
q
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Clusulas de Horn
o Prolog: regla
q :- p , p ,, p
19
q :- p1, p2,, pn .
Cabeza Cuerpo
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Clusulas de Horn:
o Ejemplo 1
Si la figura posee cuatro lados iguales y cuatro ngulos iguales entonces la figura es un cuadrado
20
iguales entonces la figura es un cuadrado
Variables proposicionales
p1 = la figura posee cuatro lados iguales
p2 = la figura posee cuatro ngulos iguales
q = la figura es un cuadrado
Lgica proposicional: p1 p2 q
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Clusulas de Horn:
o Ejemplo 1 (continuacin)
Significado
Si se verifican p1 y p2 entonces se verifica q
21
Si se verifican p1 y p2 entonces se verifica q
q se verifica si se verifican p1 y p2
Lgica proposicional:
p1 p2 q (p1 p2 ) q p1 p2 q
Clusula de Horn: p1 p2 q
Prolog: q :- p1, p2.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Clusulas de Horn:
o Ejemplo 2
Todos los hombres son mortales
Predicados
22
Predicados
p (x) = hombre(x)= x es un hombre
q (x) = mortal (x) = x es mortal
x (hombre(x) mortal (x))
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Clusulas de Horn:
o Ejemplo 2 (continuacin)
Significado
si se verifica hombre (x) entonces se verifica mortal (x)
mortal (x) si se verifica hombre (x)
23
mortal (x) si se verifica hombre (x)
Lgica de predicados
x (hombre(x) mortal (x)) hombre(x) mortal (x)
Clusula de Horn: hombre (x) mortal (x)
Prolog: mortal (x) :- hombre (x).
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Principio de resolucin (Robinson, 1965):
o Caso bsico (lgica proposicional)
Modus Ponens: Principio de resolucin
24
Modus Ponens:
p q
p
_____
q
Principio de resolucin
p q
p
_____
q
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Principio de resolucin (Robinson, 1965):
o Caso bsico (lgica proposicional): ejemplo
Si es un cuadrado entonces es un polgono
25
Si es un cuadrado entonces es un polgono
Es un cuadrado
____________________________________
Es un polgono
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Principio de resolucin (Robinson, 1965):
o Caso bsico (lgica proposicional)
Proposiciones
p: es un cuadrado
26
p: es un cuadrado
q: es un polgono
Principio de resolucinp qp_____
q
Modus Ponensp qp_____
q
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Principio de resolucin (Robinson, 1965):
o Caso general (lgica proposicional)
p p p qPrincipio de resolucin
27
p1 p2 pn q p1______________________
p2 pn q
p1 p2 pn qp1___________________
p2 pn q
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Principio de resolucin (Robinson, 1965):
o Caso bsico (lgica de predicados)
Principio de resolucin
Modus Ponens
28
p(x) q(x)p(a)___________
q(a)
p(x) q(x)p(a)___________
q(a)
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Principio de resolucin (Robinson, 1965):
o Caso bsico (lgica de predicados): ejemplo
Todos los hombres son mortales
Scrates es un hombre
29
Scrates es un hombre
__________________
Scrates es mortal
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Principio de resolucin (Robinson, 1965):
o Caso bsico (lgica de predicados): ejemplo
Principio de resolucin Modus Ponens
30
Principio de resolucinhombre(x) mortal(x)hombre(Scrates)____________________
mortal(Scrates)
Modus Ponenshombre(x) mortal(x)hombre(Scrates)__________________
mortal(Scrates)
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Principio de resolucin (Robinson, 1965):
o Caso general (lgica de predicados)
Principio de resolucin p (x) p (x) p (x) q (x)
p1(x) p2 (x) pn (x) q(x)
31
p1(x) p2 (x) pn (x) q (x) p1(a)_______________________________
p2 (a) pn (a) q (a)
p1(a)__________________________
p2 (a) pn (a) q(a)
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Orgenes de la programacin lgica
o Fundamentos tericos
o Precursores
o Difusin histrica
32
o Difusin histrica
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Orgenes de la programacin lgica
o Precursores
Kowalski (Universidad de Edimburgo): 1972
Fundamentos tericos: clusulas de Horn y
33
Fundamentos tericos: clusulas de Horn y principio de resolucin
Maarten Van Emden (Universidad de Edimburgo):
Demostracin experimental
Alain Colmerauer (Universidad de Marsella)
Implementacin: Programmation en Logique, Prolog
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Orgenes de la programacin lgica
o Precursores
Alain Colmerauer (Universidad de Marsella)
Intrprete de Prolog codificado en Algol W de
34
Intrprete de Prolog codificado en Algol W de Wirth
Utiliza la interpretacin procedimental o modular de Kowalski
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Orgenes de la programacin lgica
o Fundamentos tericos
o Precursores
o Difusin histrica
35
o Difusin histrica
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Orgenes de la programacin lgica
o Difusin histrica
Prolog-10 (Warren, aos setenta)
Compilador escrito casi completamente en Prolog.
Desdn inicial:
36
Desdn inicial:
La comunidad cientfica occidental no tuvo encuenta a la Programacin Lgica hasta principiosde los aos ochenta.
Factor decisivo: Proyecto de Quinta Generacin de Japn (1981).
Versin estndar: Prolog de Endimburgo
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Programacin declarativa
Programacin lgica
Conceptos comunes de la programacin lgica y la programacin funcional
37
programacin funcional
Orgenes de la programacin lgica
Funcionamiento bsico de Prolog
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Funcionamiento bsico de Prolog
o Bsqueda de objetivos
o Limitaciones
o Aplicaciones
38
o Aplicaciones
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Funcionamiento bsico de Prolog:
o Bsqueda de objetivos
Programa: conjunto de hechos y reglas
Se realiza una consulta
39
Se realiza una consulta
Si la consulta coincide con un hecho entonces el objetivo se ha conseguido.
En caso contrario, se comprueba si la consulta es la cabeza de una regla
- Si es as entonces se generan nuevasconsultas utilizando el cuerpo de la regla.
- En caso contrario, el objetivo no se consigue.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Funcionamiento bsico de Prolog:
o Bsqueda de objetivos: ejemplo1
Hechos:
hombre(socrates).
40
hombre(socrates).
hombre(aristoteles).
Regla:
mortal(X) :- hombre(X).
Consulta
? mortal(socrates).
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Funcionamiento bsico de Prolog:
o Bsqueda de objetivos: ejemplo1
Equivalencia con la lgica de predicados (1/2)
41
hombre(x) mortal(x)hombre(socrates)mortal(socrates)
x (hombre(x) mortal(x))hombre(socrates)mortal(socrates)
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Funcionamiento bsico de Prolog:
o Bsqueda de objetivos: ejemplo1
Equivalencia con la lgica de predicados (2/2)
42
hombre(x) mortal(x)hombre(socrates)mortal(socrates)
mortal(X) :- hombre(X).hombre(socrates).? mortal(socrates).yes
Principio de resolucin Prolog
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Funcionamiento bsico de Prolog:
o Bsqueda de objetivos: ejemplo 1
Consulta
? mortal(socrates).
43
? mortal(socrates).
1. No existe el hecho mortal (socrates)
2. La consulta es la cabeza de la regla
mortal(X) :- hombre(X)
3. Se genera una nueva consulta: hombre(socrates)
4. hombre(socrates) es un hecho del programa.
5. Respuesta: s
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Funcionamiento bsico de Prolog:
o Bsqueda de objetivos
Observacin:
Prolog considera como falso todo lo que no
44
Prolog considera como falso todo lo que noconoce o no puede deducir, aunque seaverdadero en la vida real.
Ejemplo: si se consulta
?mortal(platon)
la respuesta ser no
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Funcionamiento bsico de Prolog
o Bsqueda de objetivos
o Limitaciones
o Aplicaciones
45
o Aplicaciones
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Funcionamiento bsico de Prolog:
o Limitaciones
Prolog no es un lenguaje de programacin lgica completamente puro
46
completamente puro
Prolog establece un orden de precedencia entrereglas, que no existe en la lgica.
Prolog slo permite la negacin en el cuerpo delas clusulas.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Funcionamiento bsico de Prolog
o Bsqueda de objetivos
o Limitaciones
o Aplicaciones
47
o Aplicaciones
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
Funcionamiento bsico de Prolog:
o Aplicaciones
Demostracin de teoremas
Representacin del conocimiento
48
Representacin del conocimiento
Problemas de bsqueda
Planificacin
Procesamiento del lenguaje natural: PLN
Sistemas expertos
Especificacin de algoritmos
Etc.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
49
6. Reglas
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
2. Hechos
Ejemplos
o Hechos:
hombre(socrates). sexo(socrates, masculino).
padre_de(juan, luis).
tiene(antonio, bicicleta).
50
tiene(antonio, bicicleta).
da(laura,libro,maria).
o Significados de los hechos:
Scrates es un hombre
El padre de Juan es Luis
Antonio tiene una bicicleta
Laura da un libro a Mara
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
2. Hechos
Ejemplos
o Hechos:
Juan est enamorado de Mara
Mara est enamorada de Juan
Laura est enamorada de Luis
51
Laura est enamorada de Luis
o Hechos en Prolog:
enamorado_de(juan, maria).
enamorado_de(maria,juan).
enamorado_de(laura, luis).
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
2. Hechos
Ejemplo
o Hecho en Prolog:
enamorado_de(juan, maria).
punto
52
predicadoargumentos
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
2. Hechos
Semntica
o Cada hecho posee un significado arbitrario, pero debe permanecer invariable una vez que ha sido establecido.
o El predicado establece una relacin entre losargumentos.
53
o El significado de una relacin depende del orden de los argumentos.
o Se deben utilizar identificadores descriptivos de las relaciones y los argumentos.
o Base de datos de un programa en Prolog: conjunto de hechos y reglas que posee.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
2. Hechos
Sintaxis
o Los nombres de los predicados y los tomos comienzan por una letra minscula.
o Se tiene que poner un punto . al final del hecho.
o El nmero de argumentos de una relacin o predicado
54
o El nmero de argumentos de una relacin o predicado es arbitrario pero constante.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
55
6. Reglas
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
3. Preguntas
Se pueden realizar preguntas a la base de datos de un programa de Prolog
Ejemplo:
o ? tiene(maria,libro).
o Se est preguntando si Mara tiene el libro.
punto
56
o Se est preguntando si Mara tiene el libro.
Prolog busca en su base de datos, compuesta por hechos (y reglas), si contiene el hecho
tiene(maria,libro).
Es necesario que coincidan
o el nombre del predicado o relacin
o los argumentos en nmero y orden.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
3. Preguntas
Ejemplo
o Hechos
tiene(maria, libro).
tiene(maria, cuaderno).
tiene(juan, cuaderno).
57
tiene(juan, cuaderno).
tiene(juan, bicicleta).
o Preguntas
?tiene(maria,libro).
yes
?tiene(juan, libro).
no
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
3. Preguntas
Ejemplo
o Pregunta
?tiene(maria, bicicleta).
no
o Falso por defecto
58
o Falso por defecto
Prolog responde no porque no hay ningn hecho que coincida con la pregunta (o regla que permita deducir ese hecho).
Se recuerda que Prolog considera falso todo lo que no conoce.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
59
6. Reglas
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
4. Variables
Las variables permiten hacer preguntas ms verstiles
Primer carcter de una variable:
letra mayscula
Subrayado _
Ejemplos
60
Ejemplos
o qu cosas tiene Juan?
?tiene(juan,Cosa).
Cosa = cuaderno
Cosa = bicicleta
no
Punto y coma: nueva solucin
;
;
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
4. Variables
Ejemplos
o quin tiene un cuaderno?
?tiene(Persona,cuaderno).
Persona = maria
Persona = juan
;
Enter
Punto y coma: nueva solucin
61
Persona = juan Enter
Fin de la bsqueda
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
4. Variables
Preguntas con dos variables
o qu cosas tiene cada persona?
?tiene(Persona,Cosa).
Persona = maria, Cosa = libro
Persona = maria, Cosa = cuaderno
;
;
62
Persona = maria, Cosa = cuaderno
Persona = juan, Cosa = cuaderno
Persona = juan, Cosa = bicicleta Enter
;
;
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
4. Variables
Preguntas con una variable repetida.
o Hechos
camino(baena,luque).
camino(luque,zuheros).
camino(baena, baena).
63
camino(baena, baena).
o Qu pueblo tiene un camino circular?
?tiene(Pueblo,Pueblo).
Pueblo= baena
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
4. Variables
Variable annima: smbolo de subrayado _
Preguntas con variable annima
o quin tiene algo?
?tiene(Persona,_).
Persona = maria,
64
Persona = maria,
Persona = juan
o Alguien tiene un cuaderno?
?tiene(_,cuaderno).
yes
;Enter
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
4. Variables
Preguntas con variable annima
o alguien tiene algo?
?tiene(_,_).
yes
65
Observacin:
o Cada aparicin de una variable annima esindependiente.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
66
6. Reglas
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
5. Conjunciones, disyunciones y negaciones
Se pueden hacer preguntas ms completas si se utilizan los operadores lgicos
o Disyuncin lgica: smbolo de punto y coma ;
o Conjuncin lgica: smbolo de la coma ,
o Negacin lgica: not
67
o Negacin lgica: not
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
5. Conjunciones, disyunciones y negaciones
Conjuncin lgica
o La respuesta ser verdadera si ambas respuestas son verdaderas
Ejemplos
68
Ejemplos
o ? tiene(maria,libro) , tiene(juan,cuaderno).
yes
o ? tiene(maria,bicicleta) , tiene(juan,cuaderno).
no
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
5. Conjunciones, disyunciones y negaciones
Conjuncin lgica
o Qu cosa tienen en comn Mara y Juan?
? tiene(maria,X) , tiene(juan,X).
X = cuaderno
o Reevaluacin o backtracking (lgica + control)
69
o Reevaluacin o backtracking (lgica + control)
Fase 1: X toma el valor de libro
Fase 2: no se verifica tiene(juan,libro)
Fase 3: X toma el valor de cuaderno
Fase 4: se verifica el hecho tiene(juan,cuaderno)
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
5. Conjunciones, disyunciones y negaciones
Conjuncin lgica
o Tiene algo Mara y tiene algo Juan?
? tiene(maria,_) , tiene(juan,_).
yes
70
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
5. Conjunciones, disyunciones y negaciones
Conjuncin lgica
o Hechos:
enamorado_de(juan, maria).
enamorado_de(maria,juan).
enamorado_de(laura, luis).
71
enamorado_de(laura, luis).
o Estn Juan y Mara enamorados?
? enamorado_de (juan,maria), enamorado_de(maria,juan).
o Es correspondido el amor de Laura?
? enamorado_de(laura,X), enamorado_de(X,laura).
o Etc.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
5. Conjunciones, disyunciones y negaciones
Disyuncin lgica
o La respuesta ser verdadera si alguna de las respuestas es verdadera.
Ejemplos
o ? tiene(maria,libro) ; tiene(juan,cuaderno).
72
o ? tiene(maria,libro) ; tiene(juan,cuaderno).
yes
o ? tiene(maria,bicicleta) ; tiene(juan,cuaderno).
yes
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
5. Conjunciones, disyunciones y negaciones
Ejemplos
o Qu cosas tienen Juan o Mara?
?tiene(juan,X) ; tiene(maria,X).
X = cuaderno
X = bicicleta
;
73
X = bicicleta
X = libro
X = cuaderno
no
;
;
;
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
5. Conjunciones, disyunciones y negaciones
Negacin lgica
o La respuesta ser verdadera si la respuesta original es falsa.
Ejemplos
74
Ejemplos
o ?not(tiene(juan,cuaderno))
no
o ?not(tiene(juan,tijeras)).
o yes
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
5. Conjunciones, disyunciones y negaciones
Precedencia de los operadores lgicos
o Mxima precedencia: negacin lgica (not)
o Precedencia intermedia: conjuncin lgica (,)
o Mnima precedencia: disyuncin lgica (;)
o Los parntesis controlan la precedencia.
75
o Los parntesis controlan la precedencia.
Ejemplos
?tiene(juan,cuaderno);tiene(maria,rotulador), not(tiene(juan,bicicleta)).
Yes
?(tiene(juan,cuaderno);tiene(maria,rotulador)),not(tiene(juan,bicicleta)).
no
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
1. Caractersticas Fundamentales de la Programacin Lgica
2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
76
6. Reglas
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
6. Reglas
mortal(X) :- hombre(X).
punto
77
Cabeza Cuerpo
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
6. Reglas
Las reglas evitan indicar hechos que se pueden deducir a partir de otros.
Las reglas permiten representar dependencias entre hechos.
78
o mortal(X) :- hombre(X)
Las reglas permiten representar definiciones
o buen_estudiante(Persona):-
asiste_a_clase(Persona),
estudia(Persona).
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
6. Reglas
Reglas recursivas
Ejemplo de las conexiones por carretera
carretera(cordoba,granada).carretera(cordoba,jaen).carretera(cordoba,malaga).carretera(cordoba,sevilla).
79
carretera(cordoba,sevilla).carretera(sevilla, cadiz).carretera(sevilla, huelva).carretera(sevilla, malaga).
conectado(Origen,Destino):- carretera(Origen, Destino).
conectado(Origen,Destino):-carretera(Origen,Intermedio),conectado(Intermedio,Destino).
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
6. Reglas
Reglas recursivas
Ejemplo de la familia (1/6)mujer(ana).mujer(marta).mujer(alicia).mujer(carmen).
80
mujer(carmen).mujer(laura).mujer(isabel).mujer(silvia).
hombre(juan).hombre(luis).hombre(miguel).hombre(alberto).hombre(rodrigo).hombre(pedro).
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
6. Reglas
Ejemplo de la familia (2/6)/* padres(Persona, Padre, Madre). */
padres(juan,luis,ana).padres(alberto,luis,ana).padres(marta,luis,ana).
81
padres(marta,luis,ana).padres(alicia,luis,ana).
padres(rodrigo,juan,laura).padres(carmen,juan,laura).padres(isabel,juan,laura).padres(miguel,juan,laura).
padres(laura,pedro,silvia).
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
6. Reglas
Ejemplo de la familia (3/6)
o rbol genealgico
Pedro Silvia Luis Ana
82
Laura Juan Alberto Marta Alicia
Rodrigo Carmen Isabel Miguel
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
6. Reglas
Ejemplo de la familia (4/6)
/* X es hermana de Y */
hermana(X,Y):-mujer(X),
83
mujer(X),padres(X,Padre,Madre),padres(Y,Padre,Madre).
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
6. Reglas
Ejemplo de la familia (5/6)
/* X es hermana de Y */hermana(X,Y):-mujer(X),padres(X,P,M),
84
padres(X,P,M),padres(Y,P,M).
/* X es hermana de Y */hermana_verdadera(X,Y):-mujer(X),padres(X,P,M),padres(Y,P,M),X \= Y.
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
6. Reglas
Ejemplo de la familia (6/6)/* X es un ancestro de Y */
ancestro(X,Y):-padres(Y,X,_).
ancestro(X,Y):-
85
ancestro(X,Y):-padres(Y,_,X).
ancestro(X,Y):-padres(Y,Z,_),ancestro(X,Z).
ancestro(X,Y):-padres(Y,_,Z),ancestro(X,Z).
Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog
6. Reglas
Ejercicios sobre la familia
o Abuelo/a
o Nieto/a
o Primos/as
86
o Etc.
Ejercicio de los donantes de sangre
UNIVERSDAD DE CRDOBA
ESCUELA POLITCNICA SUPERIOR
DEPARTAMENTO DEINFORMTICA Y ANLISIS NUMRICO
LENGUAJES LENGUAJES
DE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALINGENIGERA TCNICA EN INFORMTICA DE GESTIN
INGENIERA TCNICA EN INFORMTICA DE SISTEMAS
SEGUNDO CURSO
PRIMER CUATRIMESTRE
Tema 8.- Introduccin al Lenguaje Prolog