linguagens lógicas -...

42
Linguagens Lógicas Alunos: Josiane Novais Cláudio Moisés

Upload: phunglien

Post on 01-Dec-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Linguagens

Lógicas Alunos: Josiane Novais

Cláudio Moisés

Page 2: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Introdução

• Declarativos em vez de baseados em procedimentos

• Sintaxe diferente das linguagens imperativas e funcionais.

• Semântica é pouco semelhante a linguagem imperativa.

Page 3: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

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

Page 4: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Lógica Formal

Page 5: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Cálculo de PredicadosRevisão

• A lógica proposicional tem como objetivo modelar o raciocínio humano, partindo de frases declarativas (proposições).

• Uma proposição é toda afirmação que pode ser apenas verdadeiro ou falso:

• Ex: Hoje é segunda-feira.

• Como vai você?

• Ele é um ator.

Page 6: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Operadores Lógicos

NOME SÍMBOLO EXEMPLO SIGNIFICADO

Negação ¬ ¬ A não A

Conjunção ∧ A ∧ B A e B

Disjunção ∨ A ∨ B A ou B

Equivalência ↔

A ↔ B A é equivalente a

B

Implicação →

A → B

A←B

A implica B

B implica A

Page 7: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Lógica Proposicional Revisão

• Na lógica de predicados, usamos regras de inferência para

chegarmos a teses a partir das hipóteses.

• Se uma tese tiver sido demonstrada como consequência

de determinada hipótese, então, em uma interpretação na

qual a hipótese seja verdadeira, a tese também será

verdadeira.

Page 8: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Lógica ProposicionalRevisão

• Variáveis • Variáveis podem aparecer em proposições, mas somente quando

introduzidas por símbolos especiais, os quantificadores;

• Dois quantificadores no calculo de predicado:

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

• Universal: ∀ X P

• Para todo X, P e verdadeiro;

• Existencial: ∃ X . P

• Existe um valor de X tal que P seja verdadeiro;

• Ponto (.), simplesmente separa a variável da proposição;

Page 9: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Exemplo

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

• Significa que para qualquer valor de X, se

X for uma mulher, X e humano;

• ∃ X . ( mãe( mary, X ) → homem( X ))

• Significa que existe um valor de X tal que

mary e mãe de X e X e um homem (mary

tem um filho);

Page 10: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Tipos de Cláusulas

• fatos e regras • Fato : declaração de uma verdade incondicional

• Regra: condição que deve ser satisfeita para que um

declaração seja considerada verdadeira

Page 11: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Fatos

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

• gosta(bruno, ana) Para representar o fato “Bruno gosta de Ana” podemos escrever:

• gosta(ana, bruno) Repare que este fato é diferente de “Ana gosta de Bruno”:

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

Page 12: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Regras

• A declaração de regras (axiomas) em LPs lógicas segue

um padrão conhecido como cláusulas de Horn:

• H←A1,A2,..., An

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

• Na expressão acima, H é denominado a cabeça da

cláusula e A1,A2,..., An é o seu corpo.

• Através de regras pode-se estabelecer relações entre fatos.

Page 13: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Exemplo

• Sem-cabeça: pai (pedro, ana).

• Pedro é pai de Ana.

• Com-cabeça: pai(pedro, ana):-

mãe(maria,ana), casada(maria, pedro).

• Pedro é pai de Ana, se Maria for mãe

de Ana e Maria for casada com Pedro.

Page 14: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

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.

Page 15: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

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.

Page 16: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

História do Prolog

• O nome Prolog para a linguagem concreta foi escolhido

por Philippe Rousseal como uma abreviação de

“Programmation Logique”. Foi criada em meados de

1972 por Alain Colmerauer e Philippe Rousseal, baseados

no conceito de Robert Kowalski da interpretação

procedimental das cláusulas de Horn.

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

• É bastante utilizada em sistemas especialistas.

Page 17: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

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 18: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

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.

Page 19: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

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, arg2, ...,argN – são os argumentos

• N - número de argumentos

• (.) - final sintático de qualquer cláusula Prolog

Page 20: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Fatos em Prolog

• Os argumentos de uma estrutura podem ser

átomos, estruturas, variáveis e números.

• Exemplos:

caro(diamente).

amigo(joana, patricia).

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

quantidade(24).

Page 21: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

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.

Page 22: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Exemplos

pai(joao,joaquim).

pai(joaquim,manuel).

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

?-avo(joao,Z).

Z=manuel

?-avo(joao,manuel).

yes.

frio(inverno).

?-frio(X).

x=inverno.

Page 23: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Questões

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

• Em Prolog se fornece fatos e regras para uma base de dados; então se executam consultas ou (queries) a essa base de dados. A unidade básica do Prolog é o predicado, que é postulado verdadeiro. Um predicado consiste de uma cabeça e um número de argumentos.

Page 24: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Exemplos

animal (cachorro).

animal (gato).

?-animal(cachorro).

yes

?-animal(X).

X = cachorro;

X = gato.

Page 25: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

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 .

Page 26: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

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.

Page 27: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Exemplos

fruta(manga).

?-fruta(X).

X = manga X foi unificada com “manga”

