You are on page 1of 28

Introduo Programao

Lgica
Prof. Fabrcio Enembreck
PPGIA Programa de Ps Graduao
em Informtica Aplicada

Contedo do Curso
Introduo Lgica e Programao
Lgica
Introduo ao Prolog e ao SWI-Prolog
Matching e Backtraking
Mltiplas solues
Listas e predicados recursivos
Grafos em Prolog

Bibliografia
Casanova, Giorno e Furtado :
Programao em Lgica e a Linguagem
Prolog, 1987
Cloksin and Mellish, Programao em
Lgica e a Linguagem Prolog, 1987.
Bratko, Prolog Programming for Artificial
Intelligence, 1990.
Sterling and Shapiro, The Art of Prolog,
1986.

Introduo Lgica
O que Lgica
Linguagem que permite a representao de fatos, idias
ou conhecimento e, o mais importante, fornece um
conjunto de mtodos para a validao dessas
informaes.

Introduo Lgica (cont.)


Representando sentenas no clculo de
predicados (Lgica de Predicados)
Todos os membros da associao vivem na cidade. Quem
presidente da sociedade membro da Associao. Sra Farias
presidente da Associao. Logo Sra. Farias vive na cidade.
x(membro(x) mora(x))
x(presidente(x) membro(x))
presidente(sra_farias)

Premissa 1
Premissa 2
Premissa 3

mora(sra_farias)

Concluso

Com a Lgica podemos representar e validar sentenas

Verificao de argumentos ou
prova de teoremas
Dadas as frmulas 1, 2,..., n e uma frmula ,
diz-se que essas informaes formam um
teorema ou o argumento vlido se
conseqncia lgica de 1, 2,..., n, ou seja
1 2 ... n uma tautologia.
Mtodos de prova de teoremas

Semntico
Sinttico
Dedutivo
Tableau
Resoluo

Teorema da Deduo ou Admisso


de Premissas
Teorema 1. Dadas as frmulas 1, 2,..., n e uma frmula ,
consequncia lgica de 1, 2,..., n se e somente se a
frmula 1 2 ... n uma tautologia.
Prova: Seja I uma interpretao qualquer,
1) Se 1, 2,...e n forem verdade em I, ento tambm ser
verdade em I, pois consequncia lgica dos is.
2) Se um dos is for falso em I, 1 2 ... n tambm
ser falso em I. Independente do valor de , 1 2 ... n
verdade em I.
De 1 e 2 tem-se que 1 2 ... n verdade em
qualquer interpretao, ou seja, 1 2 ... n uma
tautologia.

Teorema da Reduo ao Absurdo


ou Prova por refutao
Teorema 2. Dadas as frmulas 1, 2,..., n e uma frmula
, consequncia lgica de 1, 2,..., n se e somente
se a frmula 1 2 ... n uma contradio.
Prova: Sabe-se pelo teorema anterior que:
Dadas as frmulas 1, 2,...e n e , conseqncia
lgica se e somente se 1 2 ... n for vlida.
Logo, sabe-se que conseqncia lgica se e somente
se a negao de 1 2 ... n for uma contradio.
Assim
(1 2 ... n )
((1 2 ... n) )
1 2 ... n
ou seja, 1 2 ... n uma contradio

Prova por Resoluo


Mtodo baseado em Reduo ao
Absurdo
Aplicado sobre um conjunto de Clusulas
Horn
Utiliza apenas uma regra de inferncia:
Regra da Resoluo

Prova por Resoluo


Mtodo baseado em Reduo ao
Absurdo
Aplicado sobre um conjunto de Clusulas
Horn
Utiliza apenas uma regra de inferncia:
Regra da Resoluo

Obteno de Clusulas Horn


Uma clusula Horn um caso particular
da Notao de Kowalski
Para a obteno da Notao de Kowalski
de uma frmula devemos obter
inicialmente a Notao Clausal seguindo
alguns passos

Passos para a obteno da


Notao Clausal
Ex.: Dada a Frmula:
x y (z (p(x,z) p(y,z)) u q(x,y,u))
Vamos obter a notao Clausal realizando
os seguintes passos:
1 Ligar existencialmente as variveis
livres
2 Eliminar quantificadores redundantes

Obteno da Notao Clausal


x y (z (p(x,z) p(y,z)) u q(x,y,u))
3 Renomear variveis quantificadas mais do que
uma vez
4 Remover equivalncias () e implicaes ()
x y ( z (p(x,z) p(y,z)) u q(x,y,u))
5 Mover a negao para o interior da frmula
x y (z (p(x,z) p(y,z)) u q(x,y,u))
6 Eliminar os quantificadores existenciais
x y (z (p(x,z) p(y,z)) q(x,y,g(x,y)))
7 Obter a Frmula Normal Prenex (FNP) e
remover os quantificadores universais
p(x,z) p(y,z) q(x,y,g(x,y))

Obteno da Notao Clausal


(cont.)

p(x,z) p(y,z) q(x,y,g(x,y))


8 Colocar a matriz da FNP na Forma
Conjuntiva
9 Eliminar os smbolos substituindo-se
expresses da forma (X1 X2) pelo
conjunto de wffs {X1, X2} :
(p(x,z) p(y,z)) q(x,y,g(x,y)))
10 Notao clausal:
C1: p(x,z) p(y,z) q(x,y,g(x,y))

