Introdução Introdução ao Prolog o O Prolog permite-nos descrever um “problema” em termos de factos e regras. Noel de Jesus Mendonça Lopes Factos Factos simples o Os factos consistem num item particular ou numa relação entre itens. o Factos o Os factos começam sempre por uma letra pequena. o Exemplo de factos simples: n Simples; n Com argumentos (relações). n nevoeiro. n sol. n monstro_morto. 1 Factos com argumentos Variáveis e Unificação o Factos mais complexos, consistem numa relação e nos itens a que se refere (argumentos). Uma facto pode ter um número de argumentos arbitrário. o relação(<arg1>, ..., <argN>). o Exemplo : o come(fernando, peras). ?- come(fernando, Quê). o Unificação é o processo que efectua a correspondência entre objectos e variáveis. n gosta(joão, maria). Regras Regras – Exemplos o As regras permitem-nos fazer afirmações condicionais acerca do mundo. o Exemplo: o pai(P, F) :- umdospais (P, F), homem(P). o mãe(M, F) :- umdospais (M, F), mulher(M). o irmão(X, Y) :- umdospais (P, X), umdospais(P, Y), not(X=Y). o tio(T, X) :- umdospais (P, X), irmão(P, T). o primo(X, Y) :- tio(T, X), umdospais (T, Y). o é_pai(X) :- pai(X, _). n mortal(X) :- humano(X). humano(socrates). ?- mortal(socrates). ?- mortal(Quem). 2 Regras - Clausulas Backtracking o divertido(X) :- vermelho(X), carro(X). divertido(X) :- azul(X), mota(X). divertido(gelado). o Quando uma variável aparece numa clausula ela diz apenas respeito a essa clausula. o o o o o o o o faz_festa (X):- aniversário(X), contente(X). aniversário(antónio). aniversário(fernando). aniversário(helena). contente(maria). contente(joana). contente(helena). ?- faz_festa(Quem). Recursividade o antepassado(X, Y):- umdospais(X, Y). antepassado(X, Y):- umdospais(X, Z), antepassado(Z, Y). umdospais(antónio, joão). umdospais(joão, laura). umdospais(laura, ana). umdospais(ana, miguel). umdospais(miguel, maria). ?- antepassado(antónio, maria). 3