160 likes | 234 Views
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:
E N D
Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng. celsokaestner (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: (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
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
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
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
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
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
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
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
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
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
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
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
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
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
A linguagem PROLOG ... To be continued ! Prof. Celso A A Kaestner