Lógica Computacional (CC2003)

Documentos relacionados
Lógica Computacional

Nelma Moreira. Aula 17

Lógica Computacional (CC2003) Lógica e Programação (CC216)

Exercícios de Lógica Computacional

Ex. 1) Considere que a árvore seguinte corresponde a uma parte do espaço de estados de um jogo de dois agentes: f=7 f=7 f=1 f=2

Lógica Computacional (CC2003)

[B&A] Computação na Lógica de Predicados

Capítulo 3 Lógica de Primeira Ordem

Lógica e Programação - Folha de trabalho n. 3

Lógica Computacional

Lógica Computacional

Elisabete Raposo Freire Departamento de Matemática Universidade dos Açores 21 Abril 2012

Lógica Computacional

SCC Capítulo 2 Lógica de Predicados

Faculdade de Informática PUCRS Lógica para Computação Lista de Exercícios Sintaxe e Semântica da Lógica de Predicados Prof.

Simplificação de Enunciados com um Quantificador Petrucio Viana

Lógica para Computação

Exercício proposto em Algoritmos do Cotidiano

Modelagem Computacional. Parte 8 2

Programa. Raciocínio Lógico Matemático. Livros. Provas

Lógica Computacional DCC/FCUP 2017/18

Noções de Lógica Matemática. Domingos Moreira Cardoso Maria Paula Carvalho

Lógica para Programação

DIM Resolução e método tableaux DIM / 37

A sintaxe do cálculo de predicados (II), cap. 7 de Introdução à Lógica (Mortari 2001) Luiz Arthur Pagani

Programação em Lógica. UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010

Métodos de Verificação

Sistemas de Representação e Raciocínio Parte 3

SCC Capítulo 3 Prova Automática de Teoremas

Cálculo de Predicados. Matemática Discreta. Profa. Sheila Morais de Almeida DAINF-UTFPR-PG. março

Conferência Árvores de resolução SLD

Lógica para Programação

Inteligência Artificial IA IV. RACIOCÍNIO BASEADO EM REGRAS

Fundamentos de Lógica Matemática

Predicados e Quantificadores

Lógica para Computação

Cálculo de Predicados

Capítulo 3 Lógica de Primeira Ordem

Fórmulas Bem Formadas (wff) Prioridade dos Conectivos. Prioridade dos Conectivos. Semântica do CR. Semântica do CR

Optimização. Carlos Balsa. Departamento de Matemática Escola Superior de Tecnologia e Gestão de Bragança

Cálculo Numérico / Métodos Numéricos. Solução de equações polinomiais Briot-Ruffini-Horner

Polinómios. Integração de Fracções Racionais

Resolução. Resolução. Resolução. Resolução. Programação em Lógica. Resolução na Lógica de Predicados: Unificação. Lógica de Primeira Ordem Parte IV

Lógica para computação - Linguagem da Lógica de Predicados

Cálculo de Predicados 1

Polinómios. Integração de Funções Racionais

Exame (1º Teste) de Análise Numérica (LMAC, MEIC, MMA) Instituto Superior Técnico, 11 de Janeiro de 2016, 15h00-16h15 (1º Teste)

EXERCICIOS RESOLVIDOS - INT-POLIN - MMQ - INT-NUMERICA - EDO

Fundamentos de Lógica Matemática

Sistema dedutivo. Sistema dedutivo

Resolução de problemas com apenas restrições lineares de igualdade

Capítulo 3 Lógica de Primeira Ordem

Matemática Discreta. Lógica de Predicados. Profa. Sheila Morais de Almeida. agosto DAINF-UTFPR-PG

Exercícios de Teoria da Computação Lógica de 1a. ordem

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 12

Departamento de Matemática Universidade do Minho, Braga 2009 /2010. Cálculo de Predicados de Primeira-Ordem da Lógica Clássica p.

UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO. Exercícios para as aulas práticas de Lógica para Programação

Determinação de raízes de polinômios: Método de Briot-Ruffini-Horner

23 e 24. Forma Quadrática e Equação do Segundo Grau em R 3. Sumário

Lógica Proposicional. LEIC - Tagus Park 2 o Semestre, Ano Lectivo 2007/08. c Inês Lynce c Luísa Coheur

Determinação de raízes de polinômios: Método de Briot-Ruffini-Horner

5 Exemplos de Síntese de Programas

Algoritmos Numéricos I. Lucia Catabriga 1

Capítulo 5 - Optimização Não-Linear

