2013 – Luiz Mauricio Nascimento Silva
Graduando em Ciência da Computação
UESC – Universidade Estadual de Santa Cruz
Introdução a L.P lógica
 Programação lógica é um tipo de programação a qual
utiliza uso de lógica matemática em sua essência.
 As linguagens de programação lógicas ou linguagens
declarativas, são bem diferentes das outras tanto a sua
semântica qual a sua sintaxe.
 Por exemplo na programação imperativa, nós
descrevemos um procedimento para que assim sair um
resultado a partir dele, na lógica, nós descrevemos o
resultado para assim obte-lô.
Introdução a L.P lógica




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
exemplo
 1.Galinhas botam ovos.
 2.Mamíferos não botam ovos.
 3.Vacas são mamíferos.
 4.Vacas botão ovos?
 Não
 5.Quem bota ovos?
 Galinhas
Lógica Formal
 A lógica formal foi desenvolvida para fornecer um método
para descrever proposições, e verificar quanto a sua
validade.
 Uma proposição pode ser imaginada como uma
declaração lógica que pode ou não ser verdadeira .
 A lógica simbólica pode ser usada para as três
necessidades básicas da lógica formal:
1 - expressar proposições.
2 - expressar as relações entre elas.
3 - descrever como novas proposições podem ser inferidas
de outras que se presumem verdadeiras.
Operadores lógicos
Variáveis
 Variáveis podem aparecer em proposições, mas somente
quando introduzidas por símbolos especiais, os
quantificadores;
 Universal: ∀ X P
Sendo X uma variável e P uma proposição;
Para todo X, P e verdadeiro;
 Existencial: ∃ X P
Sendo X uma variável e P uma proposição;
Existe um valor de X tal que P seja verdadeiro;
 Ponto (.), simplesmente separa a variável da proposição;
Variáveis
 ∀ X . ( mulher( X ) → humano( X ))
Significa que para qualquer valor de X, se X for uma
mulher, X é 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);
Cláusulas
 Existem 2 tipos de clausulas. Fatos e regras:
 Fatos: declaração de uma verdade incondicional.
Ex: José gosta de Maria
gosta(José, Maria)
gosta(Maria, José)
 Nas expressões acima gostar é o predicado do fato,
representando uma relação entre os argumentos
Cláusulas
 Regra: condição que deve ser satisfeita para que um
declaração seja considerada verdadeira.
 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.
cláusulas
 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.
Ex:
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.
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.
Historia 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.
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
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:
Ex:
 caro.
 diamante.
 maria.
Estruturas em Prolog
 Estruturas são átomos seguidos de uma lista de
argumentos entre parênteses:
pred (arg1, arg2, ..., argN).
onde:
arg1, arg2, ...,argN – são os argumentos
N - número de argumentos
(.) - final sintático de qualquer cláusula Prolog
Estruturas em Prolog
 Os argumentos de uma estrutura podem ser átomos,





estruturas, variáveis e números.
Exemplos:
limpo(sapato).
casado(X, Y).
arvore_bin(valor1, arvore_bin(valor2, valor3)).
valor(30).
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.
Variáveis
 EX:
pai(joao,joaquim).
pai(joaquim,manuel).
avo(X,Y):- pai(X,Z),pai(Z,Y).
?-avo(joao,Z).
Z=manuel
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 .
Unificação
 Uma variável é unificável a qualquer coisa.
 O símbolo = em prolog representa unificação
 Ex:
fruta(manga).
?-fruta(X).
X = manga; X foi unificada com “manga”
Regras em prolog
 Uma regra é a descrição de um predicado através de uma
implicação
 Ex: “um animal é presa se é comido por outro animal”.
come(Y,X) ^ animal(X) -> presa(X)
em Prolog:
presa(X) :- come(Y,X), animal(X)
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(carne).
gostoso(carne).
?- localizacao(X,cozinha):- comida(X), gostoso(X).
Existe alguma comida gostosa na cozinha?
X= carne.
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 ( ; )
 Ex:
inverno(X):- nevando(X); gelado(X).
É inverno se está nevando ou está gelado.
Download

Linguagens Lógicas - Programa de Pós