Vous êtes sur la page 1sur 45

Company

LOGO
CCT LCMAT Cincia da Computao
Prof. Ausberto S. Castro V.
ascv@uenf.br
Linguagens de Programao
PROLOG
Company
LOGO
Bibliografia
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
W.Clocksin
2
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Lgica
LGICA: estudo das proposies
Conjuno p AND q
p . q
Disjuno p OR q
p v q
Clusula de Horn (argumento)
uma disjuno de literais com pelo menos um literal positivo

ou equivalentemente


Predicado
Uma funo P(p,q,r,...) que verdadeiro ou falso
Uma proposio composta
3
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Lgica - Tabelas-verdade
Conjuno
p q p . q

V V V
V F F
F V F
F F F
Disjuno
p q p v q

V V V
V F V
F V V
F F F
Negao
p p

V F
F V
V = verdadeiro
F = falso
p q p v q
4
p q (p q) . (q p)
Condicional BiCondicional
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
5
Clculo
Proposicional
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 6
Argumento vlido
Um argumento uma seqncia (conjuno)
de sentenas chamadas premissas, seguida
de outra sentena chamada concluso, na
forma de uma implicao:
p
1
. p
2
. p
3
. ... .p
n
q
Se um argumento
p
1
. p
2
. p
3
. ... .p
n
q
uma tautologia, ento chamado de
argumento vlido
Se (p1 . p2) q um argumento vlido, ento dizemos
que a concluso q deduzida ou inferida da verdade das
premissas p1 e p2
Argumentos no vlidos so chamados de
falacias
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 7
Implicao Lgica
Se p e q so duas proposies qualquer tais que p
q uma tautolgia, ento dizemos que p implica
logicamente q e escrevemos p q
Neste caso nos referimos a p q como uma implicao lgica
Se p q e q p ento escrevemos p q

Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 8
Regras de Inferncia
Permitem a deduo de novas proposies a partir
de proposies anteriores

fbf = frmula bem formada: p, p . q, p v q, ~p
Permitem a deduo de novas fbf a partir de fbf
anteriores

Pedro l jornal
Pedro l revistas
Ento Pedro l jornal e revistas
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 9
Regras de Inferncia
Modus Ponens MP
p, p q
q
Modus Tollens MT
p q, ~q
~p
Silogismos HS
p q, q r
p r
Conjuno CONJ
p, q
p . q
Simplificao SIMP
p . q p . q
p q
Dilema DC
p q, r s , p v r
q v s
Silogismo Disjuntivo SD
p v q , ~p p v q, ~q
q p
Adio ADD
p q
p v q p v q
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 10
Regras de Inferncia
Amplificao AMP
p
p v q
Prova Condicional CON
p q
p (q r)
r
Prova por Casos CAS
p r
q r
(p v q) r
Dilema Destrutivo DD
p q
r s
~q v ~s
~p v ~r
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 11
Modus Ponens MP

Maria ganha um milho de reais
Se Maria ganha um milho de reais ento Luisa abandona o
emprego
Portanto, Luisa abandona o emprego

Se Joo vai a Fortaleza de frias, ento ele ganha um desconto
escolar
Joo j esta de frias em Fortaleza
Portanto, Joo j ganhou um desconto escolar
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 12
Modus Tollens MT

Se Carlos for eleito Presidente, ento Guilherme ser nomeado
como ministro de Cultura
Guilherme no o ministro de Cultura
Portanto, Carlos no foi eleito Presidente

Se tiver chuva nas quartas-feiras ento teremos aula terica
Nesta quarta tivemos aula prtica
Portanto, no teve chuva nesta quarta-feira
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 13
Exemplo

Suzana esta preparando um bolo
Se Suzana esta preparando um bolo, ento ela no esta
dando aulas de piano
Se Suzana no esta dando aulas de piano, ento ela no
pode pagar o seguro do seu carro
Por tanto, Suzana no pode pagar o seguro do seu carro

