pai( abraao, isac ). pai( isac, jaco ). pai( isac, esau ). pai( jaco, jose ). mae( sara, isac ). mae( rebeca, jaco ). mae( rebeca, esau ). mae( raquel, jose ). avo( X, Y ) :- pai( X, Z ), pai( Z, Y ). progenitor( X, Y ) :- pai( X, Y ). progenitor( X, Y ) :- mae( X, Y ). irmao( X, Y ) :- progenitor( Z, X ), progenitor( Z, Y ), X @< Y. ancestral( X, Y ) :- progenitor( X, Y ). ancestral( X, Y ) :- progenitor( X, Z ), ancestral( Z, Y ). % Exercícios: % 1) 'avô_ou_avó'( X, jaco) deve também dar como resposta sara. (predicado com acento precisa estar entre aspas simples) % 2) implementar primo(X,Y), tio(X,Y) e tio_avo(X,Y). Fornecer dados para testar. % 3) implementar ancestrais_masculinos, não deve fornecer sara como resposta. % Esse aqui é pra vocês verem como imprimir todos os ancestrais, e no final ele falha. Pergunta: como fazer para ele % ter sucesso no final em vez de falhar? . todos_ancestrais :- ancestral( X, Y ), write( X ), write( ', ' ), write( Y ), nl, fail. % While( cond ) comando == if( cond ) { comando; While( cond ) comando}