linguagens lógicas -...

32
Linguagens Lógicas Aluno: Victor Rocha

Upload: others

Post on 20-Oct-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Linguagens Lógicas

Aluno: Victor Rocha

Page 2: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Roteiro

• Introdução • Cálculo de Predicados • Proposições • Conectores Lógicos • Variáveis • Tipos de Cláusulas

• fatos • regras

• Banco de Dados • Prolog • Fatos em Prolog • Questões • Unificação • Regras em Prolog • Conjunções • Disjunções

2

Page 3: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Introdução

• A programação que usa uma forma de logica simbólica como linguagem é conhecida como programação lógica.

• Linguagens baseadas na logica simbólica são chamadas linguagens de programação lógicas ou linguagens declarativas.

• A primeira linguagem de programação lógica foi a Planner, a qual permitia a invocação orientada a padrões de planos procedimentais de asserções e de objetivos.

• A linguagem Planner usava estruturas de controle de backtracking, de tal forma que apenas um único caminho computacional tinha que ser armazenado por vez.

• Em seguida, o Prolog foi desenvolvido como uma simplificação do Planner que permitia a invocação orientada a padrões apenas a partir de objetivos (também baseado em backtracking).

3

Page 4: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Introdução

• Em LPs imperativas um programa é composto por uma sequência de comandos que representam as atividades computacionais que serão executadas.

• O programador deve portanto especificar claramente como realizar o processamento desejado, ou seja, como é o algoritmo.

• Em LPs lógicas um programa consiste na definição de relações lógicas que devem ser satisfeitas pela solução procurada.

• A busca por uma solução acontece automaticamente através de regras de inferência. 4

Page 5: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Introdução

• Programar em uma LP lógica consiste em:

• Declarar fatos primitivos sobre um domínio;

• Definir regras que expressam relações entre os Fatos de um domínio;

• Fazer perguntas sobre um domínio.

• O processo de dedução através do qual encontram-se respostas às perguntas é executado automaticamente pelo sistema.

5

Page 6: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Exemplo

1. Aves botam ovos.

2. Mamíferos não botam ovos.

3. Baleias são mamíferos.

4. Baleias botão ovos?

• Não

5. Quem bota ovos?

• Aves 6

Page 7: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Cálculo de Predicados

• Uma proposição pode ser imaginada como uma declaração lógica que pode ou não ser verdadeira .

• A lógica formal foi desenvolvida para fornecer um método para descrever proposições, com a meta de permitir que essas proposições fortemente declaradas fossem ser verificadas quanto a validade.

• A lógica simbólica pode ser usada para as três necessidades básicas da lógica formal: • expressar proposições,

• expressar as relações entre essas ,

• descrever como novas proposições podem ser inferidas de outras que se presumem verdadeiras.

7

Page 8: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Proposições

• Os objetos nas proposições de programação lógica são representados por termos simples, constantes ou variáveis.

• Uma constante é um símbolo que representa um objeto.

• Uma variável é um símbolo que pode representar diferentes objetos.

• As proposições mais simples, são chamadas de proposições atômicas.

• Exemplo: • João é homem • Maria é homem

• As proposições compostas têm duas ou mais proposições atômicas,

ligadas por conectores lógicos ou operadores.

8

Page 9: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Conectores Lógicos

• Os nomes, os símbolos e os significados dos conectores lógicos do cálculo de predicados são os seguintes:

9

Page 10: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Variáveis

• Variáveis podem aparecer em proposições, mas somente quando introduzidas por símbolos especiais, chamados quantificadores.

• O cálculo de predicados inclui dois quantificadores, conforme descreveremos abaixo:

• Sendo x uma variável e P uma proposição;

• Universal: ∀ x P (para todo X, P é verdadeiro)

• Existencial: ∃ x. P (Existe um valor de X tal que P seja verdadeiro)

10

Page 11: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Exemplo

• ∀ X. (homem (X) → humano(X))

• Significa que para qualquer valor de X, se X for um homem, X é humano.

• > ∃ X. (pai (João, X) ^ mulher(X))

• Significa que existe um valor de X tal que João é o pai de X e X é uma mulher; em outras palavras João tem uma filha.

11

Page 12: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Tipos de Cláusulas

• Fatos e Regras

• Fato: declaração de uma verdade incondicional

• Regra: condição que deve ser satisfeita para que uma declaração seja considerada verdadeira

12

Page 13: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Fatos

• Uma forma de declarar um fato como “uma leão é um mamífero” é: • mamifero (leão).

• Para representar o fato “urso come peixe” podemos escrever: • comer(urso, peixe).

• Repare que este fato é deferente de “peixe come urso”: • comer(peixe, urso).

• Nas expressões acima comer é o predicado do fato, representando uma relação entre os argumentos.

13

Page 14: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Fatos

• Outros exemplos de fatos

• campeao (palmeiras).

• vender (marcelo, carro, carlos).

• chuva.

• Esta sintaxe não corresponde a invocação de uma função!!!

14

Page 15: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Regras

• A declaração de regras (axiomas) em LPs lógicas segue um padrão conhecido como cláusulas de Horn:

H ← 𝐴1, 𝐴2, ..., 𝐴𝑛

se todos os 𝐴𝑖 são verdadeiros, então H é verdadeiro.

• Na expressão acima, H é denominado a cabeça da cláusula e 𝐴1, 𝐴2, ..., 𝐴𝑛 é o seu corpo.

• Através de regras pode-se estabelecer relações 15

Page 16: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Resolução

