INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24...

87
LENGUAJES LENGUAJES DE INTELIGENCIA ARTIFICIAL DE INTELIGENCIA ARTIFICIAL UNIVERSDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO DE INTELIGENCIA ARTIFICIAL DE INTELIGENCIA ARTIFICIAL INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS SEGUNDO CURSO PRIMER CUATRIMESTRE Tema 8.- Introducción al Lenguaje Prolog

Transcript of INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24...

Page 1: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

LENGUAJES LENGUAJES

DE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIAL

UNIVERSDAD DE CÓRDOBA

ESCUELA POLITÉCNICA SUPERIOR

DEPARTAMENTO DEINFORMÁTICA Y ANÁLISIS NUMÉRICO

DE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALINGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN

INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS

SEGUNDO CURSO

PRIMER CUATRIMESTRE

Tema 8.- Introducción al Lenguaje Prolog

Page 2: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Primera parte: Scheme

Tema 1.- Introducción al Lenguaje Scheme

Tema 2.- Expresiones y Funciones

Tema 3.- Predicados y sentencias condicionales

Tema 4.- Iteración y Recursión

Tema 5.- Tipos de Datos Compuestos

Tema 6.- Abstracción de Datos

LENGUAJES DE INTELIGENCIA ARTIFICIAL LENGUAJES DE INTELIGENCIA ARTIFICIAL PROGRAMAPROGRAMA

2

Tema 6.- Abstracción de Datos

Tema 7.- Lectura y Escritura

Tema 8.- Introducción al Lenguaje Prolog

Tema 9.- Elementos Básicos de Prolog

Tema 10.- Listas

Tema 11.- Reevaluación y el “corte”

Tema 12.- Entrada y Salida

Segunda parte: Prolog

Page 3: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Segunda parte: Prolog

LENGUAJES DE INTELIGENCIA ARTIFICIAL LENGUAJES DE INTELIGENCIA ARTIFICIAL PROGRAMAPROGRAMA

Tema 8.- Introducción al Lenguaje Prolog

Tema 9.- Elementos Básicos de Prolog

Tema 10.- Listas

3

Tema 10.- Listas

Tema 11.- Reevaluación y el “corte”

Tema 12.- Entrada y Salida

Page 4: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

2. Hechos

3. Preguntas

4. Variables

5. Conjunción, disyunción y negación

4

5. Conjunción, disyunción y negación

6. Reglas

Page 5: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Programación declarativa

• Programación lógica

• Conceptos comunes de la programación lógica y la programación funcional

5

programación funcional

• Orígenes de la programación lógica

• Funcionamiento básico de Prolog

Page 6: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Programación 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

¿Cómo hay que resolver el problema?

Page 7: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Tipos de programación declarativa

o Programación funcional:

� Basada en los conceptos de función y expresión

7

� Basada en los conceptos de función y expresiónmatemática.

o Programación Lógica:

� Basada en los fundamentos teóricos de la lógicamatemática.

Page 8: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Programación declarativa

• Programación lógica

• Conceptos comunes de la programación lógica y la programación funcional

8

programación funcional

• Orígenes de la programación lógica

• Funcionamiento básico de Prolog

Page 9: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Programación lógica

oo Programa = Lógica + ControlPrograma = Lógica + Control

� Lógica:

� Declaración de qué problema debe resolverse

9

� Declaración de qué problema debe resolverse

� Responsabilidad del programador

� Control:

� Declaración de cómo debe resolverse el problema

� Responsabilidad del intérprete

Page 10: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Programación Lógica

o Hecho: cosa que sucede.

o Regla: relación entre hechos.

10

Page 11: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Programación declarativa

• Programación lógica

• Conceptos comunes de la programación lógica y la programación funcional

11

programación funcional

• Orígenes de la programación lógica

• Funcionamiento básico de Prolog

Page 12: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Conceptos comunes de la programación lógica y la programación funcional

o Recursión

o Listas

12

o Listas

o Lenguajes interpretados