Teoria dos Conjuntos MATEMÁTICA DISCRETA CONCEITOS PRELIMINARES. Fundamentos de Lógica Técnicas Elementares de Prova A NOÇÃO DE CONJUNTO

Modelagem Computacional. Parte 7 2

Unidade 3. Resolução. Objetivos:

EDO I. por Abílio Lemos. 16 e 18 de outubro de Universidade Federal de Viçosa. Departamento de Matemática UFV. Aulas de MAT

Sabendo que f(x) é um polinômio de grau 2, utilize a formula do trapézio e calcule exatamente

derivadas parciais até a ordem k existem e são contínuas em todo A. derivadas parciais de todas as ordens existem e são contínuas em todo A.

Árvores (ordenadas) Departamento de Ciência de Computadores da FCUP MC Aula 11 1

Nelma Moreira. Departamento de Ciência de Computadores da FCUP. Aula 20

4 ÁLGEBRA ELEMENTAR. 4.1 Monômios e polinômios: valor numérico e operações.

SISTEMAS BASEADOS EM CONHECIMENTO I. INTRODUÇÃO

SME Cálculo Numérico. Lista de Exercícios: Gabarito

MATEMÁTICA DISCRETA CONCEITOS PRELIMINARES

Lógica para Computação Primeiro Semestre, Aula 10: Resolução. Prof. Ricardo Dutra da Silva

A linguagem Prolog. Sintaxe, terminologia e semântica informal: Os objectos de dados em Prolog são chamados termos.

OBTENÇÃO DE RESPOSTAS BASEADAS EM CASOS A PARTIR DE ÁRVORES DE PROVA

Transformações Geométricas

Transformações Geométricas Grafos de Cena

Lógica e prova de resolução Marco Henrique Terra

UNIVERSIDADE TÉCNICA DE LISBOA INSTITUTO SUPERIOR TÉCNICO. Exercícios para as aulas práticas de Lógica para Programação

SCC Capítulo 4 Raciocínio Baseado em Regras

Fórmulas da lógica proposicional

Polinômios (B) 4 (C) 2 (D) 1 3 (E). 2

UNIVERSIDADE FEDERAL DO ABC. 1 Existência e unicidade de zeros; Métodos da bissecção e falsa posição

Lógica de Primeira Ordem. Capítulo 9

Inteligência Artificial IA II. LÓGICA DE PREDICADOS PARA REPRESENTAÇÃO DO CONHECIMENTO

UNIVERSIDADE FEDERAL DO ABC

Conceitos Básicos. LEIC - Tagus Park 2 o Semestre, Ano Lectivo 2007/08. c Inês Lynce c Luísa Coheur

Introdução. Programação em Lógica. Resolução na Lógica Proposional. Resolução na Lógica Proposional. Resolução na Lógica Proposional.

Matemática Computacional - 2 o ano LEMat e MEQ

Lógica predicados. Lógica predicados (continuação)

Matemática A - 10 o Ano

Definição: Uma função de uma variável x é uma função polinomial complexa se pudermos escrevê-la na forma n

Sistemas Dedutivos Lógica de 1ª. Ordem (LPO)

Métodos de Pesquisa Operacional

Engenharia do Conhecimento Raciocínio Não Monótono - 1. Raciocínio Não Monótono

Transcrição:

Lógica Computacional (CC2003) Nelma Moreira Lógica Computacional 24 Conteúdo 1 Introdução à Programação em Lógica 1 1.1 Resolução SLD............................ 1 1 Introdução à Programação em Lógica 1.1 Resolução SLD Seja P um programa (conjunto de cláusulas de Horn positivas) e G uma cláusula negativa (objectivo), β 1,..., β n (= β 1 β n ). Temos que P = β 1 Sendo a resolução integra, basta que Mas então para alguma substituição θ. Mais especificamente: Resposta correcta β n sse = P G P {G} F. P = (β 1 β n )θ Uma substituição de variáveis θ em G é uma resposta correcta se P = ( Gθ) onde é o fecho universal das variáveis livres em Gθ. 1

