Aluno: Daniel Amaral de Medeiros Rocha
Primeira lista de exercícios (PROLOG)
Exercício 1
escritor([machado,de,assis]).
escritor([shakeaspeare]).
escritor([michael,chrichton]).
tipo([dom,casmurro],romance).
tipo([quincas,borba],romance).
tipo([hamlet],teatro).
tipo([otelo],teatro).
escritoPor([dom,casmurro],[machado,de,assis]).
escritoPor([quincas,borba],[machado,de,assis]).
escritoPor([hamlet],[shakeaspeare]).
escritoPor([otelo],[shakeaspeare]).
escritoPor([jurassic,park],[michael,chrichton]).
escritoPor([sphere],[michael,chrichton]).
publicadoEm([dom,casmurro],1900).
publicadoEm([quincas,borba],1891).
publicadoEm([hamlet],1600).
publicadoEm([otelo],1610).
publicadoEm([jurassic,park],1993).
publicadoEm([sphere],1998).
ficcao(X) :- tipo(X,romance);tipo(X,teatro).
romancista(X) :- escritoPor(Y,X),tipo(Y,romance).
autorModerno(X) :- escritoPor(Y,X),publicadoEm(Y,Z),Z > 1900.
Exercício 2
edge(alcapao,buraco).
edge(buraco,alcapao).
edge(alcapao,caverna).
edge(caverna,alcapao).
edge(caverna,rio).
edge(rio,caverna).
edge(buraco,rio).
edge(rio,buraco).
edge(rio,estabulo).
edge(estabulo,rio).
edge(tunel,lareira).
edge(lareira,tunel).
connected(N1,N2) :- edge(N1,N2); connected(N1,NX),connected(NX,N2).
Exercício 3
prefixo([],_) :- true.
prefixo([P|X],[P|Y]) :- prefixo(X,Y).
sufixo(S,S) :- true.
sufixo(S,[_|P]) :- sufixo(S,P).
Segunda lista de exercícios (Lógica de 1a ordem)
Exercício 1
a: Artur
b: Bernardo
c: Carlos
h: Heitor
in(X) -> X é inocente
amigo(X,Y) -> X é amigo de Y
gosta(X,Y) -> X gosta de Y
cidade(X) -> X estava na cidade no dia do crime
conhece(X,Y) -> X conhece Y
estava(X,Y) -> X estava com Y na hora do crime
Depoimentos dos suspeitos:



Quem estiver com Heitor no dia do crime, estava na cidade:

Quem é amigo, conhece:

Quem gosta, conhece:

Somente um culpado:

Queremos descobrir:

Para isso, usamos Skolen e adicionamos uma cláusula resp(x):

Vamos agora eliminar todos os implica, transformar todas as fórmulas para a forma normal conjuntiva e eliminar as conjunções. Ficamos com o seguinte conjunto:
01. 
02. 
03. 
04. 
05. 
06. 
07. 
08. 
09. 
10. 
11. 
12. 
13. 
O processo de resolução é, então:
(clausulas usadas): nova cláusula
(13,03): 14. 
(13,04): 15. 
(14,07): 16. 
(15,08): 17. 
(16,06): 18. 
(17,01): 19. 
(19,11): 20. 
(20,18): 21. 
Logo, concluímos que o assassino de Heitor é Bernardo.
Exercício 2
Vamos usar os seguintes predicados:
- indica que
é um barbeiro.
- indica que
barbeia
.
Do enunciado do problema, derivamos as seguintes expressões:
1. 
2. 
Vamos obter as cláusulas a partir das expressões acima:
01. 
02. 
Vamos tentar então provar a negação:

Eliminando o
, usando Skolen:
03. 
Resolvendo, então:
(01,03): 04. 
(02,03): 05. 
(02,04): 06. 
(06,01) - fatoração + merging: 07. 
(07,03): 08. 
(08,05): 09. 
(08,09): 10. 
Logo, concluímos que não existem barbeiros.