o Gestión automática de memoria:

� garbage collection (recogida de basura).

Page 13: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Programación declarativa

• Programación lógica

• Conceptos comunes de la programación lógica y la programación funcional

13

programación funcional

• Orígenes de la programación lógica

• Funcionamiento básico de Prolog

Page 14: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Orígenes de la programación lógica

o Fundamentos teóricos

o Precursores

o Desarrollo histórico

14

o Desarrollo histórico

Page 15: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Orígenes de la programación lógica

o Fundamentos teóricos:

� Lógica matemática

� Lógica proposicional

15

� Lógica proposicional

� Lógica de predicados

� Cláusulas de Horn

� Principio de resolución (Robinson, 1965)

Page 16: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Cláusulas de Horn:

o Disyunción de literales negados, excepto uno:

¬¬¬¬ p1 ∨∨∨∨ ¬¬¬¬ p2 ∨∨∨∨ … ¬¬¬¬ pn ∨∨∨∨ q

16

¬¬¬¬ p1 ∨∨∨∨ ¬¬¬¬ p2 ∨∨∨∨ … ¬¬¬¬ pn ∨∨∨∨ q

Page 17: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Cláusulas de Horn:

o Interpretación

¬¬¬¬ 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

Page 18: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Cláusulas de Horn

o q se verifica si se verifican p1, p2,… y pn

p1

18

o Interpretación modular:

o Prolog: regla

q :- p1, p2,…, pn

p1

p2

pn

q

Page 19: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Cláusulas de Horn

o Prolog: regla

q :- p , p ,…, p

19

q :- p1, p2,…, pn .

Cabeza Cuerpo

Page 20: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Cláusulas 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

� Lógica proposicional: p1 ∧∧∧∧ p2 � q

Page 21: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Cláusulas de Horn:

o Ejemplo 1 (continuación)

� 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

� Lógica proposicional:

� p1 ∧∧∧∧ p2 � q ≡ ¬(p1 ∧∧∧∧ p2 ) ∨ q ≡ ¬p1 ∨ ¬ p2 ∨ q

� Cláusula de Horn: ¬p1 ∨ ¬ p2 ∨ q

� Prolog: q :- p1, p2.

Page 22: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Cláusulas 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))

Page 23: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Cláusulas de Horn:

o Ejemplo 2 (continuación)

� 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)

� Lógica de predicados

� ∀x (hombre(x) � mortal (x))

� hombre(x) � mortal (x)

� Cláusula de Horn: ¬ hombre (x) ∨ mortal (x)

� Prolog: mortal (x) :- hombre (x).

Page 24: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Principio de resolución (Robinson, 1965):

o Caso básico (lógica proposicional)

� Modus Ponens: � Principio de resolución

24

� Modus Ponens:

p ���� q

p

_____

q

� Principio de resolución

¬¬¬¬p ∨∨∨∨ q

p

_____

q

Page 25: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Principio de resolución (Robinson, 1965):

o Caso básico (lógica proposicional): ejemplo

Si es un cuadrado entonces es un polígono

25

Si es un cuadrado entonces es un polígono

Es un cuadrado

____________________________________

Es un polígono

Page 26: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Principio de resolución (Robinson, 1965):

o Caso básico (lógica proposicional)

� Proposiciones

� p: es un cuadrado

26

� p: es un cuadrado

� q: es un polígono

� Principio de resolución

¬¬¬¬p ∨∨∨∨ q

p

_____

q

� Modus Ponens

p ���� q

p

_____

q

Page 27: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Principio de resolución (Robinson, 1965):

o Caso general (lógica proposicional)

¬¬¬¬ ∨∨∨∨ ¬¬¬¬ ∨∨∨∨ ¬¬¬¬ ∨∨∨∨p ∧∧∧∧ p ∧∧∧∧ … ∧∧∧∧ p ���� qPrincipio de resolución

27

¬¬¬¬ p1 ∨∨∨∨ ¬¬¬¬ p2 ∨∨∨∨ … ¬¬¬¬ pn ∨∨∨∨ q

