• Nenhum resultado encontrado

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.

N/A
N/A
Protected

Academic year: 2021

Share "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."

Copied!
6
0
0

Texto

(1)

Programação em Lógica

Resolução na Lógica

Proposicional

Prof. Sergio Ribeiro

Material adaptado do livro-texto de João Nunes de Souza

Ciência da Computação

Introdução

Programação em Lógica

Sistemas dedução da Lógica:

Estabelecem estruturas que permitem a representação e dedução do conhecimento. Vários tipos: Sistema axiomático Tableaux semânticos Resolução 2

Resolução na Lógica

Proposional

Método de prova criado por John Alan Robinson. Inúmeras pesquisas e implementações utilizam tal método.

Programação Lógica

Notação (forma de conjuntos):

Considere a fórmula H

H = (P ∨ ~Q ∨ R) ∧ (P ∨ ~Q) ∧ (P ∨ P)

Esta fórmula é uma conjunção de disjunções (FNC).

Programação em Lógica 3

Resolução na Lógica

Proposional

Notação (forma de conjuntos):

H = (P ∨ ~Q ∨ R) ∧ (P ∨ ~Q) ∧ (P ∨ P)

Esta fórmula é representada na forma de conjuntos como:

H = {{P, ~Q, R}, {P, ~Q}, {P}}

Cláusula ⇒ disjunção de literais (conjunto finito de literais).

Literais Complementares ⇒ ocorre quando um literal é a negação do outro.

Programação em Lógica 4

Resolução na Lógica

Proposional

Resolvente de duas cláusulas

Considere duas cláusulas:

C1= {A1,...,An}

C2= {B1,...,Bn}

Considere que elas possuem literais complementares. Considere um literal λ em C1, tal que o seu

complementar ~λ esteja em C2.

O resolvente de C1e C2, chamado Res(C1,C2), é

definido por:

Res(C1,C2) = (C1– {λ}) ∪ (C2– {~λ})

Se Res(C1,C2) = { }, tem-se um resolvente vazio.

Programação em Lógica 5

Exemplo 01

Considere: C1= {P, ~Q, R} C2= {~P, R} Logo, Res(C1,C2) = {~Q, R} Programação em Lógica 6

(2)

Exemplo 02

Considere: C1= {P} C2= {~P} Logo, Res(C1,C2) = { } Programação em Lógica 7

Exemplo 03

Considere: C1= {P, ~Q} C2= {~P, Q} Então, Res(C1,C2) = {~Q, Q} ou {P, ~P}

A regra resolvente elimina apenas um literal por vez!

Programação em Lógica 8

Resolução na Lógica

Proposicional

Elementos básicos da Resolução:

Composição dos seguintes elementos:

Alfabeto da Lógica Proposicional

Conjunto de cláusulas da Lógica Proposicional Regra de resolução

Resolução define uma estrutura para representação e dedução de conhecimento.

Não existem axiomas.

Apenas uma regra de inferência (regra de resolução). Prova de argumentos usando o conhecimento representado no sistema.

Programação em Lógica 9

Resolução na Lógica

Proposicional

Regra de Resolução

Dadas duas cláusulas

C1= {A1,...,An}

C2= {B1,...,Bn}

A regra de resolução aplicada a C1e C2é definida por Tendo C1e C2, deduza Res(C1,C2)

Prova da satisfatibilidade de um conjunto de cláusulas ⇒aplicação repetida da regra de resolução até obter uma cláusula vazia.

Expansão por Resolução

Programação em Lógica 10

Exemplo

Considere {{~P, Q, R}, {P, R}, {P, ~R}} Expansão 1. {~P, Q, R} 2. {P, R} 3. {P, ~R} 4. {Q, R} [Res(1,2)] 5. {Q, P} [Res(3,4)] 6. {P} [Res(2,3)]

Neste caso, não é possível obter a cláusula vazia.

Programação em Lógica 11

Resolução na Lógica

Proposicional

Expansão por Resolução

Seja um conjunto de cláusulas {A1,...,An}

Uma expansão por resolução de {A1,...,An}

1. A1

2. A2

. . . n. An

OBS: Nessa expansão, as fórmulas {A1,...,An} podem ser escritas em qualquer ordem.

(3)

Resolução na Lógica

Proposicional

Expansão por Resolução

Seja Exp uma expansão por resolução sobre {A1,...,An}.

Se Exp* é a estrutura resultante da adição de Res(Ai, Aj), (i, j) ≤ n, i ≠ j, à expansão Exp, então Exp* também é uma expansão por resolução sobre {A1,...,An}.

Programação em Lógica 13

Exemplo

