Introdução à Programação Lógica

Slides:



Advertisements
Apresentações semelhantes
Lógica de Predicados e Representação de Conhecimento
Advertisements

Introdução à Linguagem Prolog
AULA 5 PGC Sistemas de Banco de Dados Profa. Sandra de Amo
Capítulo 7 Tableaux semânticos e resolução na Lógica Proposicional
Capítulo 3 Propriedades semânticas da Lógica Proposicional
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
Cláusulas Conjuntos de cláusulas
Tópicos de Lógica Proposicional
Formalizar semântica da LPO
Elsa Carvalho 163 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Teoria dos Modelos.
Lógica de Predicados Sintaxe. O que não é possível expressar em Lógica Prop. Todo tricolor é um campeão. Roberto é tricolor. Logo Roberto é um campeão.
Introdução à Linguagem Prolog
Introdução à Linguagem Prolog
Introdução à Linguagem Prolog
Cálculo Relacional Datalog não-recursivo
Resolução.
SISTEMAS LINEARES I Prof. Marlon.
2. A Linguagem Prolog.
Introdução à Modelagem Conceitual 3. Prolog
Lógica para Computação
Programação em Lógica Augusto Marks Batista Guilherme dos Santos Fujiyoshi Marlon Bill Santos.
Resolução Proposicional
DEDUÇÃO NO CÁLCULO PROPOSICIONAL
INF 1771 – Inteligência Artificial
Conceitos Básicos.
Aron Sebastian André Sousa Vivian Maria Márcio André
Lógica Matemática e Computacional
LISTAS Uma lista é uma estrutura de dados muito comum na programação não numérica (com particular destaque na computação simbólica onde representa quase.
Prolog Programação Lógica Ícaro A. Souza.
Conceitos de Linguagem de Programação
Dedução Natural.
UNIVERSIDADE ESTADUAL DE SANTA CRUZ
Capítulo 4 Métodos para determinação de propriedades semânticas de fórmulas da Lógica Proposicional
Algoritmos – Formas Normais
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva
Cássio Cristo Dawyson Guerra Matheu Santos
Capítulo 11 Programação Lógica
Lógica Proposicional Tableaux semânticos.
Formas Normais e Resolução
Métodos para determinação de validade de fórmulas
SEMÂNTICA.
Lógica Proposicional Resolução.
Lógica de Predicados Resolução.
Lógica Proposicional Dedução Natural.
Lógicas e Inferência para IA
Lógica de Predicados Tableaux semânticos.
Implementação de Resolução
Lógica de Predicados Sintaxe.
Lógica matemática.
Métodos para determinação de validade de fórmulas
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Lógica para Computação
Semântica de uma fórmula da lógica da 1a ordem via modelo de Herbrand
Lógica Matemática Introdução.
Inteligência Artificial: Lógica Proposicional e Prolog
Lógica Proposicional.
Curso: PCS Fundamentos Lógicos da Inteligência Artificial Aluno: Alberto Yoshinobu Onoe (607768) Lógicas Paraconsistentes como um Formalismo para.
Programação Lógica com Prolog
Decidibilidade, Corretude, Completude, Consistência
Sistema Formal Um Sistema Formal para a lógica proposicional é uma 2-tupla < L, R >, onde: L: linguagem proposicional R: conjunto de regras de inferências.
Inteligência Artificial: A Linguagem Prolog (Parte 1)
Lógica Proposicional.
Sistema Formal Um Sistema Formal para a lógica proposicional é uma 2-tupla < L, R >, onde: L: linguagem proposicional R: conjunto de regras de inferências.
Lógica Proposicional Dedução Natural.
Anjolina Grisi de Oliveira
Lógica matemática.
UNIP UNIVERSIDADE PAULISTA Professor: Yure de Queiroz Lima
Inteligência Artificial
Introdução a Lógica Matemática
Lógica de Predicados Tableaux semânticos.
Transcrição da apresentação:

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

Conteúdo do Curso Introdução à Lógica e à Programação Lógica Introdução ao Prolog e ao SWI-Prolog Matching e Backtraking Múltiplas soluções Listas e predicados recursivos Grafos em Prolog

Bibliografia Casanova, Giorno e Furtado : Programação em Lógica e a Linguagem Prolog, 1987 Cloksin and Mellish, Programação em Lógica e a Linguagem Prolog, 1987. Bratko, Prolog Programming for Artificial Intelligence, 1990. Sterling and Shapiro, The Art of Prolog, 1986.

Introdução à Lógica O que é Lógica “Linguagem que permite a representação de fatos, idéias ou conhecimento e, o mais importante, fornece um conjunto de métodos para a validação dessas informações.”

Introdução à Lógica (cont.) Representando sentenças no cálculo de predicados (Lógica de Predicados) “Todos os membros da associação vivem na cidade. Quem é presidente da sociedade é membro da Associação. Sra Farias é presidente da Associação. Logo Sra. Farias vive na cidade.” x(membro(x)  mora(x)) Premissa 1 x(presidente(x)  membro(x)) Premissa 2 presidente(sra_farias) Premissa 3 mora(sra_farias) Conclusão Com a Lógica podemos representar e validar sentenças

Verificação de argumentos ou prova de teoremas Dadas as fórmulas 1, 2,..., n e uma fórmula , diz-se que essas informações formam um teorema ou o argumento é válido se  é conseqüência lógica de 1, 2,..., n, ou seja 1  2  ...  n   é uma tautologia. Métodos de prova de teoremas Semântico Sintático Dedutivo Tableau Resolução

Teorema da Dedução ou Admissão de Premissas Teorema 1. Dadas as fórmulas 1, 2,..., n e uma fórmula ,  é consequência lógica de 1, 2,..., n se e somente se a fórmula 1  2  ...  n   é uma tautologia. Prova: Seja I uma interpretação qualquer, Se 1, 2,...e n forem verdade em I, então  também será verdade em I, pois é consequência lógica dos i´s. 2) Se um dos i´s for falso em I, 1  2  ...  n também 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 interpretação, ou seja, 1  2  ...  n   é uma tautologia.

