Baixe o app para aproveitar ainda mais
Prévia do material em texto
Lista de Exercícios 2 - Prolog 1. Escreva em Prolog as seguintes sentenças: Piu-Piu é uma ave. Sereia é um peixe. Irgh é uma minhoca. Aves gostam de minhoca. Gatos gostam de peixe. Gatos gostam de aves. Amigos se gostam. Meu gato é meu amigo. Meu gato come tudo o que ele gosta. Determine usando Prolog, o que o meu gato come. Justifique sua resposta. 2. Faça um programa Prolog que defina as seguintes relações: mãe, pai,filho, filha, irmã, irmão, avô, avó, tio, tia, cunhado, cunhada, genro, nora, primo, prima, bisneto e bisneta. Crie o seu próprio conjunto de fatos usando o menor número de relações possível. 3. Considere o programa Prolog formado pelas seguintes cláusulas: a(1,1). a(2,1). a(3,2). a(4,4). b(1,2). b(1,3). b(2,3). b(3,2). b(4,4). Construa a árvore de derivação(unificação) para as consultas: (a) ?-a(X,Y),b(X,Y). (b) ?-a(X,Y),b(X,Y),a(Y,Y). RESPOSTAS Solução da segunda lista 1) gato(garfild). ave(piupiu). peixe(sereia). minhoca(irgh). amigos(garfild,voce). gosta(X,Y):-(ave(X),minhoca(Y));(gato(X),(peixe(Y);ave(Y)));amigos(X,Y). gatocome(X):-gosta(Y,X),Y=='garfild'. 2) todo os predicados podem ser escritos usando apensas o fato “pais” 3) a) a(X,Y),b(X,Y). O prolog unifica primeiro o a para depois achar um b correspondente, logo ele tentará todos os fatos de a para achar os X e Y correspondentes. Sendo assim temos: a(1,1). X=1 e Y=1, unificando ficaria b(1,1). e como esse fato não existe ele não unifica. a(2,1) X=1 e Y=2, unificando ficaria b(1,2). E como o fato existe é uma resposta possível. a(3,2) X=3 e Y=2, unificando ficaria b(3,2). E como o fato existe é uma resposta possível. a(4,4). X=4 e Y=4, unificando ficaria b(4,4). E como o fato existe é uma resposta possível. Obs: Note que tanto os fatos de a quanto os de b precisam ser verdadeiros pois o conectivo dele é o e-logico. b) a(X,Y),b(X,Y),a(Y,Y). Segundo o exemplo anterior teremos: a(1,1). X = 1 e Y= 1, unificando teremos b(1,1) e a(1,1), apesar de dois dos fatos serem verdadeiros o Prolog não unifica pois o fato de b é falso. a(2,1). X=1 e Y=2, unificando ficaria b(1,2). (true) e a(1,1) (true), logo o Prolog unifica. a(3,2). X=3 e Y=2, unificando ficaria b(3,2) (true). E a(2,2) (false), logo o Prolog não unifica. a(4,4). X=4 e Y=4, unificando ficaria b(4,4).(true). E a(4,4)(true) logo o Prolog unifica.
Compartilhar