p1

______________________

¬¬¬¬ p2 ∨∨∨∨ … ¬¬¬¬ pn ∨∨∨∨ q

p1 ∧∧∧∧ p2 ∧∧∧∧ … ∧∧∧∧ pn ���� q

p1

___________________

p2 ∧∧∧∧ … ∧∧∧∧ pn ���� q

Page 28: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Principio de resolución (Robinson, 1965):

o Caso básico (lógica de predicados)

� Principio de resolución

¬¬¬¬ ∨∨∨∨� Modus Ponens

28

¬¬¬¬p(x) ∨∨∨∨ q(x)

p(a)

___________

q(a)

p(x) ���� q(x)

p(a)

___________

q(a)

Page 29: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Principio de resolución (Robinson, 1965):

o Caso básico (lógica de predicados): ejemplo

Todos los hombres son mortales

Sócrates es un hombre

29

Sócrates es un hombre

__________________

Sócrates es mortal

Page 30: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Principio de resolución (Robinson, 1965):

o Caso básico (lógica de predicados): ejemplo

� Principio de resolución� Modus Ponens

30

� Principio de resolución

¬¬¬¬hombre(x) ∨∨∨∨ mortal(x)

hombre(Sócrates)

____________________

mortal(Sócrates)

� Modus Ponens

hombre(x) ���� mortal(x)

hombre(Sócrates)

__________________

mortal(Sócrates)

Page 31: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Principio de resolución (Robinson, 1965):

o Caso general (lógica de predicados)

� Principio de resolución

¬¬¬¬ 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)

Page 32: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Orígenes de la programación lógica

o Fundamentos teóricos

o Precursores

o Difusión histórica

32

o Difusión histórica

Page 33: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Orígenes de la programación lógica

o Precursores

� Kowalski (Universidad de Edimburgo): 1972

� Fundamentos teóricos: cláusulas de Horn y

33

� Fundamentos teóricos: cláusulas de Horn y principio de resolución

� Maarten Van Emden (Universidad de Edimburgo):

� Demostración experimental

� Alain Colmerauer (Universidad de Marsella)

� Implementación: Programmation en Logique, Prolog

Page 34: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Orígenes de la programación lógica

o Precursores

� Alain Colmerauer (Universidad de Marsella)

� Intérprete de Prolog codificado en Algol W de

34

� Intérprete de Prolog codificado en Algol W de Wirth

� Utiliza la interpretación procedimental o modular de Kowalski

Page 35: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Orígenes de la programación lógica

o Fundamentos teóricos

o Precursores

o Difusión histórica

35

o Difusión histórica

Page 36: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Orígenes de la programación lógica

o Difusión histórica

� Prolog-10 (Warren, años setenta)

� Compilador escrito casi completamente en Prolog.

� Desdén inicial:

36

� Desdén inicial:

� La comunidad científica occidental no tuvo encuenta a la Programación Lógica hasta principiosde los años ochenta.

� Factor decisivo: Proyecto de Quinta Generación de Japón (1981).

� Versión estándar: Prolog de Endimburgo

Page 37: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Programación declarativa

• Programación lógica

• Conceptos comunes de la programación lógica y la programación funcional

37

programación funcional

• Orígenes de la programación lógica

• Funcionamiento básico de Prolog

Page 38: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Funcionamiento básico de Prolog

o Búsqueda de objetivos

o Limitaciones

o Aplicaciones

38

o Aplicaciones

Page 39: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Funcionamiento básico de Prolog:

o Búsqueda 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.

Page 40: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Funcionamiento básico de Prolog:

o Búsqueda de objetivos: ejemplo1

� Hechos:

hombre(socrates).

40

hombre(socrates).

hombre(aristoteles).

� Regla:

mortal(X) :- hombre(X).

� Consulta

? mortal(socrates).

Page 41: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Funcionamiento básico de Prolog:

o Búsqueda de objetivos: ejemplo1

� Equivalencia con la lógica de predicados (1/2)

