Linguagens Lógicas
Aluno: Victor Rocha
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Exemplo
offroad(X):- carro(X),tracao4x4(X), suspensaoReforcada(X).
frio(groelandia).
?-frio(X).
x=groelandia.
23
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
Exemplos
mamifero (cachorro)
mamifero (gato)
?-mamifero(cachorro).
yes
?-mamifero(galinha).
no
?-mamifero(X)
X = cachorro;
X = gato;
yes
25
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
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
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
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
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
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
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
Top Related