p
p ~q
~q ~r
~r
Demonstrar a validade do argumento
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 14
Demonstrando a validade do argumento
Passos Razes
1. p ~q premissa
2. ~q ~r premissa
3. p ~r 1. e 2. e HS
4. p premissa
5. ~r 4. e MP
Outra forma
1. p premissa
2. p ~q premissa
3. ~q 1. e 2. e MP
4. ~q ~r premissa
5. ~r 3. e 4. e MP
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 15
Exerccios
Demonstrar a
validade do
argumento
p r
r s
t v ~s
~t v u
~u
~p

1. p r, r s premissa
2. p s 1. e HS
3. t v ~s premissa
4. ~s v t 3.
5. s t 4.
6. p t 2. e 5.
7. ~t v u premissa
8. t u 7.
9. p u 6. e 8.
10.~u premissa
11.~p 9. e 10.

Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 16
Exerccios - Provar os seguintes argumentos:
p r
~p q
q s
~r s
p q
q (r . s)
~r v (~t v u)
p . t
u
~p q
q r
~r
p
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Histria do Prolog
1974 Bob Kowalski
University of Edinburgh, Escocia
Demonstrao automatizada de teoremas
Predicate Logic as Programming Language
IFIP Congress, Stockholm
1975 - Alain Colmerauer & Philippe Roussel
Interpreter for the first Logic Programming Language Prolog
University of Aix-Marseille, Frana, 1972
Processamento de linguagem natural
Outros
Fifts Generation Computing Systems (FGCS)
Tokyo, 1981
Turbo Prolog, Borland, 1985
17
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Paradigma PROLOG
PROLOG:
PROgramming in LOGic
PROLOG uma linguagem:
Declarativa
especifica (declara, descreve, afirma) fatos e relacionamentos
lgicos
Simblica
smbolos so utilizados para representar objetos
Alto nvel:
Contm um mecanismo embutido (deduo) para resolver
problemas (pensar??)
Programas PROLOG
Resolvem problemas declarando objetos e seus relacionamentos
18
relacionamento
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Paradigma PROLOG
Exemplo:
Joo proprietrio de um livro

Relacionamento
proprietrio
Objetos
Joo
Livro
Direcional
Joo proprietrio de um livro
Porm, o livro no proprietrio de Joo
Consultas
Joo proprietrio do livro? (Respostas: Sim, No)
propietario(joo, livro)
19
Company
LOGO
Objetos e Relacionamentos
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 20
rvore genealgica
martha
luis
rubens
lorena
levi
denise
tereza
Company
LOGO
Objetos e Relacionamentos
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 21
Company
LOGO
Paradigma Prolog
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 22
Regras
Fatos
C
o
n
s
u
l
t
a
s

Deduo
Base de
Conhecimento
PROLOG
Fatos
+
Regras
Verdadeiro
ou
Falso
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Programa Lgico
Um programa um conjunto de regras, fatos e dedues
regras e fatos para representar informao
deduo para responder consultas

Programas
Programas consistem em um conjunto de procedimentos
Procedimentos consistem em um conjunto de clusulas
Clusulas um fato ou uma regra
23
Programa
Procedimento
Procedimento
Procedimento
Procedimento
Clusula
Clusula
Clusula
Clusula
Fatos Regras
Company
LOGO
Programar - Executar
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Executar um programa
significa fazer consultas
24
Programar significa
declarar axiomas e regras
Company
LOGO
Programar - Executar
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG 25
Executar um programa
significa fazer consultas
Programar significa
declarar axiomas e regras
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Programa PROLOG
Predicado a construo utilizada para declarar
algo a respeito de objetos
26

