Está en la página 1de 24

 Persona que posee determinados

conocimientos y experiencia en un
campo de la actividad humana y es capaz
de aplicarlos con rapidez y eficiencia en
la resolución de tareas.
 Programas de ordenador que intentan
imitar a un humano experto en un ámbito
concreto
 Lenguaje de programación basado en
reglas y hechos de lógica, cuya
información es retribuida en forma de
consultas.
 HECHOS: Oración, expresa relación entre objetos.
es_hijo(luis,pedro).
relación objetos fin de afirmación
 REGLAS: Se utilizan para indicar que un hecho
depende de uno o más hechos. Son la representación
de las implicaciones lógicas p ---> q (p implica q)..
 Sentencia condicional (:-)
es_hijo(X,Y):- es_padre(Y,X), es_hombre(X).
 VARIABLES: Son la representación de objetos
 CONSULTAS
 Nombre de variables comienza con
Mayúsculas
 Las constantes se escriben con
Minúsculas
 Las afirmaciones se terminan con .
(punto)
 No se pueden dejar espacios entre los
nombres de las constantes, utilizar(_)
 Los comentarios empiezan con %
 Predicados: elementos ejecutables en
Prolog.

 Objetivo: Llamada
concreta a un predicado,
con unos argumentos concretos.
Predicado es cierto
para los argumentos
dados
Éxito
Variables libres
quedan ligadas

OBJETIVO Resultado
Predicado es falso
para los argumentos
Fallo dados

No ocurren
ligaduras en las
variables libres
 Ejemplo simple:
• son_hermanos('Juan','Maria')
• Este objetivo solamente puede tener una solución
(verdadero o falso).
 Usando una variable libre:
• Son_hermanos(juan,X).
• Pueden existir varios valores para dicha variable
que hacen cierto el objetivo (X = 'Maria', y para
X = 'Luis‘)
 Usando varias variables libres:
• son_hermanos(X,Y).
• Combinaciones de ligaduras para las variables
que hacen cierto el objetivo (X = 'Juan' y Y =
'Maria' es una solución, otra solución X = 'Juan' y
Y = 'Luis').
 Los objetivos se pueden combinar
mediante conectivas: la conjunción, la
disyunción y la negación.
 Hay que tener en cuenta qué ocurre con las
ligaduras de las variables:
• Los objetivos se ejecutan secuencialmente por orden de
escritura (izquierda a derecha).

• Si un objetivo falla, los siguientes objetivos ya no se ejecutan.

• Si un objetivo tiene éxito, algunas o todas sus variables quedan


ligadas, y por tanto, dejan de ser variables libres para el resto
de objetivos en la secuencia.

• Si todos los objetivos tienen éxito, la conjunción tiene éxito y


mantiene las ligaduras de los objetivos que la componen.
 edad(luis,32), edad(juan,25), 32>25
 Edad de Luis es 32 años, y la edad de Juan es 25:
 Ejecución del primer objetivo tiene éxito y liga la variable "X",
que antes estaba libre, al valor 32.
 Ejecutar el segundo objetivo la variable "Y" también estaba libre,
pero el objetivo tiene éxito y liga la variable al valor 25.
 Ejecutar el tercer objetivo, (las variables ya no están libres porque
fueron ligadas anteriormente). Como el valor de "X" es mayor que
el de "Y" la comparación tiene éxito.
 Todos los objetivos han tenido éxito, la conjunción tiene éxito, y
deja las variables " X" y " Y" ligadas a los valores 32 y 25
respectivamente.
 + suma
 - resta
 * multiplicación
 / división
 // división de enteros (truncada)
 mod resto de la división
 ** potenciación
 \+ negación

, conjunción lógica (y)

; disyunción lógica (ó)

 :- implicación lógica (if)


 =:=igual
 =\= diferente
 < menor
 > mayor
 =< menor o igual
 >= mayor o igual
 is.
 Evalúasi un número equivale a una
expresión.
 nl.
 Salto de línea.
 Between.
 Encuentra número en un rango.
 Negación
 Predicado \+ tiene exito solo si fracasa su
argumento

 %Hechos

 padrede('juan', 'maria'). % juan es padre


de maria
 padrede('pablo', 'juan').
 padrede('pablo', 'marcela').
 padrede('carlos', 'debora').
 %Reglas

 hijode(A,B) :- padrede(B,A). % A es hijo de B si B es


padre de A.
 abuelode(A,B) :- padrede(A,C), padrede(C,B). % A es
abuelo de B si A es padre de C y C es padre B.
 hermanode(A,B) :- padrede(C,A) , padrede(C,B), A =\=
B. % A y B son hermanos si C es padre de A y C es
también el padre de B y si A y B no son lo mismo.
 % A y B son familiares si A es padre de B
 % A y B son familiares si A es hijo de B
 % A y B son familiares si A es hermano de B
 familiarde(A,B) :- padrede(A,B).
 familiarde(A,B) :- hijode(A,B).
 familiarde(A,B) :- hermanode(A,B).
 %% Consultas de prueba
 ?- hermanode('juan', 'marcela'). % juan es hermano
de marcela?
 yes
 ?- hermanode('carlos', 'juan'). % carlos es hermano
de juan?
 no
 ?- abuelode('pablo', 'maria'). % pablo es abuelo de
maria?
 yes
 ?- abuelode('maria', 'pablo'). % maria es abuela de
pablo?
 no

También podría gustarte