Download - 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Lógica para Computação (IF61B)
A linguagem PROLOG... To be continued !
19/04/23Prof. Celso A A Kaestner
16