Teorema da Redução ao Absurdo ou Prova por refutação Teorema 2. Dadas as fórmulas 1, 2,..., n e uma fórmula ,  é consequência lógica de 1, 2,..., n se e somente se a fórmula 1  2  ...  n   é uma contradição. Prova: Sabe-se pelo teorema anterior que: Dadas as fórmulas 1, 2,...e n e ,  é conseqüência lógica se e somente se 1  2  ...  n   for válida. Logo, sabe-se que  é conseqüência lógica se e somente se a negação de 1  2  ...  n   for uma contradição. Assim (1  2  ...  n  ) ≡ ((1  2  ...  n)  ) ≡ 1  2  ...  n   ou seja, 1  2  ...  n   é uma contradição

Prova por Resolução Método baseado em Redução ao Absurdo Aplicado sobre um conjunto de Cláusulas Horn Utiliza apenas uma regra de inferência: Regra da Resolução

Prova por Resolução Método baseado em Redução ao Absurdo Aplicado sobre um conjunto de Cláusulas Horn Utiliza apenas uma regra de inferência: Regra da Resolução

Obtenção de Cláusulas Horn Uma cláusula Horn é um caso particular da Notação de Kowalski Para a obtenção da Notação de Kowalski de uma fórmula devemos obter inicialmente a Notação Clausal seguindo alguns passos

Passos para a obtenção da Notação Clausal Ex.: Dada a Fórmula: x y (z (p(x,z)  p(y,z))  u q(x,y,u)) Vamos obter a notação Clausal realizando os seguintes passos: 1 – Ligar existencialmente as variáveis livres 2 – Eliminar quantificadores redundantes

Obtenção da Notação Clausal x y (z (p(x,z)  p(y,z))  u q(x,y,u)) 3 – Renomear variáveis quantificadas mais do que uma vez 4 – Remover equivalências () e implicações () x y ( z (p(x,z)  p(y,z))  u q(x,y,u)) 5 – Mover a negação para o interior da fórmula 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 Fórmula Normal Prenex (FNP) e remover os quantificadores universais p(x,z)  p(y,z)  q(x,y,g(x,y))

Obtenção da Notação 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 símbolos “” substituindo-se expressões da forma (X1  X2) pelo conjunto de wffs {X1, X2} : (p(x,z)  p(y,z))  q(x,y,g(x,y))) 10 – Notação clausal: C1: p(x,z)  p(y,z)  q(x,y,g(x,y))