elefante(colin).
elefante(mina).
elefante(X) :- cinza(X),
mamifero(X),
tem_tromba(X).
Procedimento para elefante
Clusulas
Regra
Fatos
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Programa PROLOG
Regras
avo(A,C) :- pai(A,B), pai(B,C).
Fatos
pai(Jorge, Joo).
pai(Joo, Guilherme).
Consultas
?- avo(Jorge, Guilherme)
yes
?- avo(Guilherme, Jorge)
not
Definir Regras
sobre objetos e
relacionamentos
Declarar Fatos
sobre objetos e
relacionamentos
Fazer Consultas
sobre objetos e
relacionamentos
27
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Fatos
Base do conhecimento
Knowledge Base (KB)
Coleo de fatos
Fato
Utilizados para estabelecer propriedades que so
incondicionalmente verdadeiras em um domnio de interesse
So conhecidas como Clusulas de Horn sem
cabea
estrela(sol).
ponto(12,8).
funcionario(pedro)
Representam asseres (afirmaes) incondicionais
Base de
Conhecimento
PROLOG
28
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Fatos Sintaxe


predic
Nome do predicado
arg1, arg2, ..., argN
argumentos
N
Aridade
Predicado de aridade 0
pred.


Termina com ponto!



Os argumentos podem
ser qualquer termo
PROLOG vlido
Inteiro
tomo
Texto constante
comeando com letra
minscula
Varivel
Comea com letra
maiscula ou underline (_)
Estrutura
Termo complexo
predic(arg1, arg2, ... argN).
29
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Fatos
30
gosta_de(pedro, suzana).
Relacionamento
(predicado)
Objetos
(argumentos)
separados por vrgulas
ponto no final
Gosta de
Relacionamento


predicado
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Fatos
valor(ouro).

gosta_de(carlos, karen).

jogam(jorge, luiza, basquete).
predicados
argumentos
31
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Fatos
book(prolog,luiz silva ,pearson,2006).
autor(luis, silva).
publicador(pearson).
publicador(prentice-hall).

book(T,A,publisher(C,rome),Date).
Natural(0).
inteiro(-4).
real(3.141516).
pi(3.141516).
pai(abraham, isaque).
filho(isaque, esau).
verdura(alface).
32
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Regras - Sintaxe
Cabea
Definio de predicado (similar a um fato)
O smbolo :-
Corpo
Um ou mais objetivos (goals)


cabea :- corpo
33
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Regras
Descrevem relacionamentos, utilizando outros
relacionamentos
Estabelecem dependncia: ..A..., se ...B..
Irmao_de(X,Y) :- masculino(X), pais(X,M,P), pais(Y,M,P).
cabea
corpo
delimitador
X irmo de Y se X masculino E X tem como me M e pai P
E Y tem como me M e pai P
ponto no final
objetivos
34
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Regras
Conhecidas como Clusulas de Horn com cabea
Utilizam variveis para generalizar seu significado
So asseres condicionais
A cabea verdadeira se o corpo for verdadeiro
Definem como novos fatos podem ser criados
As vrgulas (,) no corpo representam conjunes
Exemplo:
mae(M,X), mae(M,Y), pai(P,X), pai(P,Y).
significa
mae(M,X) AND mae(M,Y) AND pai(P,X) AND pai(P,Y).
35
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Regras
avo(A,C) :- pai(A,B), pai(B,C).
irmao(X,Y) :- mae(M,X), mae(M,Y), pai(P,X),
pai(P,Y).
filha(F,P) :- pai(P,F), mulher(F), homem(P).
filho(F,P) :- pai(P,F), homem(F), homem(P).
elefante(X) :- cinza(X), mamifero(X),
temTromba(X).
natural_number(N) :- integer(N), N >= 0.
//factorial(0,1).
factorial(A,B) :- A > 0, C is A-1,
factorial(C,D), B is A*D.
max(A,B,M) :- A < B, M = B.
max(A,B,M) :- A >= B, M = A.
36
Company
LOGO
pai
pai mae
mae
maridoDe
A B
irmaoDe
C
B
A
pai
mae
t
i
a
D
e
tia
pai
pai mae
mae
irmaoDe
Y
X
primaDe
FAMILIAS
Regras:
irmao(A,B) :-
prima(X,Y) :-
tia(A,B):-
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Consultas
Significa perguntar base de dados do sistema sobre
determinadas informaes
Ocorrem em forma interativa
Realizadas depois de carregar o programa (fatos e regras)
prompt ?-

