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

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 of Lógica para Computação

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