Elsa Carvalho 262 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Negação Com os.

Slides:



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

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 9 A semântica da Lógica de Predicados
Lógica Matemática e Computacional 7 – Introdução à Programação Lógica
Tópicos de Lógica Proposicional
Formalizar semântica da LPO
Elsa Carvalho 241 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Interpretação.
Elsa Carvalho 49 Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
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.
1 Domínios Finitos A eficiência das programas em domínios finitos (incluindo booleanos) podem ainda ser melhoradas pelo uso de Algoritmos de Propagação.
SLX: Procedimentos para WFSX SLX (SL with eXplicit negation) é um procedimento top- down para a WFSXp –Aqui apresenta-se apenas a caracterização de AND-trees.
Recursividade e Iteração Factorial, Fibonacci e Maior Divisor Comum
Linguagens de Programação
DERIVADAS E DIFERENCIAIS
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 à Programação Lógica
Cálculo Relacional Datalog não-recursivo
Resolução.
Carolina Fonseca Neumar Ribeiro
Análise Sintática Ascendente
Sistema Progol TÉCNICAS E HEURÍSTICAS. Progol – Tópicos Definição do sistema; Declarações de Modo; Construção da cláusula mais específica; Algoritmo de.
2. A Linguagem Prolog.
AXIOMATIZAÇÃO Equipe: André Augusto Kaviatkovski, Daniel Elias Ferreira, Vinicius Zaramella.
Linguagem de 1ª ordem da teoria de conjuntos
INF 1771 – Inteligência Artificial
3 - Equações Lineares de Segunda Ordem
Inteligência Artificial
Conceitos Básicos.
Aron Sebastian André Sousa Vivian Maria Márcio André
Luís Rodrigues – Universidade dos Açores
Sintaxe e Semântica do PROLOG.
Lógica de Predicados Teorema de Herbrand.
UNIVERSIDADE ESTADUAL DE SANTA CRUZ
Componentes: Lucas, Ítalo, Wagner, Newton e Gabriel
Capítulo 5 Relações semânticas entre os conectivos da Lógica Proposicional
Problemas de Fluxo Máximo
Linguagens lógicas 2013 – Luiz Mauricio Nascimento Silva
Cássio Cristo Dawyson Guerra Matheu Santos
Capítulo 11 Programação Lógica
Teorema de Herbrand e Unificação
Completude e Corretude do Sistema de Tableaux Semânticos
Lógicas e Inferência para IA
Implementação de Resolução
Lógica de Predicados Sintaxe.
Teorema de Herbrand e Unificação
Sistemas Especialistas
Elsa Carvalho 186 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Aplicação e Composição.
Princípios da Programação em Prolog
Lógica para Computação
Semântica de uma fórmula da lógica da 1a ordem via modelo de Herbrand
Elsa Carvalho 18 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Estruturas de.
94 Elsa Carvalho Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
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.
Aritmética Em Prolog podemos fazer uso de operadores aritméticos não lógicos pré-definidos pelo sistema, como por exemplo >, >=, +, *, -, etc. A interrogação.
Decidibilidade, Corretude, Completude, Consistência, Monotonicidade
Linguagem de 1ª ordem da teoria de conjuntos
Elsa Carvalho BEGIN  := id; b:=true; S:=[,..., ] WHILE (S  AND b)DO := top(S); S:=pop(S); := ; IF s e v são da forma f(t 1,... t n ), g(r 1,..., r m.
Análise de Mundo Fechado Tratável com Atualizações Autor: Fábio Alves Marques.
Elsa Carvalho 1 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Conceitos Prolog.
Lógica Proposicional.
Elsa Carvalho 203 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução (com.
Elsa Carvalho 18 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Programação recursiva.
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.
Frases de Horn Forma Normal Conjuntiva- para frases sem quantificadores conjunção de frases cada elemento da conjunção é disjunção de literais literal:
Anjolina Grisi de Oliveira
Interpretação do Teorema de Herbrand
1 Lógica de Predicados BCC101 Matemática Discreta I.
Sistemas de Produção Jacques Robin CIn-UFPE. Roteiro  Definição de um sistemas de produção  Regras de produção  Inferência com regras de produção 
Transcrição da apresentação:

Elsa Carvalho 262 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Negação Com os mecanismos que estudámos até agora não é possível derivar informação negativa de um programa: dada uma fórmula atómica chã p e um programa P, P  {p} admite sempre um modelo (e.g. a base de Herbrand de P) e, portanto,  p não é consequência lógica de P. Qual o interesse de derivar conclusões negativas?

Elsa Carvalho 263 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Negação Considere-se o programa rei(joaoII)  rei(afonsoV)  rei(duarte)  pai(joaoII, afonsoV)  pai(afonsoV, duarte)  Suponhamos que queríamos estabelecer que o rei D. Duarte não é pai do rei D. João II. A fórmula  pai(joaoII, duarte) não é consequência lógica do programa. No entanto, pai(joaoII, duarte) também não é!

Elsa Carvalho 264 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Negação Hipótese (regra) do mundo fechado (closed world assumption) Dado um programa P e uma fórmula atómica chã p, se p não é consequência lógica de P, podemos inferir  p. Trata-se de uma regra particularmente intuitiva no contexto de bases de dados (colecção de factos), ou seja, assume-se que toda a informação que não está explicitamente presente na base de dados é falsa.

Elsa Carvalho 265 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Negação A adequação ou não desta regra tem de ser determinada para cada aplicação. Por exemplo, aplicando a regra podemos inferir tanto  rei(mario) como  rei(joaoI). A HMF assume que o programa possui conhecimento completo sobre o domínio. Trata-se de uma regra não monotónica, ou seja, por adição de novos axiomas (por exemplo rei(joaoI)), deixamos de poder derivar certas conclusões.

Elsa Carvalho 266 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Negação Questão Como aplicar esta regra no caso geral? O problema de determinar se p é consequência de P não é decidível, isto é, não existe algoritmo que tome um p arbitrário como entrada e responda em tempo finito. Se p não for consequência de P, podemos entrar num ciclo infinito. Regra da Falha Finita Dado um programa P e uma fórmula atómica chã p se a árvore SLD para P e  p é finita e só contém derivações falhadas (ramos que terminam com ) então podemos inferir  p.

Elsa Carvalho 267 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Negação Um objectivo normal é uma colecção de literais (fórmulas atómicas ou negação de fórmulas atómicas). Se p é uma fórmula atómica chã, a chamada a (  p) falha se a chamada a p é bem sucedida, e é bem sucedida se a chamada a p falha em tempo finito. Vamos mostrar a árvore de execução do objectivo normal  rei(X),  pai(afonsoV, X) sobre o programa anterior

Elsa Carvalho 268 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Exemplo  rei(X),  pai(afonsoV, X)   pai(afonsoV, joaoII)  pai(afonsoV, joaoII)   pai(afonsoV, afonsoV)  pai(afonsoV, joaoII) X/joaoII X/afonsoV   pai(afonsoV, duarte)  pai(afonsoV, duarte)

Elsa Carvalho 269 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Negação Uma cláusula normal é um par p  q 1,..., q n onde q 1,..., q n são literais (fórmulas atómicas ou negações de fórmulas atómicas). Um programa normal é um conjunto de cláusulas normais. diferentes(X, Y)  membro(Z, X),  membro(Z, Y) diferentes(X, Y)  membro(Z, Y),  membro(Z, X) Uma regra de computação diz-se segura quando nunca selecciona um literal negativo que não seja chão.

Elsa Carvalho 270 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução SLDNF Define-se do seguinte modo a árvore (SLD)NF para um programa P e um objectivo G normais via uma regra de computação segura S: a raiz é G seja  q 1,..., q k,..., q n um nó e suponha-se que é q k é seleccionado por S. se q k é um literal positivo, então o nó tem um descendente para cada um dos objectivos deriváveis (possivelmente nenhum) se q k é um literal negativo chão  p k e existe uma árvore SLDNF finita falhada (sem ramos bem sucedidos) para P e  p k, então o único descendente é  q 1,..., q k-1, q k+1,..., q n se q k é um literal negativo chão  p k e existe uma refutação SLDNF para P e  p k, então o nó não tem descendentes o nó vazio não tem descendentes

Elsa Carvalho 271 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução SLDNF A resolução SLDNF é a extensão da resolução SLD com a regra da falha finita (SLD + Negation by Failure) Definem-se ainda por generalização os conceitos de derivação- SLDNF, refutação-SDLNF e resposta derivada por uma refutação-SLDNF. Ramos que terminam por se ter atingido um nó que contém apenas literais negativos dos quais nenhum é chão não correspondem a derivações (a regra de computação não é aplicável), correspondem a computações atoladas.

Elsa Carvalho 272 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Exemplo Qual a importância de restringir a selecção de literais negativos aos que são chãos? Suponhamos que enriquecíamos o programa da dinastia com: pai_de_todos(X)   pai_normal(X) pai_normal(X)   pai(Y,X) (está-se a ler o predicado pai como X é pai de Y) Qual será o comportamento do programa face ao objectivo  pai_de_todos(afonsoV) se a restrição de segurança for levantada?

Elsa Carvalho 273 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Exemplo (cont.)  pai_de_todos(afonsoV)   pai_normal(afonsoV)  pai_normal(afonsoV)   pai(Y, afonsoV)  pai(Y, afonsoV)

Elsa Carvalho 274 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução SLDNF A resposta obtida é manifestamente incorrecta: existe alguém de quem afonsoV não é pai, i.e., existe um Y tal que pai(Y, afonsoV) falha, nomeadamente Y = duarte, o que faz de afonsoV um pai_ normal e não pai_de_todos ! De facto a leitura intuitiva da chamada  pai(Y,afonsoV) é, à semelhança da leitura para literais positivos, “encontrar um Y tal que  pai(Y,afonsoV)”. Assim, a cláusula pai_normal(X)   pai(Y,X) corresponde à fórmula pai_normal(X)  (  Y)  pai(Y,X)

Elsa Carvalho 275 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução SLDNF Ora, a semântica procedimental é totalmente diferente. Esta chamada falha porque a chamada pai(Y, afonsoV) é bem sucedida. Quer dizer, a cláusula pai_normal(X)   pai(Y,X) está a ser interpretada como correspondendo a pai_normal(X)   (  Y)pai(Y,X) Logo, as chamadas negativas não chãs não são coerentes com a semântica declarativa, e podem gerar respostas incorrectas.

Elsa Carvalho 276 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução SLDNF Como implementar regras de computação seguras? A maneira mais simples de implementar a condição de segurança num sistema Prolog é adiar as chamadas negativas até que se encontrem instanciadas em termos chãos, e interromper a execução quando só for possível seleccionar literais negativos não chãos. Mas isto é caro pois implica aceder à estrutura das chamadas. A maioria dos sistemas não se dá a esse trabalho o que implica programas potencialmente incorrectos e nos quais tem que ser o programador a garantir que as chamadas negativas só são activadas quando chãs.

Elsa Carvalho 277 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução SLDNF É possível estabelecer condições sobre P e G de modo a garantir que nenhuma computação ficará atolada. Uma cláusula de programa C diz-se admissível se toda a variável que ocorre em C ocorre ou na cabeça ou num literal positivo do corpo de C. Por exemplo, a seguinte cláusula é admissível: diferentes(X, Y)  membro(Z, X),  membro(Z, Y) Uma cláusula de programa C diz-se permitida se toda a variável que ocorre em C ocorre em pelo menos um literal positivo do corpo de C. Por exemplo a cláusula anterior não é permitida.

Elsa Carvalho 278 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução SLDNF Um objectivo G diz-se permitido se toda a variável que ocorre em G ocorre em pelo menos um literal positivo de G. Dizemos que um programa P é permitido para um objectivo G sse toda a cláusula de P é admissível todas as cláusulas que fazem parte dos procedimentos que definem símbolos de predicado que ocorrem em literais positivos de G são permitidas todas as cláusulas que fazem parte dos procedimentos que definem símbolos de predicado que ocorrem em literais positivos no corpo de cláusulas de P são permitidas

Elsa Carvalho 279 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução SLDNF Se G é um objectivo permitido e P é um programa permitido para G, nenhuma computação para P e G fica atolada. O enriquecimento do programa dinastia com: pai_de_todos(X)   pai_normal(X) pai_normal(X)   pai(Y,X) não é permitido para o objectivo  pai_de_todos(afonsoV).

Elsa Carvalho 280 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução SLDNF Substituindo estas cláusulas por: pai_de_todos(X)  rei(X),  pai_normal(X) pai_normal(X)  rei(Y),  pai(Y,X) o programa fica permitido para o mesmo objectivo pois apesar de pai_normal(X)  rei(Y),  pai(Y,X) não ser permitida, o símbolo de predicado pai_normal não ocorre em literais positivos quer do objectivo quer do corpo das cláusulas. Logo, as cláusulas que o definem não precisam de ser permitidas, basta que sejam admissíveis.

Elsa Carvalho 281 Universidade da Madeira Departamento de Matemática Programação em Lógica e Funcional (2000/01) (Actualizado em 2004/05) Resolução SLDNF Note-se que a adição das chamadas a rei requer que se prove que as cláusulas que definem rei são permitidas! Neste caso, o comportamento procedimental é correcto face à leitura declarativa das cláusulas: pai_normal(X)  (  Y)(rei(Y)   pai(Y,X))