Notao Clausal e Notao de


Kowalski
Notao Clausal:
C1: p(x,z) p(y,z) q(x,y,g(x,y))
11 Notao de Kowalski
q(x,y,g(x,y)) p(x,z), p(y,z)
Concluso
(Clusula Positiva)

implicado

Premissas
(Clusulas Negativas)

Notao de Kowalski
Uma clusula genrica na notao de Kowalsky
representada por:
A1, A2,..., Am B1, B2,..., Bn
Quando
m > 1: as concluses so indefinidas, ou seja, h vrias
concluses;
m <= 1: so as chamadas Clusulas de Horn, que tm
como casos particulares:
m = 1 e n > 0: A B1,...,Bn (chamada clusula definida,isto ,
h apenas uma concluso);
m = 1 e n = 0: A (chamada clusula definida incondicional
ou fato);
m = 0 e n > 0: B1,...,Bn (negao pura de B1,...,Bn) (no h
concluso);
m = 0 e n = 0: chamada clusula vazia, denotada .

Resoluo
Definio: Mtodo de prova de teoremas
que utiliza uma nica regra de inferncia
(Regra da Resoluo):
De
A B e B C
Deduz-se
A C
De
Deduz-se

A A
(falso ou clusula vazia)

Resoluo
Prova por Reduo ao Absurdo atravs da
negao da Concluso
Prova por Reduo ao Absurdo atravs da
negao do teorema
Dado um conjunto de clusulas 1, 2,...,
n e onde cada i e esto na FNC,
aplique a regra da resoluo at que a
clusula vazia seja obtida.

Exemplo de Resoluo - Soluo 1


P1: A B
P2: A C
P3: B D

AB

A C

B D

BC

Concluso:
CD
Concluso: C e D

CD
D

Exemplo de Resoluo - Soluo 2


P1: A B
P2: A C
P3: B D

AB

B D

A C

AD

Concluso:
CD
Concluso: C e D

A
C

Resoluo-SLD*
Trabalha com Clusulas Horn:
1. A B1,...,Bn
2. A
3. B1,...,Bn (negao pura de B1,...,Bn)
4. (clusula vazia, denotada )

onde 1 e 2 so clusulas definidas e 3 e 4


so clusulas objetivo
* Resoluo linear com funo de seleo para clusulas definidas

Resoluo-SLD*
Premissas

Concluso negada: depende(a,e)


6
Exemplo:
5
1
4
2
1. chama(a,b)
={x/a,y/e}
2. usa(b,e)
={z/b}
7
3. depende(x,y) chama(x,y)
4. depende(x,y) usa(x,y)
={x/b,y/e}
8
5. depende(x,y) chama(x,z), depende(z,y)
6. depende(a,e)
9
7. chama(a,z), depende(z,e)
(5)
8. depende(b,e)
(1)

9. usa(b,e)
(4)
x, y e z so variveis;
10.
(2) a, b e e so tomos
* Resoluo linear com funo de seleo para clusulas definidas

Resoluo-SLD (cont.)
A linearizao no suficiente
Para se formalizar um procedimento de
Resoluo-SLD necessrio utilizar uma funo
de escolha na seleo das clusulas definidas
Construmos ento uma rvore de refutao da
seguinte maneira:
Para cada n com rtulo A construmos um conjunto
de ns para os filhos na ordem em que eles
aparecem usando a regra da resoluo
Para cada n criado, repete-se o procedimento at
que a soluo (clusula vazia) seja encontrada

Resoluo-SLD (cont.)
depende(a,e)
3

4
chama(a,e) usa(a,e)

chama(a,z),
depende(z,e)
1 ={z/b}
depende(b,e)
={x/b,y/e}
4
3
5

Exemplo:
chama(b,e)

1. chama(a,b)
2. usa(b,e)
3. depende(x,y) chama(x,y)
4. depende(x,y) usa(x,y)
5. depende(x,y) chama(x,z), depende(z,y)
6. depende(a,e)

usa(b,e)
2

chama(b,z),
depende(z,e)

x, y e z so variveis;
a, b e e so tomos

Semnticas de um Programa
Lgico

Semntica Declarativa de um
Programa Lgico (PL)

Um programa lgico P um conjunto de


clusulas definidas na forma:
A B1,...,Bn

ou

Uma consulta Q uma conjuno de


literais na forma
B1,...,Bn

Uma soluo para Q um conjunto de


substituies das variveis de Q por
termos de P

Semntica Procedimental de um
Programa Lgico (PL)
Dado um programa lgico P e uma consulta
Q cuja clusula objetivo
B1,...,Bn
ento o procedimento de resoluo-LSD
com uma funo que seleciona as clusulas
mais esquerda pode ser utilizado para se
obter as solues sob a forma de um
conjunto de substituies de variveis

Exerccio
Dado o programa lgico seguir, construa a
rvore de resoluo-SLD para a seguinte
clusula objetivo:
tio(lucio, flavia)
casado(jose,carmem)
pai(jose,fabio)
pai(fabio,flavia)
pai(jose,lucio)
mae(X,Y) casado(Z,X), pai(Z,Y)
irmao(X,Y) pai(Z,X), pai(Z,Y)
tio(X,Y) pai(Z,Y), irmao(Z,X)
tio(X,Y) mae(Z,Y), irmao(Z,X)