O documento descreve o que é a linguagem de programação Prolog. Prolog é uma linguagem declarativa baseada em lógica de predicados de primeira ordem que especifica o que é verdadeiro em vez de como executar tarefas. O documento explica os principais conceitos de Prolog como predicados, regras, fatos e conjuntos e fornece exemplos de como representar informações e fazer consultas em Prolog.
2. O que é PROLOG?
Prolog é uma linguagem declarativa ao invés de
procedimental. Isto significa que ela especifica o quê se
sabe e o que deve ser feito, mas não especifica como
fazer.
A linguagem consiste na declaração (ou descrição de
uma interpretação) de hipóteses que são verdadeiras
em uma interpretação
Na lógica de predicados usamos regras de inferência
para demonstrar que uma tese é consequência de
determinadas hipóteses
Programação em Lógica e especificamente a linguagem
Prolog – Programação Logica – também pode provar
teses a partir de hipóteses
A linguagem Prolog inclui: predicados, conectivos
lógicos e regras de inferência - Princípio da Resolução
Um programa Prolog possui três interpretações semânticas básicas:
Interpretação declarativa.
Entende-se que as cláusulas que definem um programa descrevem uma
teoria de primeira ordem.
Interpretação procedimental.
As cláusulas são vistas como entrada para um método de prova.
Interpretação operacional.
As cláusulas são vistas como comandos para um procedimento particular
de prova por refutação.
Proveito das alternativas semânticas:
Declarativa: Permite a modelagem do problema
simplificando a tarefa de programação
Procedimental: Permite que o programador
identifique e descreva o problema em subproblemas
através de uma série de chamadas a procedimentos
Operacional: Permite controle da execução através da
ordenação das cláusulas e objetivos
3. Quais são os conjuntos do ProLog?
O conjunto de declarações que forma um programa Prolog é chamado de base de conhecimento (BC) ou base de
fatos.
Para determinar se uma tese (consulta do usuário à BC) é ou não verdadeira, o Prolog aplica suas regras de
inferência na BC sem a necessidade de instruções adicionais por parte do programador
Bases de conhecimento convencionais descrevem apenas fatos
“Tico é um pinguim”
As sentenças de um Programa em Lógica, além de descrever fatos, permitem a descrição de regras
“Todo pinguim é um ave”
Havendo regras, novos fatos podem ser deduzidos
“Tico é uma ave”
4. Subconjuntos do PROLOG:
O Prolog é baseado num subconjunto do cálculo de predicados de primeira ordem, o que é definido por cláusulas de Horn.
A execução de um programa em Prolog é efetivamente a prova de um teorema por resolução de primeira ordem. Alguns
conceitos fundamentais são unificação, recursão, e backtracking.
Em Prolog são fornecidos os fatos e as regras para uma base de dados, que posteriormente serão executadas consultas
(queries) em cima da base de dados.
A estrutura de um fato é formada por um predicado, seus argumentos (objetos) e finalizamos a instrução com um ponto(.)
equivalente ao ponto-vírgula das linguagens comuns de programação. Veja a seguir:
predicado(argumento1,argumento2...). O predicado é a relação sobre os quais os objetos irão interagir.
Exemplos:
-> amiga(joana, maria).
Definimos uma relação de amizade entre dois objetos, joana e maria.
-> homem(jose).
Note que quando usamos apenas um objeto, o predicado passa a ser uma característica do próprio objeto.
Fatos: a Regras: a b Consultas: b Vazia:
5. Sentenças do PROLOG:
As sentenças de um programa prolog são expressas por
cláusulas
Tipos de cláusulas: fatos e regras
Fato: declaração de uma verdade incondicional
Regra: condição que deve ser satisfeita para que um declaração
seja considerada verdadeira
Programar em Prolog consiste em:
Declarar alguns fatos sobre objetos e suas relações
Definir algumas regras sobre objetos e suas relações
Fazer consultas sobre objetos e suas relações
a :- b1, b2 ...bi ; bj ... bn.
“se”
SE
Condição
“OU”
E
6. Representação Textual:
Considere o seguinte texto:
“João nasceu em Russas e Jean nasceu em Paris. Paris fica na França, enquanto que
Russas fica no Rio Grande do Norte. Agora, só é Nordestino quem nasceu no Rio Grande
do Norte, oxente.”
Ao lado a codificação em Prolog:
Uma consulta começa com um ponto de interrogação seguido do sinal de
menos e termina com ponto final. Exemplo usando os fatos do slide 9:
Pedro e amigo de Carlos e Ana não conhece o Carlos, Quem é o pai de Ana?
?- pai(pedro, ana).
Yes
?- pai(pedro, carlos).
No
Quando uma consulta é feita, o Prolog realiza uma busca na sua base de
conhecimento, procurando um fato que se unifique à questão
nasceu(joão,Russas).
nasceu(jean,paris).
fica(paris,frança).
fica(russas,rn).
nordestino(X):-
nasceu(X,Y),
fica(Y,rn).
?- Nordestino(X).
X=joão;
É possível também incluir a
especificação da relação mãe, com
base no seguinte fundamento
lógico:
Para todo X e Y,
– X é a mãe de Y se
– X é um progenitor de Y e
– X é uma mulher.
Traduzindo para Prolog:
mãe(X,Y) :- progenitor(X,Y),
mulher(X).
7. Acrescentando uma nova regra à BD , pode-se fazer
um novo tipo de consulta
Perguntas mais interessantes também podem ser
efetuadas: Quem é o progenitor de Ismael?
progenitor(sara,isaque).
progenitor(abraão,isaque).
progenitor(abraão,ismael).
progenitor(isaque,esaú).
progenitor(isaque,jacó).
progenitor(jacó,josé).
?- progenitor(X,ismael).
• Neste caso, o Prolog não vai responder apenas true
ou false.
O Prolog fornecerá o valor de X tal que a pergunta
acima seja verdadeira‰. Assim a resposta é: X =
abraão
Perguntas mais complexas também podem
ser efetuadas, tais como: Quem é o avô de
José?
• Como o programa não conhece diretamente
a relação avô, esta pergunta deve ser
desmembrada em dois passos – (1) Quem é o
progenitor de José? Assuma que é um Y – (2)
Quem é o progenitor de Y? Assuma que é um
X
• Esta pergunta composta pode ser escrita em
Prolog como:
?- progenitor(Y,josé), progenitor(X,Y).
X = isaque Y = jacó
8. Bibliografia :
http://www.linhadecodigo.com.br/Artigo.as
px?id=1697
PROLOG. Disponível em:
http://www.din.uem.br/ia/ferramen/prolog
/.
PROLOG, Wikipédia - Enciclopédia livre.
Disponível em:
http://pt.wikipedia.org/wiki/Prolog.
JACQUES ROBIN, Slides sobre Fundamentos
do Prolog.
Bibliografia
Judith L. Gersting: Fundamentos Matemáticos
para a Ciência da Computação, LTC Editora,
3a edição, 1995.
Luiz A. M. Palazzo: Introdução à Programação
PROLOG, Editora da Universidade Católica de
Pelotas/UCPEL - Pelotas