1 lÓgica matemÁtica introduÇÃo À programaÇÃo em lÓgica profa. joseluce de farias cunha
TRANSCRIPT
1
LÓGICA MATEMÁTICA
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA
Profa. Joseluce de Farias Cunha
2
SUMÁRIO
1. Lógica e Programação de Computadores2. A Linguagem Prolog
Fatos Consultas Regras Regra de Inferência: Resolução Exemplo de Programa e Consultas Recursão Principais Aplicações O Significado dos Programas Prolog
3
Lógica e Programação de Computadores
Na lógica de predicados usamos regras de inferência para demonstrarmos que uma tese é conseqüência de determinadas hipóteses
Programação em Lógica e especificamente a linguagem Prolog – Progamming in logic – também ajuda a chegar a teses a partir de hipóteses
A linguagem Prolog inclui: predicados, conectivos lógicos e regras de inferência (Princípio da Resolução)
4
Lógica e Programação de Computadores Prolog é uma linguagem declarativa ao
invés de procedimental
Um programa Prolog consiste na declaração ou descrição de uma interpretação – hipóteses que são verdadeiras em uma interpretação
5
Lógica e Programação de Computadores O conjunto de declarações que forma
um programa Prolog é chamada a base de dados (BD) desse programa
Para determinar se uma tese (consulta do usuário à BD) é ou não verdadeira, Prolog aplica suas regras de inferência na BD sem necessidades de instruções adicionais por parte do programador
6
Lógica e Programação de Computadores BD convencionais descrevem apenas
fatos“Oscar é um avestruz”
As sentenças de um Programa em lógica além de descrever fatos permite a descrição de regras“Todo avestruz é um ave”
Havendo regras, novos fatos podem ser deduzidos“Oscar é uma ave”
7
Lógica e Programação de Computadores
Ponto focal da programação em lógica: identificar computação com dedução
– a execução de um programa limita-se à pesquisa da refutação das sentenças do programa (BD) mais a negação da sentença consulta - “uma refutação é a dedução de uma contradição”
8
Lógica e Programação de Computadores título As sentenças de um programa
prolog são expressas por cláusulas Tipos de cláusulas: fatos e regras Fato : declaração de verdade
incondicional Regra: condição que deve ser
satisfeita para que um declaração seja considerada verdadeira
9
Lógica e Programação de Computadores
Principais diferenças de um programa em lógica para um convencional: processamento simbólico (objetos e
relações entre eles) estruturas de controle e
conhecimento separadas fácil modificação
10
Lógica e Programação de Computadores
Principais propriedades dos sistemas de programação em lógica simultaneamente linguagem de
programação e especificação capacidade dedutiva operam de forma não-determinística são naturalmente recursivos
11
A Linguagem Prolog
Programar em Prolog consiste em: Declarar alguns fatos sobre objetos e
suas relações Definir algumas regras sobre objetos
e suas relações Fazer consultas sobre objetos e suas
relações
12
A Linguagem PrologFATOS
Os fatos permitem definir os predicados:- Exemplo: um sistema ecológico
come (urso, peixe)come (urso, raposa) % predicado
bináriocome (cavalo, mato)animal (urso)animal (peixe) % predicado unárioanimal (raposa)
13
A Linguagem Prolog
CONSULTAS
De posse do programa Prolog (base de dados: BD), podemos fazer consultas .Exemplos:
? come (cavalo, mato) Resposta: yes
? come (urso, coelho) Resposta: no
14
A Linguagem PrologREGRAS
Uma regra é a descrição de um predicado através de uma implicação
Exemplo: “um animal é presa se é comido Exemplo: “um animal é presa se é comido por outro animal”.por outro animal”.
come(Y,X) ^ animal(X) -> come(Y,X) ^ animal(X) -> presa(X) presa(X)
em Prolog:em Prolog:
presa(X) :- come(Y,X), animal(X) presa(X) :- come(Y,X), animal(X)
15
A Linguagem PrologREGRAS e
CONSULTAS Acrescentando a nova regra à BD podemos
fazer novo tipo de consultacome (urso, peixe)
come (urso, raposa) % predicado bináriocome (cavalo, mato)animal (urso)animal (peixe) % predicado unárioanimal (raposa)
presa(X) :- come(Y,X), animal(X) presa(X) :- come(Y,X), animal(X) % regra
?-presa(x) resposta: peixe e raposa
16
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
Tanto as regras como os fatos de um programa prolog correspondem à fórmulas bem formadas (wff) e são exemplos de Cláusulas de Horn.
Prolog trata as regras quantificadas universalmente
A regra de inferência usada pelo prolog é a resolução.Como foi obtida a resposta do exemplo anterior??
17
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
Observe que a regraObserve que a regra presa(X) :- come(Y,X), animal(X)presa(X) :- come(Y,X), animal(X)
Equivale a wffEquivale a wff(come(Y,X) ^ animal(X)) -> presa(X)(come(Y,X) ^ animal(X)) -> presa(X)
Equivale a cláusulaEquivale a cláusula~(come(X,Y) ^ animal(X)) v presa(x) ~(come(X,Y) ^ animal(X)) v presa(x) ~come(X,Y) v ~animal(X) v presa(x)~come(X,Y) v ~animal(X) v presa(x)
18
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
Regra da resolução : Duas cláusulas de Horn são resolvidas em uma nova cláusula se uma delas contiver um predicado não-negado que corresponda a um predicado negado na outra cláusula. A nova cláusula elimina o termo de correspondência e fica disponível para uso em respostas a perguntas.As variáveis são substituídas por constantes associadas de maneira consistente
19
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
? presa(X)
O Prolog procura, na BD, por uma regra com o predicado presa(X) como o conseqüente
BBusca outras cláusulas que possam ser resolvidas com a regra
Faz as substituições das variáveis na cláusula regraFaz as substituições das variáveis na cláusula regra
1. ~come(X,Y) v ~animal(X) v presa(X) ~come(X,Y) v ~animal(X) v presa(X) 2. come(urso,peixe)2. come(urso,peixe)3. ~animal(peixe) v presa(peixe) 3. ~animal(peixe) v presa(peixe) {resolvente de 1 e 2}{resolvente de 1 e 2}4. animal (peixe)4. animal (peixe)5. presa (peixe)5. presa (peixe) {resolvente de 3 e 4}{resolvente de 3 e 4}
Refaz o processo procurando na BD outra cláusula a Refaz o processo procurando na BD outra cláusula a resolver com a cláusula da regra.resolver com a cláusula da regra.Encontrará come(urso,peixe)Encontrará come(urso,peixe)
20
A Linguagem PrologREGRA DE INFERÊNCIA: RESOLUÇÃO
Outro exemplo: acrescentando à BD a regra: “x é caçado se é presa”
caçado(X) :- presa(X)
Como é feita a consulta que segue? ? caçado(X)
a regra na forma simbólica é:presa(X) -> caçado(X)
a cláusula correspondente é:~(presa(X) v caçado(X)
essa cláusula é resolvida com a da regra de definição de presa e seguindo a resolução obtém as respostas:
peixe raposa
21
A Linguagem PrologEXEMPLO DE PROGRAMA E
CONSULTAS
come (urso, peixe)come (peixe,peixinho)come (peixinho,alga)come (quati,peixe)come(urso,quati)come (urso, raposa)come(raposa,coelho)come (coelho, mato)come(urso,cavalo)come(cavalo,mato)come(gato-selvagem,cavalo)
animal(urso)animal(peixe)animal(peixinho)
animal(quati)animal(raposa)animal(coelho) animal(cavalo)animal(gato-selvagem)
planta(mato)planta(alga)
presa(X) :- come(Y,X), presa(X) :- come(Y,X),
animal(X)animal(X)
22
A Linguagem PrologEXEMPLO DE PROGRAMA E
CONSULTAS
Consultas e respostas:
? animal(coelho)yes
? come(gato-selvagem,mato)no
? come(X,peixe)ursoquati
? come(X,Y),planta(Y)peixinho algacoelho matocavalo mato
23
A Linguagem PrologEXEMPLO DE PROGRAMA E
CONSULTAS
Consultas e respostas (continuação):
? presa(X)peixe
peixinhopeixequatiraposacoelhocavalocavalo
24
A Linguagem PrologRECURSÃO
As regras em Prolog são implicações lógicas Podem depender de fatos:
presa(X) :- come(X,Y),animal(X) Podem depender de outras regras:
caçado(X) :- presa(X) Podem depender da própria regra:
com definição recursiva
25
A Linguagem PrologRECURSÃO
Exemplo: usar a BD ecológica para definir a relação
na-cadeia-alimentar(X,Y)
com o significado: ”Y está na cadeia alimentar de X”
que por sua vez pode significar duas coisas:1. X come Y diretamente2. X come algum animal que come algum
animal que come algum animal ... que come Y
26
A Linguagem PrologRECURSÃO
(exemplo)
O caso 2. pode ser reescrito como:2’. “X come Z e Y está na cadeia alimentar de Z”
O caso 1. é o ponto de parada da regra recursiva
A regra incorpora os casos 1 e 2’:na_cadeia_alimentar(X,Y) :- come(X,Y)na_cadeia_alimentar(X,Y) :- come(X,Z),
na_cadeia_alimentar(Z,Y)
27
A Linguagem PrologRECURSÃO
(exemplo)
? na_cadeia_alimentar(urso,Y)
resposta:1. peixe2. quati3. raposa4. cavalo5. peixinho6. alga7. peixe8. peixinho9. alga10. coelho11. mato12. mato
28
A Linguagem PrologRECURSÃO
(exemplo)
urso peixeurso quatiurso raposaurso cavalourso peixe
peixe peixinho
peixinho alga
29
A Linguagem PrologPRINCIPAIS APLICAÇÕES DA LINGUAGEM
Sistemas Baseados em Conhecimentos Sistemas de Base de Dados Sistemas especialistas Processamento de Linguagem Natural Educação Modelagem de arquiteturas não
convencionais
30
A Linguagem Prolog O SIGNIFICADO DOS PROGRAMAS PROLOG
Um programa Prolog possue três interpretações semânticas básicas: Interpretação declarativa
Entende-se que as cláusulas que definem um programa descrevem uma teoria de primeira ordem.
Interpretação procedimentalAs cláusulas são vistas como entrada para um método de prova
Interpretação operacionalAs cláusulas são vistas como comandos para um procedimento particular de prova por refutação
31
A Linguagem Prolog O SIGNIFICADO DOS PROGRAMAS PROLOG
Proveito das alternativas semânticas: Declarativa: Permite a modelagem do
problema simplificando a tarefa de programação
Procedimental: Permite que o programador identifique e descreva o problema em subproblemas através de uma série de chamadas a procedimentos
Operacional: Permite controle da execução através da ordenação das cláusulas e objetivos
32
A Linguagem Prolog O SIGNIFICADO DOS PROGRAMAS PROLOG
Proveito das alternativas semânticas:
O programador deve se concentrar no significado declarativo. Em problemas de maior complexidade os aspectos operacionais não podem ser ignorados
33
A Linguagem Prolog O SIGNIFICADO DOS PROGRAMAS PROLOG
Bibliografia Judith L. Gersting: Fundamentos
Matemáticos para a Ciência da Computação, LTC Editora, 3a edição, 1995.
Luiz A. M. Palazzo: Introdução à Programação PROLOG, Editora da Universidade Católica de Pelotas/UCPEL - Pelotas