Considere {{~P, Q}, {P, R}, {P, ~Q}, {~Q, ~R}} Expansão 1. {~P, Q} 2. {P, R} 3. {P, ~Q} 4. {~Q, ~R} 5. {Q, R} Res(1,2) 6. {P, R} Res(3,5) 7. {Q, R} Res(1,6) 8. {R, ~R} Res(4,7)

Tal resolução também não contém a cláusula vazia. Se expansão contém cláusula vazia ⇒ expansão fechada.

Programação em Lógica 14

Consequência Lógica na

Resolução

Forma clausal de H

Fórmula Hc que é uma conjunção de cláusulas e é equivalente a H.

Toda fórmula da Lógica Proposicional possui uma fórmula clausal associada.

Prova por Resolução

Seja H uma fórmula e ~Hc a fórmula clausal associada a ~H.

Uma prova de H por resolução é uma expansão fechada sobre ~Hc

Nesse caso, H é um teorema do sistema de resolução.

Programação em Lógica 15

Exemplo 01

Prova por Resolução

H = ((P1˅ P2˅ P3) ˄ (P1→P4) ˄ (P2→P4) ˄ (P3→P4)) → P4 Prova de H ~H = ~(((P1˅ P2˅ P3) ˄ (P1→P4) ˄ (P2→P4) ˄ (P3→P4)) → P4) ~(~((P1˅ P2˅ P3) ˄ (~P1˅ P4) ˄ (~P2˅ P4) ˄ (~P3˅ P4)) ˅ P4) ((P1˅ P2˅ P3) ˄ (~P1˅ P4) ˄ (~P2˅ P4) ˄ (~P3˅ P4)) ˄ ~P4 (P1˅ P2˅ P3) ˄ (~P1˅ P4) ˄ (~P2˅ P4) ˄ (~P3˅ P4) ˄ ~P4 Programação em Lógica 16

Exemplo 01

Prova por Resolução

H = ((P1˅ P2˅ P3) ˄ (P1→P4) ˄ (P2→P4) ˄ (P3→P4)) → P4 ~Hc = (P1˅ P2˅ P3) ˄ (~P1˅ P4) ˄ (~P2˅ P4) ˄ (~P3˅ P4) ˄ ~P4 ~Hc = { {P1, P2, P3}, {~P1, P4}, {~P2, P4}, {~P3, P4}, {~P4} } Programação em Lógica 17

Exemplo 01

Prova por Resolução

Expansão por Resolução

1. {P1, P2, P3} 2. {~P1, P4} 3. {~P2, P4} 4. {~P3, P4} 5. {~P4} 6. {P2, P3, P4} Res(1,2) 7. {P3, P4} Res(3,6) 8. {P4} Res(4,7) 9. {} Res(5,8) Programação em Lógica 18

(4)

Exercício

G = ((P1˅ P2) ˄ (P1→P4) ˄ (P2→P4) ˄ (P3→ P4)) → P3 Resolver! Programação em Lógica 19

Consequência Lógica na

Resolução

Seja H uma fórmula da Lógica Proposicional. Teorema da Completude ⇒ Se H é uma tautologia, então existe uma prova de H por resolução.

Teorema da Correção ⇒ Se existe uma prova de H por resolução, então H é uma tautologia.

Programação em Lógica 20

Consequência Lógica na

Resolução

Definição:

Dada uma fórmula H, e um conjunto de hipóteses ß = {A1, ..., An}

Então H é uma consequência lógica de ß, por resolução, se existe uma prova de

(A1˄ ... ˄ An) → H Notação ß ├ H {A1, ..., An} ├ H Programação em Lógica 21

Exemplo 01

Considerando que Guga é determinado. Guga é inteligente.

Se Guga é determinado e atleta, ele não é um perdedor.

Se Guga é um amante do tênis, então é um atleta. Se Guga é inteligente, então é um amante do tênis.

Verificar se a afirmação “Guga não é um perdedor” é uma consequência lógica dos argumentos acima. Programação em Lógica 22

Exemplo 01

Proposições: Guga é determinado ⇒ P Guga é inteligente ⇒ Q Guga é um atleta ⇒ R

Se Guga é determinado e atleta, ele não é um perdedor. (P ˄ R) → ~P1

Se Guga é um amante do tênis, então é um atleta. Q1→R

Se Guga é inteligente, então é um amante do tênis. Q → Q1

Programação em Lógica

Guga é um perdedor ⇒ P1 Guga é um amante do tênis

⇒Q1

23

Exemplo 01

H = (P ˄ Q ˄ ((P ˄ R) → ~P

1

) ˄ (Q

1

R)

˄ (Q → Q

1

)) → ~P

