% FICHA01



filho( joao, jose ).
filho( jose, manuel ).
filho( carlos, jose ).

pai( paulo, filipe ).
pai( paulo, maria ).

% Construir a extensão de um predicado capaz de determinar que o indivíduo P é pai do indivíduo F se existir uma prova de que F seja filho de P;
pai( P, F ):- filho( F, P ).


sexo( joao, masculino ).
sexo( jose, masculino ).
sexo( maria, feminino ).
sexo( joana, feminino ).

% Construir a extensão de um predicado capaz de determinar que o indivíduo A é avô de N se existir um indivíduo X de quem N seja filho e de quem A seja pai;

avo( A, N ):- pai(A,X), pai(X,N).

% Construira extensão de um predicado capaz de determinar que o indivíduo N é neto do indivíduo A se existir uma prova de que A seja avô de N;

neto(N,A) :- avo(A,N).
avo( antonio, nadia).

% Construir a extensão de um predicado que permita determinar se uma pessoa X descende de outra pessoa Y;
descendente( X , Y ):- filho( X, Y).
descendente(X,Y):- filho(X,Z), descendente(Z,Y).

%Construir a extensão de um predicado que permita determinar o grau de descendência entre duas pessoas, X e Y;
grau( D,A,1):-filho( D,A).
grau( D,A,G):-filho( D,Z),grau( Z,A,X), G is X+1.

% Construir a extensão de um predicado capaz de determinar se o indivíduo A é avô de N pela utilização do predicado que determina o grau de descendência entre dois indivíduos;
avo(A,N):-grau(N,A,2).

 % ------!!!NOTA!!! A-tretravo B-trisavo C-bisavo D-avo E-pai F-"criança"-----

% Construir a extensão de um predicado capaz de determinar se o indivíduo X é bisavô de Y; X=C e Y=F
bisavo(C,F) :- avo(C,E), pai(E,F).

%Construir a extensão de um predicado capaz de determinar se o indivíduo X é trisavô de Y;  X=B e Y=F
trisavo(B,F) :- avo(B,D), avo( D,F ).

%Construir a extensão de um predicado capaz de determinar se o indivíduo X é tetraneto de Y.
tetraneto(F,A ):- bisavo(A,D), avo(D,F).

