1 lÓgica matemÁtica introduÇÃo À programaÇÃo em lÓgica profa. joseluce de farias cunha

33
1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

Upload: internet

Post on 22-Apr-2015

119 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

1

LÓGICA MATEMÁTICA

INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA

Profa. Joseluce de Farias Cunha

Page 2: 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

Page 3: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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)

Page 4: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 5: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 6: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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”

Page 7: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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”

Page 8: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 9: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 10: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 11: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 12: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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)

Page 13: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 14: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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)

Page 15: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 16: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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??

Page 17: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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)

Page 18: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 19: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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)

Page 20: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 21: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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)

Page 22: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 23: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

23

A Linguagem PrologEXEMPLO DE PROGRAMA E

CONSULTAS

Consultas e respostas (continuação):

? presa(X)peixe

peixinhopeixequatiraposacoelhocavalocavalo

Page 24: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 25: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 26: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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)

Page 27: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 28: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

28

A Linguagem PrologRECURSÃO

(exemplo)

urso peixeurso quatiurso raposaurso cavalourso peixe

peixe peixinho

peixinho alga

Page 29: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 30: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 31: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 32: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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

Page 33: 1 LÓGICA MATEMÁTICA INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha

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