MC600 - Segundo semestre de 2003 - LISTA 8 ------------------------------------------ 1. Defina os seguintes predicados em PROLOG: * mother(X,Y). * father(X,Y). * grandmother(X,Y). * grandfather(X,Y). * sibling(X,Y). Não se esqueça que ninguém é irmão de si mesmo. * aunt(X,Y). * uncle(X,Y). * cousin(X,Y). 2. Monte uma base de dados usando apenas fatos do tipo parent(fulano, ciclano), male(beltrano) e female(fulana) de modo que esta base de dados represente a sua família desde seus avós até sua geração e teste seus predicados do exercício 1. O fato parent(fulano, ciclano) significa que fulano é pai ou mãe de ciclano. 3. Os números de Fibonacci são definidos da seguinte forma: F(0) = 0 F(1) = 1 F(n) = F(n-1) + F(n-2), para n > 1. Defina um predicado fib(N,F) que calcule o valor do N-ésimo número de Fibonacci. 4. Defina um predicado member(X,L) que é satisfeito quando X é um elemento da lista L. 5. Defina um predicado count(X,L,N) que é satisfeito quando o elemento X ocorre em L exatamente N vezes.