Você está na página 1de 4

Prctica 4: Fundamentos de Prolog

Ejercicio 1:
Dada la siguiente base de conocimientos:
progenitor(clara,jose).
progenitor(tomas, jose).
progenitor(tomas,isabel).
progenitor(jose, ana).
progenitor(jose, patricia).
progenitor(patricia,jaime).
se pide dar todas las respuestas de PROLOG y el enunciado verbal de las
siguientes preguntas:
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).

Ejercicio 2:
Dada la base de conocimiento del ejercicio 1, formular en Prolog las siguientes
preguntas:
a) Quin es el progenitor de Patricia?
b) Tiene Isabel un hijo o una hija?
c) Quin es el abuelo de Jaime?
d) Cules son los tos de Patricia?
En el caso en que la respuesta incluya otras variables, especificar cuales deben
tomarse en cuenta

Ejercicio 3:
Dada la base de datos familiar del ejercicio 1, agregue los siguientes hechos y
clausulas:
hombre(tomas).
hombre(jose).
hombre(jaime).
mujer(clara).
mujer(isabel).
mujer(ana).
mujer(patricia).
dif(X,Y):- X\=Y.

Escribir las reglas de PROLOG que expresen las siguientes relaciones:


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). Tener en cuenta que una persona no es hermano de s
mismo.
g) tia(X,Y).

Ejercicio 4:
Dada la base de conocimientos del ejercicio 1:
a) Define una regla que permita obtener los sucesores de una persona.
b) Compruebe el funcionamiento de PROLOG para obtener los sucesores de
Clara.
Escribir el rbol de derivacin natural.

Ejercicio 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?

Ejercicio 6:
Con la siguiente definicin de segmento:
segmento(punto(X1,Y1),punto(X2,Y2)).
Representar cualquier segmento lnea vertical con X=5.
Ejercicio 7:
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).
Cmo se comporta PROLOG ante las siguientes preguntas?
a) ?-f(s(1),A).
b) ?-f(s(s(1)),dos).
c) ?-f(s(s(s(s(s(s(1)))))),C).
d) ?-f(D,tres).

Ejercicio 8:
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 ;?

Ejercicio 9:
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).

Ejercicio 10:
Dada la siguiente base de conocimientos:
signo(aries,21,3,21,4).
signo(tauro,21,4,21,5).
signo(geminis,21,5,21,6).
signo(cancer,21,6,21,7).
signo(leo,21,7,21,8).
signo(virgo,21,8,21,9).
signo(libra,21,9,21,10).
signo(escorpio,21,10,21,11).
signo(sagitario,21,11,21,12).
signo(capricornio,21,12,21,1).
signo(acuario,21,1,21,2).
signo(piscis,21,2,21,3).
Definir la clausula signo(Dia, Mes, Signo) que ser verdadera cuando el Dia y el
Mes este en el rango que le corresponde al Signo.
Por ejemplo:
?- signo(25,9,libra)
?- signo(12,4,aries)
?- signo(18,12,X)

Yes
No
X=sagitario

Ejercicio 11:
Dada la siguiente base de conocimientos:
acaba_de_comer(mosquito,sangre(juan)).
acaba_de_comer(sapo,mosquito).
acaba_de_comer(buho,sapo).
acaba_de_comer(zorro,buho).
Escribir una regla esta_digiriendo, en prolog que permita verificar las siguientes
preguntas:
? esta_digiriendo(mosquito,sangre(X)).
X=juan
?esta_digiriendo(buho,mosquito).
YES

Você também pode gostar