Exemplo 24.1. Seja P Double(0, 0) Double(s(x), s(s(y))) Double(x, y) Então para P { Double(x, s(y)}, [s(0)/x, s(0)/y] é uma resposta correcta. Seja G um objectivo α 1,..., α m,..., α k e α β 1,..., β q, uma cláusula C. G é derivado por resolução de G e C, com unificador mais geral θ se: 1. α m é o átomo seleccionado em G 2. θ é um umg de α m e α 3. G é (α 1,..., β 1,..., β q,..., α k )θ, isto é 4. G diz-se a a resolvente de G e C. α 1,..., α m,..., α k α β 1,..., β q (α 1,..., β 1,..., β q,..., α k )θ Exemplo 24.2. Considera o seguinte programa P: e o objectivo: q(y, b), q(b, z). q(x, y) p(x, y) q(x, y) p(x, z), p(z, y) p(b, a) p(c, a) p(d, b) p(e, b) Exemplo 24.3. Em cada passo escolher um literal que complemente a cabeça duma cláusula do programa (usar sempre variáveis novas para o programa!). 1. Escolher q(y, b) e resolver com a primeira cláusula (q(x 1, y 1 ) p(x 1, y 1 )): p(y, b), q(b, z) e a substituição [y/x 1, b/y 1 ] 2. Escolher p(y, b) e resolver com a quinta cláusula ( p(d, b)): q(b, z) e substituição [d/y] 2

3. Resolver o literal que resta com a primeira cláusula (q(x 2, y 2 ) p(x 2, y 2 )): p(b, z) 4. Resolver o literal que resta com a terceira cláusula (p(b, a)): [] e a substituição [a/z]. A resposta é [d/y, a/z] e P = q(d, b) (q(b, a). E também, P = y zq(y, b) q(b, z) (como se pretendia...). Regras de Computação e de Procura Regra de Computação Uma regra de computação é uma regra para determinar um literal do objectivo com o qual aplicar a regra de resolução (resolver). Estratégia de Procura Uma estratégia de procura é uma regra para determinar como escolher qual a cláusula do programa que se vai usar para resolver com o literal escolhido no objectivo. Resolução SLD (Selectiva Linear para Claúsulas Definidas) Seja P um programa definido, R uma regra de computação e G um objectivo. Uma derivação por resolução-sld é uma sequência de passos de resolução entre as cláusulas do objectivo e as de programa. Seja G 0 = G. Dada a cláusula G i, G i+1 é obtida selecionando um literal β i de G i, de acordo com R e escolhendo C i P (com variáveis novas) tal que a cabeça de C i unifica com β i com umg θ i : G i = β 1,..., β i, β i+1,..., β n C i = α α 1,..., α k αθ i = β i θ i G i+1 = (β 1,..., α 1,..., α k, β i+1,..., β n )θ i Refutação SLD 3

G 0 = G C 1, θ 1 G 1 C 2, θ 2 G 2. G n 1 G n. C n, θ n Uma refutação SLD é uma derivação-sld de []. Se G n = [] dizemos que a refutação tem comprimento n. Exemplo 24.4. Seja P : Max(x, y, x) Less eq(y, x) Refutação SLD Max(x, y, y) Less eq(x, y) Less eq(0, x) Less eq(s(x), s(y)) Less eq(x, y) e G : Max(s(0), x, s(s(0))) Uma refutação para P {G} de comprimento n = 3 é: Max(s(0), x, s(s(0))) (Max(x 1, y 1, y 1) Less eq(x 1, y 1) θ 1 = [s(0)/x 1, s(s(0))/x, s(s(0))/y 1]) Less eq(s(0), s(s(0))) (Less eq(s(x 2), s(y 2)) Less eq(x 2, y 2)) θ 2 = [0/x 2, s(0)/y 2]) Less eq(0, s(0)) (Less eq(0, x 3), θ 3 = [s(0)/x 3]) ɛ Árvore de derivação SLD Dado um programa definido P, uma regra de computação e um objectivo G, todas as derivações-sld podem ser representadas por uma árvore tal que: A raiz é etiquetada por G Cada nó é etiquetado com uma cláusula objectivo G i e cria-se um novo ramo para cada G ij que pode ser obtido resolvendo G i com uma cláusula C j cuja cabeça unifique com um literal de G i. As folhas se forem ɛ são designadas nós de sucesso (que correspondem a soluções), senão nós de insucesso (ou falha). Árvore de derivação SLD Os ramos da árvore podem então ser 4

de sucesso se terminarem numa folha de sucesso de falha se terminarem numa folha de falha infinitos se corresponderem a uma derivação infinita Exemplo 24.5. Determinar a árvore-sld do exemplo 24.2, considerando como regra de computação a escolha do literal mais à esquerda. Um exemplo de um programa Prolog. Exemplo 24.6. Existem 5 casas de cores diferentes, habitadas por homens de nacionalidades diferentes, cada um dos quais tem um animal de estimação diferente, uma bebida preferida diferente e uma marca de cigarros diferente. E tais que: 1. o inglês vive na casa vermelha 2. o espanhol tem um cão 3. o dono da casa verde bebe café 4. o ucraniano bebe chá 5. a casa verde fica imediatamente à direita da casa cor de marfim 6. o fumador de Winston cria caracóis 7. o dono da casa amarela fuma Kools 8. o dono da casa do meio bebe leite 9. o norueguês mora na primeira casa da esquerda 10. o homem que fuma Chesterfields mora na casa ao lado do dono da raposa 11. o homem que fuma Kools mora ao lado do dono do cavalo 12. o homem que bebe sumo de laranja fuma Lucky Strike 13. o japonês fuma Parliaments 14. o norueguês vive ao lado da casa azul Quem é o dono da zebra? Quem prefere água? Exercício 24.1. Para cada uma das seguintes fórmulas encontre uma fórmula em forma clausal. Para tal: 1. Converte numa fórmula equivalente em forma normal prenexa. 2. Elimina os quantificadores existênciais introduzindo novos símbolos funcionais ( Skolemização. 3. Converte a matriz da fórmula resultante para forma normal conjuntitiva. 4. Distribuí os quantificadores universais pelas conjunções, aplicando a regra: x(ϕ ψ) xϕ xψ 5. Escreve a fórmula resultante em notação clausal. 5

a) xp (x) yq(y); b) ( xp (x) xq(x)) z( P (z) Q(z)); c) y( x(p (x, y) (Q(x) Q(f(x))))); d) xs(x, x) z(p (z) xr(x, z)) Exercício 24.2. Aplica o algoritmo de unificação de Robinson a cada um dos conjuntos S de expressões simples seguintes, indicando a resposta do algoritmo e ainda para cada iteração efectuada a substituição correspondente σ i e os conjuntos D i e Sσ i. 1. S = {P (f(a), g(x)), P (y, y)}; 2. S = {P (a, x, h(g(z))), P (z, h(y), h(y))}; 3. S = {P (x, x), P (y, f(y))}; 4. S = {R(f(x, g(u))), R(f(g(u), g(z))}; 5. S = {P (x, f(z)), P (f(z), y), P (y, z)} Resolução Para o último caso σ 0 = ι D 0 = {x, f(z), y}, σ 1 = [f(z)/x] e Sσ 1 = {P(f(z), f(z)), P(f(z), y), P(y, z)} D 1 = {f(z), y}, σ 2 = σ 1 [f(z)/y] = [f(z)/x, f(z)/y] e Sσ 2 = {P(f(z), f(z)), P(f(z), f(z)), P(f(z), z)} D 2 = {f(z), z}, como z ocorre em f(z) o algoritmo termina indicando que S não é unificável. Exercício 24.3. Considera G o objectivo P(x, x) e o programa P seguinte: P(a, b) P(x, z) P(x, y), P(y, z) P(x, y) P(y, x) Calcula uma refutação-sld para P {G} e a resposta calculada. 6

Resolução P(x, x) P(x 1, z 1 ) P(x 1, y 1 ), P(y 1, z 1 ) σ 1 = [x/x 1, x/z 1 ] P(x, y 1 ), P(y 1, x) P(a, b) σ 2 = [a/x/, b/y 1 ] P(b, a) P(x 2, y 2 ) P(y 2, x 2 ) σ 3 = [b/x 2 /, a/y 2 ] P(a, b) P(a, b) σ 4 = ι ɛ σ 1 σ 2 σ 3 σ 4 = [a/x 1, a/z 1, a/x, b/y 1, b/x 2, a/y 2 ] Resposta calculada:σ = [a/x] Exercício 24.4. Para o programa definido P e objectivo G (da forma β) descritos abaixo: Calcula uma refutação SLD para P {G}, indicando as substituições em cada passo e a resposta calculada, no fim. Representa a refutação-sld por uma árvore de derivação. Verifica a execução do programa com o objectivo em Prolog. 1. P : Add(x, 0, x) Add(x, s(y), s(z)) Add(x, y, z) G : Add(s(0), x, s(s(y)) 2. P : Lenght(nil, 0) Lenght(cons(x, y), s(z)) Lenght(y, z) G : 3. P : Lenght(x, s(s(y))) Append(cons(x, x R ), x L, cons(x, x RL )) Append(x R, x L, x RL ) Append(nil, x L, x L ) G : Append(cons(x, nil), cons(x, nil), y) 4. P : Member(x, cons(x, y)) Member(x, cons(y, z)) Member(x, z) G : Member(x, cons(y, cons(x, z))) 7