Escolar Documentos
Profissional Documentos
Cultura Documentos
Sintaxe Prolog
Crditos
O material a seguir consiste de
adaptaes e extenses dos originais
gentilmente cedidos pelo Prof. Alexsandro
Santos Soares
Agradecimento especial ao Prof. Gabriel
Coutinho que auxiliou na confeco do
material
Introduo
Linguagens que utilizam o paradigma lgico so
classificadas com Declarativas
Descrevem o problema e no a soluo
Descrevem O QUE deve ser feito e no COMO deve
ser feito
Conceito de Mundo Fechado
Descreve o problema atravs de FATOS e REGRAS
Realiza-se CONSULTAS que devero ser respondidas pelo
interpretador avaliando-se os fatos e regras descritos
Tudo o que o interpretador no souber ter uma resposta
negativa
Introduo
Principal linguagem de programao do
paradigma de programao lgico
PROLOG
Prolog = Programming in Logic
Linguagem de programao utilizada para resolver
problemas envolvendo objetos e relaes entre
objetos
Ex:Expressar em Prolog o fato Joo gosta de Maria:
objetos: Maria e Joo
relacionamento: gosta de, ou simplificando, gosta.
Em Prolog: gosta(joao,maria).
Sistemas Especialistas
Sistemas que emulam a especializao humana em algum
domnio especfico.
Modelagem ambiental
Modelos matemticos para a simulao do
desenvolvimento de florestas
Minerao de dados
Busca automtica em bancos de dados por
padres e relacionamentos significantes
Construo de compilares
Erlang uma linguagem criada pela Ericsson
cuja primeira verso foi feita em Prolog
Consequncias
Pensar declarativamente, no
procedimentalmente
Desafiador
Requer uma mentalidade diferente
Base de Conhecimento 1
?-
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- mulher(maria).
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- mulher(maria).
true
?-
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- mulher(maria).
true
?- tocaGuitarra(joana).
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- mulher(maria).
true
?- tocaGuitarra(joana).
true
?-
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- mulher(maria).
true
?- tocaGuitarra(joana).
true
?- tocaGuitarra(maria).
false
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- tatuada(joana).
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- tatuada(joana).
ERROR: predicate tatuada/1 not defined.
?-
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- festa.
Base de Conhecimento 1
mulher(maria).
mulher(joana).
mulher(iolanda).
tocaGuitarra(joana).
festa.
?- festa.
true
?-
Introduo
Programa Prolog
Fatos
So entendidos como relaes entre objetos
Constituem-se de afirmaes que so feitas
ao Prolog
So verdades nas quais a Prolog ir basearse para responder as consultas solicitadas
Ex: rvore genealgica
Programa Prolog
Fatos cont.
progenitor(maria, jose)
Programa Prolog
Regras
Especificao de algo que pode ser
verdadeiro se algumas condies forem
satisfeitas
composta de duas partes: Concluso
(esquerda) e condio (direita)
Exemplo: Relao Filho.
filho(X,Y) :- progenitor(Y,X).
Programa Prolog
Consultas
Questionamentos que sero respondidos
avaliando-se os fatos e regras
Joo filho de Jos?
? filho(joo, jos).
Quem o filho de Jos?
?filho(X, jos).
Quem so os filhos de Joo
?filho(X,joo).
X uma varivel que representa um objeto
desconhecido
Variveis so escritas com a primeira letra em maisculo
Base de conhecimento 2
progenitor(maria, jos).
progenitor(joo, jos).
progenitor(joo, ana).
progenitor(jos,jlia).
progenitor(jos, ris).
progenitor(ris,jorge).
filho(X,Y) :- progenitor(Y,X).
cabea
corpo
fato
regra
Base de conhecimento 3
?-
feliz(iolanda).
escuta_musica(maria).
escuta_musica(iolanda):- feliz(iolanda).
tocaGuitarra(maria):- escuta_musica(maria).
tocaGuitarra(iolanda):- escuta_musica(iolanda).
Base de conhecimento 3
feliz(iolanda).
escuta_musica(maria).
escuta_musica(iolanda):- feliz(iolanda).
tocaGuitarra(maria):- escuta_musica(maria).
tocaGuitarra(iolanda):- escuta_musica(iolanda).
?- tocaGuitarra(maria).
true
?-
Base de conhecimento 3
feliz(iolanda).
escuta_musica(maria).
escuta_musica(iolanda):- feliz(iolanda).
tocaGuitarra(maria):- escuta_musica(maria).
tocaGuitarra(iolanda):- escuta_musica(iolanda).
?- tocaGuitarra(maria).
true
?- tocaGuitarra(iolanda).
true
Clusulas
feliz(iolanda).
escuta_musica(maria).
escuta_musica(iolanda):- feliz(iolanda).
tocaGuitarra(maria):- escuta_musica(maria).
tocaGuitarra(iolanda):- escuta_musica(iolanda).
Predicados
feliz(iolanda).
escuta_musica(maria).
escuta_musica(iolanda):- feliz(iolanda).
tocaGuitarra(maria):- escuta_musica(maria).
tocaGuitarra(iolanda):- escuta_musica(iolanda).
Base do Conhecimento 4
feliz(vicente).
escuta_musica(bruno).
tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).
tocaGuitarra(bruno):- feliz(bruno).
tocaGuitarra(bruno):- escuta_musica(bruno).
Base do Conhecimento 4
feliz(vicente).
escuta_musica(bruno).
tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).
tocaGuitarra(bruno):- feliz(bruno).
tocaGuitarra(bruno):- escuta_musica(bruno).
Expressando Disjuno
feliz(vicente).
escuta_musica(bruno).
tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).
tocaGuitarra(bruno):- feliz(bruno).
tocaGuitarra(bruno):- escuta_musica(bruno).
feliz(vicente).
escuta_musica(bruno).
tocaGuitarra(vicente):- escuta_musica(vicente), feliz(vicente).
tocaGuitarra(bruno):- feliz(bruno); escuta_musica(bruno).
Prolog e Lgica
Prolog tem algo a ver com lgica
Operadores
Implicao : Conjuno ,
Disjuno ;
Base do Conhecimento 5
mulher(maria).
mulher(joana).
mulher(iolanda).
ama(vicente, maria).
ama(marcelo, maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
Variveis em Prolog
mulher(maria).
mulher(joana).
mulher(iolanda).
ama(vicente, maria).
ama(marcelo, maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
?- mulher(X).
Instanciao de Variveis
mulher(maria).
mulher(joana).
mulher(iolanda).
ama(vicente, maria).
ama(marcelo, maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
?- mulher(X).
X=maria
Solicitando Alternativas
mulher(maria).
mulher(joana).
mulher(iolanda).
ama(vicente, maria).
ama(marcelo, maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
?- mulher(X).
X=maria;
Solicitando Alternativas
mulher(maria).
mulher(joana).
mulher(iolanda).
ama(vicente, maria).
ama(marcelo, maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
?- mulher(X).
X=maria;
X=joana
Solicitando Alternativas
mulher(maria).
mulher(joana).
mulher(iolanda).
ama(vicente, maria).
ama(marcelo, maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
?- mulher(X).
X=maria;
X=joana;
X=iolanda
Solicitando Alternativas
mulher(maria).
mulher(joana).
mulher(iolanda).
ama(vicente, maria).
ama(marcelo, maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
?- mulher(X).
X=maria;
X=joana;
X=iolanda.
?
Base do Conhecimento 5
mulher(maria).
mulher(joana).
mulher(iolanda).
ama(vicente, maria).
ama(marcelo, maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
?- ama(marcelo,X), mulher(X).
Base do Conhecimento 5
mulher(maria).
mulher(joana).
mulher(iolanda).
ama(vicente, maria).
ama(marcelo, maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
?- ama(marcelo,X), mulher(X).
X=maria.
?-
Base do Conhecimento 5
mulher(maria).
mulher(joana).
mulher(iolanda).
ama(vicente, maria).
ama(marcelo, maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
?- ama(abobrinha,X), mulher(X).
Base do Conhecimento 5
mulher(maria).
mulher(joana).
mulher(iolanda).
ama(vicente, maria).
ama(marcelo, maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
?- ama(abobrinha,X), mulher(X).
false
?-
Base do Conhecimento 6
ama(vicente,maria).
ama(marcelo,maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
Base do Conhecimento 6
ama(vicente,maria).
ama(marcelo,maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
Base do Conhecimento 6
ama(vicente,maria).
ama(marcelo,maria).
ama(abobrinha, coelhinho).
ama(coelhinho, abobrinha).
Base do Conhecimento 7
Base de fatos:
gosta(joao, peixe).
gosta(joao,maria).
gosta(maria,livro).
gosta(pedro,livro).
gosta(maria,flor).
gosta(maria,vinho).
Prolog
Comentrio em Prolog
Linha: %
Bloco: /* ..... */
Referncias
Luis, A. M. Palazzo, Introduo
Programao Prolog, Educat, 1997.