gostar(bruno,ana).

?-gostar(bruno,X).

X = ana X foi unificada com “ana”

?-X=sol.

X=sol X foi unificada com “sol”

?-sol=sol.

Yes “sol” foi unificado com “sol”

Page 28: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Regras em Prolog

• Uma regra é a descrição de um predicado através de uma implicação

Exemplo: “um animal é presa se é comido por outro animal”.

come(Y,X) ^ animal(X) -> presa(X)

em Prolog:

presa(X) :- come(Y,X), animal(X)

Page 29: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

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írgula ( , ).

• Exemplo:

comida(macarrao).

gostoso(macarrao).

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

Existe alguma comida gostosa na cozinha?

X= macarrao.

Page 30: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Disjunção

• 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.

Page 31: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Fluxo de Controle

• Prolog possui um fluxo de controle implícito através do

qual busca responder uma questão.

• Este fluxo é determinístico, ou seja segue sempre uma

mesma ordem:

• O banco de dados é percorrido sequencialmente na ordem em

que os fatos\regras foram declarados.

• Para cada predicado correto encontrado, os argumentos são

testados em ordem.

• Para cada regra, as condições são testadas sempre da esquerda

para a direita.

Page 32: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Exemplo

Exemplo

tropical(caribe). (1)

tropical(havai).

praia(havai).

praia(caribe). (2)

bonito(havai).

bonito(caribe). (3)

paraiso_tropical(X):-tropical(X), praia(X), bonito(X).

?-paraiso_tropical(X).

X=caribe;

X=havai;

X=caribe.

Page 33: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Fluxo de Controle

• Variáveis são instanciadas implicitamente com valores

que permitem a unificação da estrutura.

• Assim que uma associação válida for encontrada, os

valores com os quais as variáveis foram instanciadas são

impressos.

• Apenas a primeira associação válida é impressa.

• Para que todas as associações válidas possam ser

encontradas basta teclar ( ; ) e cada resultado será

apresentado por Prolog.

Page 34: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Fluxo de Controle Implícito

• Para provar questões mais complexas Prolog pode ser

obrigado a testar várias vezes a mesma condição,

instanciando uma mesma variável com diferentes valores.

• A sequência com que os fatos e regras são testados

portanto não é necessariamente linear, e segue um

caminho semelhante a uma árvore.

• O processo de retornar para uma condição e testá-la

novamente é denominado backtracking.

Page 35: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Exemplos

surf(vitor).

surf(renan).

surf(teco).

skate(vitor).

skate(teco).

moto(renan).

moto(teco).

radical(X):-surf(X),skate(X),moto(X).

?-radical(X).

X = teco.

Page 36: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Igualdade

• Em Prolog existem quatro operadores que representam

igualdade:

• 1. X == Y - Relação de identidade. É verdadeiro apenas se X

e Y são idênticos (representam a mesma variável ou o mesmo

símbolo).

• 2. X = Y - Unificação. É verdadeiro se X é unificável com Y.

• 3. X =:= Y - Significa “calcule X, calcule Y e teste sua

igualdade”. X e Y devem ser expressões aritméticas.

• 4. X is Y - Significa “calcule Y e unifique X com Y”. Y deve

ser uma expressão aritmética.

Page 37: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Aritmética

• O operador is é o mais utilizado em operações aritméticas, e força a instanciação de variáveis.

• Exemplos ?- X is 1+2 X = 3 ?-1+2 is 4-1 No fib(0,1). fib(1,1). fib(X,R):- A is X-1, B is X-2, fib(A,R1), fib(B,R2), R is R1+R2.

Page 38: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Listas

• Prolog suporta uma notação especial para representar

listas. Uma lista genérica tem a seguinte sintaxe:

[elem1, elem2,..., elemN]

• Para manipular uma lista pode-se utilizar a notação [H|T]

onde H representa o primeiro elemento da lista e T os

demais elementos.

member(X, [X|T]).

member(X, [H|T]):- member (X, T).

last(X,[X]).

last(X, [H|T]):- last (X, T).

Page 39: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Predicados da Linguagem

• asserta(X) - adiciona a cláusula X no início

do banco de dados.

• assertz(X) - adiciona a cláusula X no final

do banco de dados.

• retract(X) - remove a cláusula X do banco

de dados.

• call(X) – tenta satisfazer a cláusula X.

Page 40: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Referências

• Sebesta, Robert W. Conceitos de linguagens de

Programação/ Robert w. Sebesta; trad. José

Carlos Barbosa dos Santos. – 4.ed. - . Porto

Alegre: Bookman, 2000,

• http://www.mct.uminho.pt/disciplinas/fmd_tsi/Lo

gica.pdf

• http://www.4shared.com/get/3UdAU7A7/LGICA

_COMPUTACIONAL_-_Logica_F.html

Page 41: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Dúvidas

Page 42: Linguagens Lógicas - ppgsc.ufrn.brppgsc.ufrn.br/~rogerio/material_auxiliar/5_CLP_ling_logicas_teoria.pdf · NOME SÍMBOLO EXEMPLO SIGNIFICADO ... •Duas estruturas são unificáveis

Obrigado!!!