41

hombre(x) � mortal(x)

hombre(socrates)

mortal(socrates)

∀x (hombre(x) � mortal(x))

hombre(socrates)

mortal(socrates)

Page 42: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Funcionamiento básico de Prolog:

o Búsqueda de objetivos: ejemplo1

� Equivalencia con la lógica de predicados (2/2)

42

¬hombre(x) ∨ mortal(x)

hombre(socrates)

mortal(socrates)

mortal(X) :- hombre(X).

hombre(socrates).

? mortal(socrates).

yes

Principio de resolución Prolog

Page 43: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Funcionamiento básico de Prolog:

o Búsqueda 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í

Page 44: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Funcionamiento básico de Prolog:

o Búsqueda de objetivos

� Observación:

� 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

Page 45: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Funcionamiento básico de Prolog

o Búsqueda de objetivos

o Limitaciones

o Aplicaciones

45

o Aplicaciones

Page 46: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Funcionamiento básico de Prolog:

o Limitaciones

� Prolog no es un lenguaje de programación lógica completamente puro

46

completamente puro

� Prolog establece un orden de precedencia entrereglas, que no existe en la lógica.

� Prolog sólo permite la negación en el cuerpo delas cláusulas.

Page 47: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Funcionamiento básico de Prolog

o Búsqueda de objetivos

o Limitaciones

o Aplicaciones

47

o Aplicaciones

Page 48: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

• Funcionamiento básico de Prolog:

o Aplicaciones

� Demostración de teoremas

� Representación del conocimiento

48

� Representación del conocimiento

� Problemas de búsqueda

� Planificación

� Procesamiento del lenguaje natural: PLN

� Sistemas expertos

� Especificación de algoritmos

� Etc.

Page 49: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

2. Hechos

3. Preguntas

4. Variables

5. Conjunción, disyunción y negación

49

6. Reglas

Page 50: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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:

� Sócrates es un hombre

� El padre de Juan es Luis

� Antonio tiene una bicicleta

� Laura da un libro a María

Page 51: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

2. Hechos

• Ejemplos

o Hechos:

� Juan está enamorado de María

� María 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).

Page 52: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

2. Hechos

• Ejemplo

o Hecho en Prolog:

enamorado_de(juan, maria).

punto

52

predicadoargumentos

Page 53: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

2. Hechos

• Semántica

o Cada hecho posee un significado arbitrario, pero debe permanecer invariable una vez que ha sido establecido.

o El predicado establece una relación entre losargumentos.

53

o El significado de una relación 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.

Page 54: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

2. Hechos

• Sintaxis

o Los nombres de los predicados y los átomos comienzan por una letra minúscula.

o Se tiene que poner un punto “.” al final del hecho.

o El número de argumentos de una relación o predicado

54

o El número de argumentos de una relación o predicado es arbitrario pero constante.

Page 55: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

2. Hechos

3. Preguntas

4. Variables

5. Conjunción, disyunción y negación

55

6. Reglas

Page 56: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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 María tiene el libro.

punto

56

o Se está preguntando si María 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 relación

o los argumentos en número y orden.

Page 57: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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

Page 58: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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 ningún hecho que coincida con la pregunta (o regla que permita deducir ese hecho).

� Se recuerda que Prolog considera falso todo lo que no conoce.

Page 59: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

2. Hechos

3. Preguntas

4. Variables

5. Conjunción, disyunción y negación

59

6. Reglas

Page 60: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

4. Variables

• Las variables permiten hacer preguntas más versátiles

• Primer carácter de una variable:

• letra mayúscula

• Subrayado “_”

• Ejemplos

60

• Ejemplos

o ¿qué cosas tiene Juan?

� ?tiene(juan,Cosa).

Cosa = cuaderno

Cosa = bicicleta

no

Punto y coma: nueva solución

;

;

Page 61: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

4. Variables

• Ejemplos

o ¿quién tiene un cuaderno?

� ?tiene(Persona,cuaderno).

Persona = maria