1

Obtenção da fórmula clausal (~Hc)

associada a ~H.

~H = ~((P ˄ Q ˄ ((P ˄ R) → ~P1) ˄ (Q1→ R) ˄ (Q → Q1)) → ~P1) ~(~(P ˄ Q ˄ ((P ˄ R) → ~P1) ˄ (Q1→R) ˄ (Q → Q1)) ˅ ~P1) Programação em Lógica 24

(5)

Exemplo 01

Obtenção da fórmula clausal (~Hc)

associada a ~H.

(P ˄ Q ˄ ((P ˄ R) → ~P1) ˄ (Q1→R) ˄ (Q → Q1)) ˄ P1) P ˄ Q ˄ (~(P ˄ R) ˅ ~P1) ˄ (~Q1˅ R) ˄ (~Q ˅ Q1) ˄ P1 P ˄ Q ˄ (~P ˅ ~R ˅ ~P1) ˄ (~Q1˅ R) ˄ (~Q ˅ Q1) ˄ P1 Programação em Lógica 25

Exemplo 01

~Hc representado na notação de conjuntos.

{ {P} {Q} {~P, ~R, ~P1} {~Q1, R} {~Q, Q1} {P1} } Programação em Lógica 26

Exemplo 01

Expansão por Resolução de ~Hc.

1. {P} 2. {Q} 3. {~P, ~R, ~P1} 4. {~Q1, R} 5. {~Q, Q1} 6. {P1} 7. {~Q, R} Res(4,5) 8. {~P, ~P1, ~Q} Res(3,7) 9. {~P1, ~Q} Res(1,8) 10.{~Q} Res(6,9) 11.{} Res(2,10) Programação em Lógica 27

Exemplo 01

A expansão obtida é fechada.

Assim, temos

├ H

H é uma tautologia.

Programação em Lógica 28

Exemplo 02

Considere os argumentos:

Se Guga joga uma partida de tênis, a torcida comparece se o ingresso é barato.

Se Guga joga uma partida de tênis, o ingresso é barato.

Verifique se a afirmação “Se Guga joga

uma partida de tênis, a torcida comparece”

é uma consequência lógica dos

argumentos acima.

Programação em Lógica 29

Exemplo 02

G = ((P → (R → Q)) ˄ (P → R)) → (P → Q)

Prove!

Programação em Lógica 30

(6)

Conjunto Insatisfatível

Um conjunto ß, tal que:

ß = {~P ˅ Q, ~(Q ˅ ~R), R → P1, ~(~P ˅

P1)}

é insatisfatível se e somente se H, tal que:

H = ~((~P ˅ Q) ˄ ~(Q ˅ ~R) ˄ (R → P1) ˄

~(~P ˅ P1))

é uma tautologia.

Exercício: determinar se o conjunto ß é

insatisfatível.

Programação em Lógica 31

Exercícios

1.

Faça as seguintes demonstrações

utilizando resolução:

P → P

~(P → Q) ↔ (P ˄ (~Q)) (P ˅ (P ˄ ~P)) ↔ P

2.

Determine se os conjuntos a seguir

são insatisfatíveis:

{~(P → Q), ~P ˅ Q} {P → Q, P ˅ Q, ~Q}

Referências

Documentos relacionados

Lógica de programação é a forma como você organiza qual passo você deve dar em cada momento para realizar a ação que você deseja.. Em outras palavras, você vai aprender

O seguinte exemplo, composto por 5 comandos em alto nível, representa um algoritmo de extrema complexidade de ser implementado, pois os comandos são muito

Torna-se necessário referir que a limitação de inserção de conhecimento repetido ao nível do predicado progenitor delimita necessariamente as restantes relações

● Dica: ao utilizar o método puts com as aspas (para escrever textos), dentro das aspas você pode acessar as variáveis com #{IDENTIFICADOR} , trocando IDENTIFICADOR pelo

p: Antonio é casado. As proposições simples são geralmente designadas pelas letras minúsculas p,q,r,s,... Proposições compostas: São aquelas formadas pela combinação de duas ou

Fazer a modelagem (grafo de estados) e codificação do problema para obter moedas para formar um troco de T , colocando um custo maior em oferecer moedas mais escassas e um custo

Na informática, o algoritmo é o "projeto do programa“, ou seja, antes de se fazer um programa (software) na Linguagem de Programação desejada (Pascal, Java, C, Delphi,

O objetivo deste artigo é conceituar esta lógica de acordo com seus termos, sua teoria de conjuntos e operações, variáveis linguísticas e funções de pertinência, bem