38
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Base de Dados
o conjunto de fatos no sistema PROLOG
Contm os fatos a partir dos quais, as consultas
sero respondidas
O sistema PROLOG constri seu conhecimento a partir destes
fatos
O programador PROLOG responsvel pela sua exatido
humano(pele).
brasileiro(pele).
jogador(pele).
presidente(lula, brasil).
cantor(romario).
campeao(barcelona, espanha).
Campeao(internacional, brasil).
mae(Teresa).
dispositivo(papel)
rede(caneta)
pai(Pedro).
mamifero(tigre).
profeta(Jeremias).
igreja(Laodiceia, Grecia).
39
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Programa Exemplo: casa.pl
% Author: Ausberto S. Castro Vera
% UENF, Ciencia da Computao, 09/2014

%------------- FATOS -----------------------
lugar(sala).
lugar(cozinha).
lugar(escritorio).
lugar(corredor).
lugar('sala de jantar').
lugar(celeiro).
lugar(jardim).

porta(escritorio, corredor).
porta(cozinha, escritorio).
porta(corredor, 'sala de jantar').
porta(cozinha, celeiro).
porta('sala de jantar', cozinha).

localizacao(escrivaninha, escritorio).
localizacao(laranja, cozinha).
localizacao(lanterna, escrivaninha).
localizacao('maq de lavar', celeiro).
localizacao(sabao, 'maq de lavar').
localizacao(verdura, cozinha).
localizacao(biscoitos, cozinha).
localizacao(computador, escritorio).

comestivel(laranja).
comestivel(biscoitos).

gosto_amargo(verdura).

aqui(cozinha).

%%--------------- REGRAS --------------------
conectar(X,Y) :- porta(X,Y).
conectar(X,Y) :- porta(Y,X).
lista_coisas(Lugar) :-
localizacao(X, Lugar),
tab(2),
write(X),
nl,
fail.
lista_coisas(Qualquerlugar).

lista_portas(Lugar) :-
conectar(Lugar, X),
tab(2),
write(X),
nl,
fail.
lista_portas(_).

observar :- aqui(Lugar),
write('Voce esta na '), write(Lugar), nl,
write('Voce pode ver:'), nl,
lista_coisas(Lugar),
write('Voce pode ir para:'), nl,
lista_portas(Lugar).

corredor
cozinha
celeiro
escritrio
sala de
jantar
40
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
SWI Prolog 6.6.6 + Editor 4.22
41
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Sintaxe Prolog
Um fato um termo sem variveis
gato.
verde(papagaio).
habitat(tigre,mato).

Regras so definidas por uma cabea seguida do
smbolo :- seguida da conjuno de termos, os quais
so as condies para que a cabea seja verdadeira
pai(A,B) :- parente(A,B), homem(A).
natural(N) :- inteiro(N), N > 0.

Consulta a conjuno de termos
?- habitat(gato, floresta).
42
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Sintaxe Prolog
<fato> ::= <termo>.
<regra> ::= <termo> :- <termos>.
<consulta> ::= <termos>.
<termos> ::= <termo>. | <termo> , <termos>
<termo> ::= <numero>
| <atomo> | <variavel>
| <atomo> ( <termos> )
<predicado> ::= atomo
<atomo> ::= nomepred | nomepred(t1, t2, ..,tn)
<variavel> ::= identificador comeando com letra
minscula

43
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Compiladores-Interpretadores
SWI Prolog
http://www.swi-prolog.org/
Amzi!
http://www.amzi.com/
BProlog
http://www.sci.brooklyn.cuny.edu/~zhou/bprolog.html
GNU Prolog
http://pauillac.inria.fr/~diaz/gnu-prolog/
Poplog
http://www.poplog.org/
Strawberry Prolog
http://www.dobrev.com/
Visual Prolog
http://www.visual-prolog.com/
44
Company
LOGO
2010-2014 Prof. Ausberto S. Castro V. - UENF - Introduo ao PROLOG
Prof. Dr. Ausberto S. Castro Vera
Cincia da Computao
UENF-CCT-LCMAT
Campos, RJ

ascv@computer.org
ascv@uenf.br

Vous aimerez peut-être aussi