Lista de Prolog (turma B e MC600)

Instruções:

Coloque apenas os predicados pedidas (mais os predicados auxiliares) no arquivo "ra123456.lsp" se seu RA é 123456. Não coloque no arquivo os seus testes.

Me mande um email com o titulo "MC336 lista 5" e com o arquivo como attachment Isso é importante. Precisa ser ATTACHMENT - verifique que seu emailer não inclue no corpo da mensagem attachments em texto.

Problemas

Problema 1

Escreva o predicado profmedia(L,A,PM) que é verdadeiro quando L é uma lista que contém sublistas, e subsublistas, etc, A é um simbolo e PM é a a média das profundidades do simbolo na lista. Elementos da lista estão a profundidade 1, elementos das sublistas a profundidade 2, etc. Se o atomo não aparece na lista (em nenhuma profundidade), o predicado deve falhar.

Problema 2

Considere os seguintes predicados
casou(H,M,A)
separou(H,M,A)
morreu(P,A)

casou(H,M,A) indica que o homem H casou com a mulher M no ano A.

separou(H,M,A) que indica que o homem H se separou de M no ano A.

morreu(P,A) indica que a pessoa (homem ou mulher)P morreu no ano A.

Assuma que uma pessoa só se casa no maximo 1 vez por ano, e se separa no minimo no ano seguinte. Assuma tambem que os dados sao consistentes, por exemplo, que nenhum morto se casa, que as pessoas nao são bigamas, não trocam de sexo, etc.

Escreva o predicado viuvos(L) que é verdadeiro quando L é a lista de todos os viuvos homens, isto é, homens que estavam casados com uma mulher que morreu. Os viuvos não precisam estar vivos em 2006.