Notação Clausal e Notação de Kowalski C1: p(x,z)  p(y,z)  q(x,y,g(x,y)) 11 – Notação de Kowalski q(x,y,g(x,y)) ← p(x,z), p(y,z) Conclusão (Cláusula Positiva) Premissas (Cláusulas Negativas) É implicado

Notação de Kowalski Uma cláusula genérica na notação de Kowalsky é representada por: A1, A2,..., Am  B1, B2,..., Bn Quando m > 1: as conclusões são indefinidas, ou seja, há várias conclusões; m <= 1: são as chamadas Cláusulas de Horn, que têm como casos particulares: m = 1 e n > 0: “A  B1,...,Bn” (chamada cláusula definida,isto é, há apenas uma conclusão); m = 1 e n = 0: “A ” (chamada cláusula definida incondicional ou fato); m = 0 e n > 0: “ B1,...,Bn” (negação pura de B1,...,Bn) (não há conclusão); m = 0 e n = 0: “” chamada cláusula vazia, denotada □.

Resolução Definição: Método de prova de teoremas que utiliza uma única regra de inferência (Regra da Resolução): De A  B e B  C Deduz-se A  C De A  A Deduz-se □ (falso ou cláusula vazia)

Resolução Prova por Redução ao Absurdo através da negação da Conclusão Prova por Redução ao Absurdo através da negação do teorema Dado um conjunto de cláusulas 1, 2,..., n e  onde cada i e  estão na FNC, aplique a regra da resolução até que a cláusula vazia seja obtida.

Exemplo de Resolução - Solução 1 P1: A  B P2: A  C P3: B  D Conclusão: C  D Conclusão: C e D A  B A  C B  D C D B  C C  D D □

Exemplo de Resolução - Solução 2 P1: A  B P2: A  C P3: B  D Conclusão: C  D Conclusão: C e D A  B B  D D A  C C A  D A C □

Resolução-SLD* Trabalha com Cláusulas Horn: “A  B1,...,Bn” “A ” “ B1,...,Bn” (negação pura de B1,...,Bn) “” (cláusula vazia, denotada □) onde 1 e 2 são cláusulas definidas e 3 e 4 são cláusulas objetivo * Resolução linear com função de seleção para cláusulas definidas

Resolução-SLD* Exemplo: 1. chama(a,b)  2. usa(b,e)  Conclusão negada:  depende(a,e) 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) 1 8 Θ={z/b} 6 5 7 Θ={x/a,y/e} 4 9 Θ={x/b,y/e} 2 □ Premissas 7.  chama(a,z), depende(z,e) (5) 8.  depende(b,e) (1) 9.  usa(b,e) (4) x, y e z são variáveis; “a”, “b” e “e” são átomos 10. □ (2) * Resolução linear com função de seleção para cláusulas definidas

Resolução-SLD (cont.) A linearização não é suficiente Para se formalizar um procedimento de Resolução-SLD é necessário utilizar uma função de escolha na seleção das cláusulas definidas Construímos então uma árvore de refutação da seguinte maneira: Para cada nó com rótulo A construímos um conjunto de nós para os filhos na ordem em que eles aparecem usando a regra da resolução Para cada nó criado, repete-se o procedimento até que a solução (cláusula vazia) seja encontrada

Resolução-SLD (cont.) □  depende(a,e)  chama(a,e)  usa(a,e) chama(a,z), depende(z,e) 3 4 5  depende(b,e) 1 Θ={z/b}  chama(b,e)  usa(b,e) chama(b,z), depende(z,e) 3 4 5 Θ={x/b,y/e} 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) □ 2 x, y e z são variáveis; “a”, “b” e “e” são átomos

Semânticas de um Programa Lógico

Semântica Declarativa de um Programa Lógico (PL) Um programa lógico P é um conjunto de cláusulas definidas na forma: “A  B1,...,Bn” ou “A ” Uma consulta Q é uma conjunção de literais na forma B1,...,Bn Uma solução para Q é um conjunto de substituições das variáveis de Q por termos de P

Semântica Procedimental de um Programa Lógico (PL) Dado um programa lógico P e uma consulta Q cuja cláusula objetivo é  B1,...,Bn então o procedimento de resolução-LSD com uma função que seleciona as cláusulas mais à esquerda pode ser utilizado para se obter as soluções sob a forma de um conjunto de substituições de variáveis

Exercício Dado o programa lógico à seguir, construa a árvore de resolução-SLD para a seguinte cláusula 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)