Sunteți pe pagina 1din 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) mora(sra_farias) Premissa 1 Premissa 2 Premissa 3 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);

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 AC 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 C 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 D A C C

AD

Concluso: CD Concluso: C e D

A C

Resoluo-SLD*
Trabalha com Clusulas Horn:
1. 2. 3. 4. A B1,...,Bn A B1,...,Bn (negao pura de B1,...,Bn) (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*
Concluso negada: depende(a,e)

6 Exemplo: 5 1 4 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

Premissas

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

Resoluo-SLD (cont.)
depende(a,e) 3 chama(a,e) 4 usa(a,e) 5 chama(a,z), depende(z,e) 1 ={z/b} depende(b,e) ={x/b,y/e} 4 3 5 usa(b,e) 2

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)

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 A

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)

S-ar putea să vă placă și