6.3 Regras
Durante a construção de relações, podemos também adicionar regras / condições a esta para que a relação seja verdadeira. Por exemplo, imagine que queremos criar um predicado que relacione um número X como sendo par. É necessário então que na declaração desse predicado verifiquemos se o resto da divisão entre X e 2 é 0 para então podermos concluir que a relação é verdadeira. O Exemplo 52 ilustra o programa:
Exemplo 52:
par(X) :- X mod 2 =:= 0.
O predicado acima pode ser lido como “X é par se X mod 2 for igual a 0”, ou seja, para X ser considerado par, é necessário que cumpra essa condição. Outra coisa que regras também nos permitem é definir novas relações em termos de relações já existentes. Por exemplo, a partir das relações pai e mae podemos criar a relação pais, que relaciona X com sendo um dos pais (pai ou mãe) de Y; podemos ainda, com base na relação pais, definir a relação irmao, que será verdadeira se X e Y tiverem pais em comum. O programa é ilustrado no Exemplo 53.
Exemplo 53:
pais(X,Y) :- pai(X,Y).
pais(X,Y) :- mae(X,Y).
irmao(X,Y) :- pais(Z,X), pais(Z,Y), X \= Y.
Note que graças ao uso de regras, podemos facilmente escrever um programa que reproduza o clássico silogismo "Todo homem é mortal. Sócrates é homem. Logo, Sócrates é mortal.". Para ver o resultado computado pelo programa do Exemplo 54, o usuário deve fazer a consulta: ?- mortal(sócrates). A resposta do sistema será yes.
Exemplo 54:
homem(sócrates).
mortal(X) :- homem(X).