Logic Programming
W.F. CLOCKSIN & C. S. MELLISH
SPRINGER VERLAG
Exercises
- Todos los caballeros de la mesa redonda son leales a
Arturo
leal(X,arturo) :- caballero(X).
- Arturo esta casado con Ginebra
casado(arturo,ginebra).
- Lanzarote es un caballero de la mesa redonda y esta liado
con Ginebra
caballero(Lanzarote), liado(Lanzarote,ginebra).
- Toda mujer que estando casada se lia con otro hombre no es leal
a su marido
not leal(Z,X):-casado(X,Y), lia(Y,Z).
- Los caballeros de la mesa redonda que vencen a todos sus
enemigos se convierten en campeones de Arturo
campeon(X,arturo):- caballero(X),enemigo(Y,X), vence(X,Y).
leal(X,arturo) :- caballero(X).
casado(arturo,ginebra).
caballero(Lanzarote), amante(Lanzarote,ginebra).
not leal(Z,X):-casado(X,Y),amante(Y,Z).
campeon(X,arturo):- caballero(X),enemigo(Y,X),
vence(X,Y).
1 - Asterix es un galo.
galo(asterix).
2 - Los romanos que son amigos de algun galo odian a
Cesar.
odia(X,cesar):-romano(X),amigo(X,Y),galo(Y).
3 - Axterix ayudo a Marco.
ayuda(asterix,marco).
4 - Marco es amigo de quien le ayuda.
amigo(marco,X):-ayuda(X,marco).
5 - Quien odia a algun romano lucha contra el.
lucha(X,Y):-romano(Y),odia(X,Y)
6 - Marco es un romano.
romano(marco).
1 - Todos los coyotes persiguen a algun correcaminos
2 - Algunos correcaminos son inteligentes
3 - Los coyotes que persiguen a correcaminos inteligentes no los
atrapan
4 - Cualquier coyote que persigue a algun correaminos pero no lo
atrapa estara hambriento
5 - Pepe es un coyote y Ana una correcaminos y ambos son
inteligentes
6 - Pepe persigue al correcaminos Ana
persigue(X,Y):-coyote(X),correcaminos(Y).
correcaminos(X). Inteligente(X).
not atrapa(X,Y):-coyote(X),correcaminos(Y),
inteligente(Y), persigue(X,Y).
hambriento(X):-coyote(X),correcaminos(Y),
persigue(X,Y),not atrapa(X,Y).
coyote(pepe). correcaminos(ana).
inteligente(pepe). inteligente(ana).
persigue(pepe,ana).
1 - Todos los felinos son mamiferos.
2 - Todos los rumiantes son mamiferos.
3 - Todos los mamiferos tienen pelo.
4 - Todos los mamiferos cazados por carnivoros son
herbivoros.
5 - Todos los felinos son carnivoros, tienen garras y tienen
dientes.
6 - Los carnivoros que cazan herbivoros mas lentos que ellos
se los acaban comiendo.
mamifero(X) :- felino(X).
mamifero(X) :- rumiante(X).
tiene(X,pelo) :- mamifero(X)
herbivoro(X) :- mamífero(X), carnivoro(Y), caza(Y,X).
carnivoro(X), tiene(X,garras), tiene(X,dientes) :- felino(X).
come(X,Y) :- carnívoro(X), herbívoro(Y), caza(X,Y),
mas_lento(Y,X).
1 - Se considerara que los clientes estaran interesados en
todos los estilos de los cuales hayan comprado algun
disco.
2 - Los clientes con interes en un estilo musical estaran
tanbien interesados en todos los estilos relacionados con
el
3 - Los clientes con interpretes en Heavy Metal o Musica
Clasica nunca compraran un disco cuyo autor sea
Enrique Iglesias
4 - Nadie tiene interes en la Jota Aragonesa y el Heavy
Metal a la vez.
interes(C,E) :- compra(C,D), estilo(D,E).
interes(C,E2) :- relacionado(E1,E2) :- interés(C,E1),
not compra(C,D) :- autor(enrique_iglesias,D):interes(C,heavy_metal) v
interes(C,música_clasica).
not (interés(C,jota_aragonesa), interés(C,heavy_metal)).
List
Head
Tail
[a, b, c]
a
[b, c]
[]
(none)
(none)
[ [el, gato], toro]
[el, gato]
[toro]
[ el, [gato, toro] ]
el
[ [gato, toro] ]
[el, [gato, toro], baja]
el
[ [gato, toro], baja]
[X+Y, x+y]
X+Y
[x+y]
Lista1
Lista2
Instanciación
[X, Y, Z]
[juan, gusto, pez]
X=juan, Y=gusta, Z=pez
[gato]
[X | Y]
X=gato, Y=[ ]
[X, Y| Z]
[mary, gusta, vino]
X=mary, Y=gusta, Z=[vino]
[ [el, Y] | Z]
[ [X, uno], [es, aquí] ]
X=el, Y=uno, Z=[ [es, aquí] ]
[oro | T]
[oro, plata]
T=[plata]
[vale, pato]
[pato, X]
(none)
[blanco | Q]
[P| pato]
P=blanco, Q=pato
Descargar

Programming in Prolog