• Para descobrir novas relações uma LP lógica utiliza um processo conhecido como resolução.

• O corpo de uma cláusula é equivalente a sua cabeça, e ambos podem ser substituídos livremente em outras cláusulas para formar novas regras.

C ←A,B

D ← C

D ← A,B

• Através do processo de resolução uma LP lógica é capaz de provar a validade de proposições.

16

Page 17: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Banco de Dados

• O conjunto de fatos e relações contidos em um programa lógico é denominado banco de dados, e representa o conhecimento sobre um ou mais domínios.

• O objetivo de um programa lógico é inferir e validar novos fatos ou relações a partir do banco de dados.

17

Page 18: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Prolog

• Foi desenvolvida no início da década de 70 para ser usada na prova de teoremas.

• Ainda hoje é a mais popular e principal LP lógica.

• É bastante utilizada em sistemas especialistas.

• Em Prolog um programa é composto por fatos e regras. A partir destes podemos fazer consultas sobre objetos e suas relações.

18

Page 19: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Fatos em Prolog

• Fatos em Prolog são representados através de átomos ou estruturas.

• Átomos são strings que começam sempre com letra minúscula:

• esta_chovendo

• dinheiro

• joao

19

Page 20: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Fatos em Prolog

• Estruturas são átomos seguidos de uma lista de argumentos entre parênteses:

• pred (arg1, arg2, ..., argN) .

• onde:

• pred – nome de um predicado

• arg1 ..., argN – argumentos

• N – número de argumentos (aridade)

• . – final sintático de qualquer cláusula Prolog

20

Page 21: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Fatos em Prolog

• Os argumentos de uma estrutura podem ser átomos, estruturas, variáveis e números.

• Exemplos:

• caro(ouro).

• amigo(joão, maria).

• arvore_bin(valor1, arvore_bin(valor2, valor3)).

• quantidade(100).

• Estruturas representam relações entre os argumentos, ou seus predicados.

21

Page 22: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Variáveis

• Em LPs imperativas variáveis são instanciadas através de operações explícitas de atribuição.

• Em LPs lógicas variáveis geralmente são instanciadas implicitamente pelo sistema durante o processo de resolução.

• São usadas basicamente para extrair informações do banco de dados, e para expressar relações entre fatos.

• Variáveis em Prolog são representadas por strings que começam com uma letra maiúscula.

22

Page 23: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Exemplo

offroad(X):- carro(X),tracao4x4(X), suspensaoReforcada(X).

frio(groelandia).

?-frio(X).

x=groelandia.

23

Page 24: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Questões

• Questões são representados por fatos precedidos por -?.

• ?-gostar(bruno, ana).

• Informalmente: Bruno gosta de Ana?

• Formalmente: É possível provar a partir dos fatos conhecidos pelo programa que a relação gostar(bruno, ana) é verdadeira?

24

Page 25: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Exemplos

mamifero (cachorro)

mamifero (gato)

?-mamifero(cachorro).

yes

?-mamifero(galinha).

no

?-mamifero(X)

X = cachorro;

X = gato;

yes

25

Page 26: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Unificação

• Para tentar provar um fato Prolog precisa estabelecer a equivalência entre fatos.

• Dois fatos equivalentes são ditos unificáveis.

• Dois átomos são unificáveis apenas se são idênticos.

• Duas estruturas são unificáveis se o seu predicado é idêntico, e se seus argumentos são unificáveis .

26

Page 27: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Unificação

• Uma variável é unificável a qualquer coisa.

• Durante o processo de resolução, uma variável é instanciada com um valor que permite a sua unificação com um símbolo correspondente de um outro fato.

• O símbolo = em prolog representa unificação.

27

Page 28: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Exemplos

fruta(morango).

?-fruta(X).

X = morango → X foi unificada com “morango”

gostar(joao, maria).

?-gostar(joao, X).

X = maria → X foi unificada com “maria”

?-X=sol.

X = sol → X foi unificada com “sol”

?-sol=sol.

yes →“sol” foi unificado com “sol”

28

Page 29: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Regras em Polog

• Regras são representadas como cláusulas de Horn seguindo a sintaxe:

• pred(X1,...,Xn):-pred1(X1,...,Xn),...,predn(X1,...,Xn).

se os predicados 1 a n são verdadeiros para as variáveis Xi, então o predicado pred é verdadeiro para as variáveis Xi.

• A variável representa portanto o símbolo para o qual a regra é verdadeira.

29

Page 30: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Exemplos

pai(joao,joaquim).

pai(joaquim,manuel).

avo(X,Y):-pai(Z,Y),pai(X,Z).

?-avo(joao,Z).

Z=manuel

?-avo(joao,manuel).

yes.

30

Page 31: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Conjunções

• Conjunções permitem a especificação de questões com múltiplas condições que devem ser satisfeitas simultaneamente.

• Conjunções são representadas por uma vígula ( , ).

• Exemplo:

• ?- localizacao(X,cozinha), comida(X), gostoso(X).

Existe alguma comida gostosa na cozinha? 31

Page 32: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20122_LinguagensLogicas.pdf · •Conectores Lógicos •Variáveis •Tipos de Cláusulas •fatos

Disjunções

• Disjunções permitem a especificação de questões com múltiplas condições na qual ao menos uma delas deve ser satisfeita.

• Disjunções são representadas por um ponto-e-vírgula ( ; ).

• Exemplos:

• ?-amigos(X,Y); parentes(X,Y).

inverno(X):- nevando(X); gelado(X).

É inverno se está nevando ou está gelado. 32