Introducao … Programacao Logica

28
Introdução à Programação Lógica Prof. Fabrício Enembreck PPGIA – Programa de Pós Graduação em Informática Aplicada

description

Programacao Logica

Transcript of Introducao … Programacao Logica

  • Introduo Programao LgicaProf. Fabrcio EnembreckPPGIA Programa de Ps Graduao em Informtica Aplicada

  • Contedo do CursoIntroduo Lgica e Programao LgicaIntroduo ao Prolog e ao SWI-PrologMatching e BacktrakingMltiplas soluesListas e predicados recursivosGrafos em Prolog

  • BibliografiaCasanova, Giorno e Furtado : Programao em Lgica e a Linguagem Prolog, 1987Cloksin 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 LgicaO 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))Premissa 1x(presidente(x) membro(x))Premissa 2presidente(sra_farias)Premissa 3

    mora(sra_farias)ConclusoCom a Lgica podemos representar e validar sentenas

  • Verificao de argumentos ou prova de teoremasDadas 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 teoremasSemnticoSintticoDedutivoTableauResoluo

  • Teorema da Deduo ou Admisso de PremissasTeorema 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, 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 refutaoTeorema 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 ResoluoMtodo baseado em Reduo ao AbsurdoAplicado sobre um conjunto de Clusulas HornUtiliza apenas uma regra de inferncia: Regra da Resoluo

  • Prova por ResoluoMtodo baseado em Reduo ao AbsurdoAplicado sobre um conjunto de Clusulas HornUtiliza apenas uma regra de inferncia: Regra da Resoluo

  • Obteno de Clusulas HornUma clusula Horn um caso particular da Notao de KowalskiPara a obteno da Notao de Kowalski de uma frmula devemos obter inicialmente a Notao Clausal seguindo alguns passos

  • Passos para a obteno da Notao ClausalEx.: 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 livres2 Eliminar quantificadores redundantes

  • Obteno da Notao Clausalx y (z (p(x,z) p(y,z)) u q(x,y,u))3 Renomear variveis quantificadas mais do que uma vez4 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 frmulax y (z (p(x,z) p(y,z)) u q(x,y,u))6 Eliminar os quantificadores existenciaisx 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 universaisp(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 KowalskiNotao Clausal:C1: p(x,z) p(y,z) q(x,y,g(x,y))

    11 Notao de Kowalskiq(x,y,g(x,y)) p(x,z), p(y,z)

    Concluso(Clusula Positiva)Premissas(Clusulas Negativas) implicado

  • Notao de KowalskiUma clusula genrica na notao de Kowalsky representada por:A1, A2,..., Am B1, B2,..., Bn Quandom > 1: as concluses so indefinidas, ou seja, h vrias concluses; m 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 .

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

    De A ADeduz-se (falso ou clusula vazia)

  • ResoluoProva por Reduo ao Absurdo atravs da negao da ConclusoProva por Reduo ao Absurdo atravs da negao do teoremaDado 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 1P1: A BP2: A CP3: B D

    Concluso: C DConcluso: C e DA BA CB CB DC DCDD

  • Exemplo de Resoluo - Soluo 2P1: A BP2: A CP3: B D

    Concluso: C DConcluso: C e DA BA DB DCCDAA C

  • Resoluo-SLD* Trabalha com Clusulas Horn:A B1,...,BnA 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*Exemplo: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) * Resoluo linear com funo de seleo para clusulas definidas8. depende(b,e) (1)7. chama(a,z), depende(z,e) (5)9. usa(b,e) (4)10. (2)x, y e z so variveis; a, b e e so tomosPremissasConcluso negada: depende(a,e)

  • Resoluo-SLD (cont.)A linearizao no suficientePara se formalizar um procedimento de Resoluo-SLD necessrio utilizar uma funo de escolha na seleo das clusulas definidasConstrumos 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 resoluoPara cada n criado, repete-se o procedimento at que a soluo (clusula vazia) seja encontrada

  • Resoluo-SLD (cont.)Exemplo: 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) x, y e z so variveis; a, b e e so tomos depende(a,e)

  • 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 formaB1,...,BnUma 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,...,Bnento 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

  • ExerccioDado 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)