lógica para computação

16
Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng. celsokaestner (at) utfpr (dot) edu (dot) br

Upload: malik-hardin

Post on 31-Dec-2015

18 views

Category:

Documents


0 download

DESCRIPTION

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: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Lógica para Computação

Lógica para Computação

Prof. Celso Antônio Alves Kaestner, Dr. Eng.

celsokaestner (at) utfpr (dot) edu (dot) br

Page 2: Lógica para Computação

Lógica para Computação (IF61B)

Resolução e PROLOG

Passos para obter a forma clausal de uma fbf:

1. Obter a forma normal prenex da fbf:(Forma normal prenex: Q1x1Q2x2...Qnxn (A) , onde Q1x1Q2x2...Qnxn é o prefixo e (A) é a matriz da fbf);

A. Eliminar os conectivos e →;

B. Colocar as negações () ao lado dos átomos;

C. Distinguir as variáveis, se necessário;

D. Deslocar os quantificadores para o início da fbf.

19/04/23Prof. Celso A A Kaestner

2

Page 3: Lógica para Computação

Lógica para Computação (IF61B)

Resolução e PROLOG

2. Eliminar os quantificadores existenciais (skolemização):

A. 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;

B. Se não houverem tais variáveis x((x)) é substituído por (a), onde a é a constante de Skolem.

3. Eliminar o prefixo da fbf (todos os quantificadores universais);

4. Passar a forma normal conjuntiva, reordenando os conectivos e de forma conveniente. 19/04/23Prof. Celso A A Kaestner

3

Page 4: Lógica para Computação

Lógica para Computação (IF61B)

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.

19/04/23Prof. Celso A A Kaestner

4

Page 5: Lógica para Computação

Lógica para Computação (IF61B)

Resolução e PROLOG

O princípio da resolução: 1. 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).

19/04/23Prof. Celso A A Kaestner

5

Page 6: Lógica para Computação

Lógica para Computação (IF61B)

Resolução e PROLOG

O princípio da resolução: 2. 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].

19/04/23Prof. Celso A A Kaestner

6

Page 7: Lógica para Computação

Lógica para Computação (IF61B)

Resolução e PROLOG

Propriedades do princípio da resolução: 1. É uma regra de inferência correta, isto é, a

cláusula resolvente é conseqüência lógica das cláusulas iniciais;

2. É 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.

19/04/23Prof. Celso A A Kaestner

7

Page 8: Lógica para Computação

Lógica para Computação (IF61B)

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:

1. Monta-se o conjunto {A1,A2...,An , B};

2. Obtém-se sua forma clausal C;

3. Se C é inconsistente, a dedução é válida.

19/04/23Prof. Celso A A Kaestner

8

Page 9: Lógica para Computação

Lógica para Computação (IF61B)

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.

19/04/23Prof. Celso A A Kaestner

9

Page 10: Lógica para Computação

Lógica para Computação (IF61B)

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

19/04/23Prof. Celso A A Kaestner

10

Page 11: Lógica para Computação

Lógica para Computação (IF61B)

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.

19/04/23Prof. Celso A A Kaestner

11

Page 12: Lógica para Computação

Lógica para Computação (IF61B)

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.

19/04/23Prof. Celso A A Kaestner

12

Page 13: Lógica para Computação

Lógica para Computação (IF61B)

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.

19/04/23Prof. Celso A A Kaestner

13

Page 14: Lógica para Computação

Lógica para Computação (IF61B)

A linguagem PROLOG

male(albert).

female(alice).

male(edward).

female(victoria).

parent(albert,edward).

parent(victoria,edward).

parent(albert,alice).

parent(victoria,alice).

19/04/23Prof. Celso A A Kaestner

14

? male(albert).

Yes

? female(Person).

Person=alice ;

Person=victoria;

No

? parent(Person,edward).

Person=albert;

Person=victoria;

No

Page 15: Lógica para Computação

Lógica para Computação (IF61B)

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

19/04/23Prof. Celso A A Kaestner

15

Page 16: Lógica para Computação

Lógica para Computação (IF61B)

A linguagem PROLOG... To be continued !

19/04/23Prof. Celso A A Kaestner

16