pai(sergio,charles). % constantes comecam com letra minuscula pai(sergio,lais). pai(sergio,shirley). pai(joao,sergio). pai(antonio,marlene). pai(antonio,maria). pai(jose,antonio). pai(pedro,jose). mae(marlene,charles). % todos os predicados de mesmo nome devem aparecer em sequencia mae(marlene,lais). mae(marlene,shirley). mae(maria,bianca). mae(maria,gabriel). mae(cristina,antonio). mae(ana,pedro). irmao(X,Y) :- pai(Z,X), pai(Z,Y), X\=Y. irmao(X,Y) :- mae(Z,X), mae(Z,Y), X\=Y. avo(X,Y) :- pai(X,Z), pai(Z,Y). avo(X,Y) :- pai(X,Z), mae(Z,Y). avo(X,Y) :- mae(X,Z), pai(Z,Y). avo(X,Y) :- mae(X,Z), mae(Z,Y). bisavo(X,Y) :- pai(X,Z), avo(Z,Y). bisavo(X,Y) :- mae(X,Z), avo(Z,Y). tio(X,Y) :- irmao(X,Z), pai(Z,Y). tio(X,Y) :- irmao(X,Z), mae(Z,Y). antepassado(X,Y):- pai(X,Y). antepassado(X,Y):- mae(X,Y). antepassado(X,Y):- pai(X,Z), antepassado(Z,Y). antepassado(X,Y):- mae(X,Z), antepassado(Z,Y). %%%%% %%%%% Listas [3,2,5,6,1,2,gato,cachorro,papagaio,f(X)] %%%%% %%%%% Lista vazia [] %%%%% Lista nao vazia [X|Y], onde X e o PRIMEIRO ELEMENTO da lista e Y e o RESTO da lista. %%%%% [X|Y] = [4,3,6,5] %%%%% Concatenacao concat([1,4,6],[2,5,8],[1,4,6,2,5,8]). concat([],L,L). concat([X|R],L,[X|F]) :- concat(R,L,F). %%%% Insercao ordenada inserir(X,L,R). supor que L eh uma lista ordenada e R tambem. inserir(X,[],[X]). inserir(X,[Y|R],[Y|I]) :- X>Y, !, inserir(X,R,I). inserir(X,[Y|R],[X,Y|R]). ordenar([],[]). ordenar([X|R],Ord):-ordenar(R,Rord),inserir(X,Rord,Ord).