1 / 16

Lógica para Computação

Lógica para Computação. Prof. Celso Antônio Alves Kaestner, Dr. Eng. c elsokaestner ( at ) utfpr ( dot ) edu ( dot ) br. Resolução e PROLOG. Passos para obter a forma clausal de uma fbf: Obter a forma normal prenex da fbf:

Download Presentation

Lógica para Computação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng. celsokaestner (at) utfpr (dot) edu (dot) br

  2. Resolução e PROLOG Passos para obter a forma clausal de uma fbf: • Obter a forma normal prenex da fbf: (Forma normal prenex: Q1x1Q2x2...Qnxn (A) , onde Q1x1Q2x2...Qnxn é o prefixo e (A) é a matriz da fbf); • Eliminar os conectivos  e →; • Colocar as negações () ao lado dos átomos; • Distinguir as variáveis, se necessário; • Deslocar os quantificadores para o início da fbf. Prof. Celso A A Kaestner

  3. Resolução e PROLOG • Eliminar os quantificadores existenciais (skolemização): • x((x)) é substituído por então ([x:=f(y1,y2...ym)]) onde f é a função de Skolem e y1,y2...ym são as variáveis quantificadas universalmente () que antecedem x; • Se não houverem tais variáveis x((x)) é substituído por (a), onde a é a constante de Skolem. • Eliminar o prefixo da fbf (todos os quantificadores universais); • Passar a forma normal conjuntiva, reordenando os conectivos  e  de forma conveniente. Prof. Celso A A Kaestner

  4. Resolução e PROLOG Relação entre um conjunto de fbf e a forma clausal correspondente: Se F = {A1, A2,...,Ap} é um conjunto de fbf e se C = {C1, C2,...,Cm} é a forma clausal correspondente, então F é inconsistente se e só se C é inconsistente. Prof. Celso A A Kaestner

  5. Resolução e PROLOG O princípio da resolução: • Para fórmulas concretas (sem variáveis) Dadas as cláusulas A1  A2 ... Ap  C e B1  B2 ... Bm  C então pode-se deduzir a cláusula resolvente A1  A2 ...Ap B1  B2 ... Bm (este caso é similar ao da lógica proposicional). Prof. Celso A A Kaestner

  6. Resolução e PROLOG O princípio da resolução: • Para fórmulas em geral: Dadas as cláusulas A1  A2 ... Ap  C e B1  B2 ... Bm  D tais que C e D são unificáveis pela substituição mgu [s] (isto é, se C[s] = D[s]) então pode-se deduzir a cláusula resolvente (A1  A2 ...Ap)[s]  (B1  B2 ... Bm)[s]. Prof. Celso A A Kaestner

  7. Resolução e PROLOG Propriedades do princípio da resolução: • É uma regra de inferência correta, isto é, a cláusula resolvente é conseqüência lógica das cláusulas iniciais; • É completo por refutação, isto é, se C é um conjunto inicial de cláusulas, e se C1,C2,...Cn é uma seqüência de cláusulas distintas tais que Cn é a cláusula vazia e se para i de 1 até n-1 a cláusula Ci pertence a C ou é resolvente de cláusulas anteriores na seqüência, então o conjunto inicial C é inconsistente. Prof. Celso A A Kaestner

  8. Resolução e PROLOG Sistemas de refutação por resolução: Para provar a dedução A1,A2...,An |- B procede-se da seguinte forma: • Monta-se o conjunto {A1,A2...,An , B}; • Obtém-se sua forma clausal C; • Se C é inconsistente, a dedução é válida. Prof. Celso A A Kaestner

  9. A linguagem PROLOG Prolog é uma linguagem de programação que se enquadra no paradigma de Programação em Lógica Matemática. É uma linguagem de uso geral que é especialmente associada com a Inteligência Artificial e com a Linguística Computacional. Consiste numa linguagem puramente lógica, que pode ser chamada de Prolog puro, e numa linguagem concreta, a qual acrescenta o Prolog puro com componentes extra-lógicos. Prof. Celso A A Kaestner

  10. A linguagem PROLOG • Wikipedia: http://pt.wikipedia.org/wiki/Prolog • Programming in Prolog – William F. Clocksin & Christopher S. Mellish, Springer Verlag, ISBN: 978-3-540-15011-4 (Print) 978-3-642-96873-0 (Online) • Programação em Lógica e a Linguagem Prolog - Marco A. Casanova, Fernando A.C. Giorno, Antonio L. Furtado, http://www.inf.puc-rio.br/~casanova/Publications/Books/1987-PL.pdf • Resumo de Sheila McIlraith em http://www.cs.toronto.edu/~sheila/324/w07/slides/csc324w07-prolog1-21_4up.pdf Prof. Celso A A Kaestner

  11. A linguagem PROLOG • Obtendo o Prolog: http://www.swi-prolog.org/ • Tutoriais no mesmo site; • Prolog NÃO é procedural nem funcional; • Separa lógica e controle: • O programador declara quais fatos e relações são verdadeiros; • O sistema determina como usar estes fatos para resolver problemas – ou provar consultas; • O sistema também instancia variáveis para resolver os problemas. Prof. Celso A A Kaestner

  12. A linguagem PROLOG • O “programa” – ou base de dados- é constituído de fatos e regras: • Fatos: basicamente predicados definidos sobre constantes; exemplos: gato(tom). rato(jerry). • Regras: cláusulas de Horn (um único literal positivo), na forma h:-t1,t2...,tn indicando a inferência (t1^t2...^tn -> h), onde os ti e h são fórmulas atômicas; exemplos: não_gosta(X,Y):-gato(X),rato(Y). • “:-” corresponde a uma implicação no sentido inverso, e “,” corresponde a uma conjunção. Prof. Celso A A Kaestner

  13. A linguagem PROLOG • Após se carregar - ou consultar – uma base de dados o interpretador Prolog está apto a “responder consultas”, indicando se um fato é o não consequência lógica dos elementos indicados no programa; • O interpretador utiliza prova por unificação, resolução, refutação e backtracking; • A negação é tratado apenas por falha finita, o que é um limitante da linguagem. Prof. Celso A A Kaestner

  14. A linguagem PROLOG ? male(albert). Yes ? female(Person). Person=alice ; Person=victoria; No ? parent(Person,edward). Person=albert; Person=victoria; No male(albert). female(alice). male(edward). female(victoria). parent(albert,edward). parent(victoria,edward). parent(albert,alice). parent(victoria,alice). Prof. Celso A A Kaestner

  15. A linguagem PROLOG ? parent(Person,edward),female(Person). Person=victoria; No Acrescentando-se: sibling(X,Y):-parente(Z,X),parente(Z,Y). ? sibling(albert,victoria). No ? sibling(edward,S). S=edward; S=alice; S=edward, S=alice; ... No Prof. Celso A A Kaestner

  16. A linguagem PROLOG ... To be continued ! Prof. Celso A A Kaestner

More Related