Persona = juan

;

Enter

Punto y coma: nueva solución

61

Persona = juan Enter

Fin de la búsqueda

Page 62: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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

;

;

Page 63: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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

Page 64: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

4. Variables

• Variable anónima: símbolo de subrayado “_”

• Preguntas con variable anónima

o ¿quién tiene algo?

� ?tiene(Persona,_).

Persona = maria,

64

Persona = maria,

Persona = juan

o ¿Alguien tiene un cuaderno?

� ?tiene(_,cuaderno).

yes

;

Enter

Page 65: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

4. Variables

• Preguntas con variable anónima

o ¿alguien tiene algo?

� ?tiene(_,_).

yes

65

• Observación:

o Cada aparición de una variable anónima esindependiente.

Page 66: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

2. Hechos

3. Preguntas

4. Variables

5. Conjunción, disyunción y negación

66

6. Reglas

Page 67: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

• Se pueden hacer preguntas más completas si se utilizan los operadores lógicos

o Disyunción lógica: símbolo de punto y coma “;”

o Conjunción lógica: símbolo de la coma “,”

o Negación lógica: not

67

o Negación lógica: not

Page 68: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

• Conjunción lógica

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

Page 69: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

• Conjunción lógica

o ¿Qué cosa tienen en común María y Juan?

? tiene(maria,X) , tiene(juan,X).

X = cuaderno

o Reevaluación o backtracking (lógica + control)

69

o Reevaluación o backtracking (lógica + 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)

Page 70: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

• Conjunción lógica

o ¿Tiene algo María y tiene algo Juan?

? tiene(maria,_) , tiene(juan,_).

yes

70

Page 71: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

• Conjunción lógica

o Hechos:

� enamorado_de(juan, maria).

� enamorado_de(maria,juan).

� enamorado_de(laura, luis).

71

� enamorado_de(laura, luis).

o ¿Están Juan y María 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.

Page 72: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

• Disyunción lógica

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

Page 73: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

• Ejemplos

o ¿Qué cosas tienen Juan o María?

?tiene(juan,X) ; tiene(maria,X).

X = cuaderno

X = bicicleta

;

73

X = bicicleta

X = libro

X = cuaderno

no

;

;

;

Page 74: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

• Negación lógica

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

Page 75: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

• Precedencia de los operadores lógicos

o Máxima precedencia: negación lógica (not)

o Precedencia intermedia: conjunción lógica (,)

o Mínima precedencia: disyunción lógica (;)

o Los paréntesis controlan la precedencia.

75

o Los paréntesis 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

Page 76: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

1. Características Fundamentales de la Programación Lógica

2. Hechos

3. Preguntas

4. Variables

5. Conjunción, disyunción y negación

76

6. Reglas

Page 77: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

6. Reglas

mortal(X) :- hombre(X).

punto

77

Cabeza Cuerpo

Page 78: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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).

Page 79: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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).

Page 80: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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).

Page 81: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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).

Page 82: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción al lenguaje Prolog

6. Reglas

• Ejemplo de “la familia” (3/6)

o Árbol genealógico

Pedro Silvia Luis Ana

82

Laura Juan Alberto Marta Alicia

Rodrigo Carmen Isabel Miguel

Page 83: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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).

Page 84: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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.

Page 85: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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).

Page 86: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

Lenguajes de Inteligencia Artificial Tema 8.- Introducción 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

Page 87: INGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN … · Modus Ponens: Principio de resolución 24 p q p _____ q ¬¬¬¬p ∨∨∨∨q p _____ q. Lenguajes de Inteligencia Artificial

UNIVERSDAD DE CÓRDOBA

ESCUELA POLITÉCNICA SUPERIOR

DEPARTAMENTO DEINFORMÁTICA Y ANÁLISIS NUMÉRICO

LENGUAJES LENGUAJES

DE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALINGENIGERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN

INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS

SEGUNDO CURSO

PRIMER CUATRIMESTRE

Tema 8.- Introducción al Lenguaje Prolog