Vous êtes sur la page 1sur 35

Introduo a

Programao em Lgica e Prolog


Jacques Robin
CIn-UFPE
Aula I/II
Roteiro da aula
Rpida reviso de Lgica de Predicados e de
Lgica de 1a Ordem
Programao em Lgica & Prolog
Reviso rpida
Lgica proposicional: sintaxe
Frmula Frmula-Atmica
| (Frmula)
| ( Frmula,
| Frmula Conectivo Frmula

Frmula-Atmica Constante

Conectivo v | . | |
Constante Wumpus | Agente | Flecha | ...


Tambm chamada de lgica clssica de ordem 0
Lgica proposicional:
Engajamentos
Engajamento Ontolgico:
Trata da realidade, d uma descrio/representao do mundo
Na LP
S existem no mundo fatos, cada um representado por uma
constante simblica atmica
A nica estruturao modular do conhecimento possvel atravs de
conectivos lgicos
Os fatos dizem respeito apenas a propriedades de instncias
particulares de entidades ou situaes
Engajamento Epistemolgico:
Trata dos valores-verdade (crenas)
Na LP
Cada fato pode ser ou (completamente) verdadeiro ou
(completamente) falso
Lgica proposicional: vantagens e limitaes
Vantagens:
Existem mecanismos de inferncia eficientes que deduzem o
valor verdade de uma frmula em tempo (e espao) linear em
funo do nmero de constantes da frmula
Existem tambm mecanismos de inferncia eficientes para
abduo (diagnstico) e induo (aprendizagem)
Desvantagens:
Em domnios complexos, exploso combinatria da base de
conhecimento
No permite:
representar relaes genricas entre conceitos representados em
inteno
estruturao modular do conhecimento
representao de conhecimento em ambientes dinmicos ou no
deterministas ou contnuos
Limitaes da lgica proposicional:
exemplo do mundo do Wumpus
Problema: existem proposies demais a considerar
ex.: a regra: no avance se o Wumpus estiver em frente a voc
s pode ser representada com um conjunto de 64 regras.
sero necessrias milhares de regras para definir um agente
eficiente, e o processo de inferncia ficar muito lento.
Lgica dos predicados de 1
a
ordem (LPO):
sintaxe
Frmula Frmula-Atmica
| (Frmula)
| ( Frmula
| Quantificador Varivel, ... Frmula,
| Frmula Conectivo Frmula

Frmula-Atmica Predicado(Termo,...) | Termo = Termo

Termo Funo(termo,...)
| Constante
| Varivel

Conectivo v | . | |
Quantificador | - | -!
Constante Wumpus | Agente | Flecha | ...
Varivel x | y | wumpus | agente | ...
Predicado Adjacente | Vivo | ...
Funo Em | Brisa | ...
Motivao para usar LPO
LPO satisfaz em grande parte os seguintes critrios
adequao representacional ( > L Proposicional)
para representar o mundo (expressividade)
adequao inferencial ( = L Proposicional)
para fazer inferncia
eficincia aquisicional ( = L Proposicional)
facilidade de adicionar conhecimento
modularidade ( > L Proposicional)
Embora tenha problemas com
legibilidade e eficincia inferencial (tempo)
Engajamento ontolgico
Na Lgica Proposicional, o mundo consiste em fatos.
Na Lgica de Primeira Ordem, o mundo consiste em:
objetos: coisas com identidade prpria
ex. pessoas, casas, Wumpus, caverna, etc.
relaes entre esses objetos
ex. irmo-de, tem-cor, parte-de, adjacente, etc.
propriedades, que distinguem esses objetos
ex. vermelho, redondo, fundo, fedorento, etc.
funes: um ou mais objetos se relacionam com um nico
objeto
ex. dobro, distncia, pai_de, etc.
Engajamento ontolgico
Alm disso, a LPO exprime:
fatos sobre todos objetos do universo ()
fatos sobre objetos particulares (-)
Exemplos:
1 + 1 = 2
objetos: 1, 2; relao: =; funo: +.
Todas as Cavernas adjacentes ao Wumpus so fedorentas.
objetos: cavernas, Wumpus; propriedade: fedorentas; relao:
adjacente.
A LPO no faz engajamentos ontolgicos para coisas
como tempo, categorias, e eventos.
Sua neutralidade favorece flexibilidade
Engajamento epistemolgico
A LPO tem o mesmo engajamento epistemolgico que a
lgica proposicional
tudo verdadeiro ou falso
Para tratar incerteza
Outras lgicas (de n-valoradas, fuzzy, para-consistente, etc.)
Probabilidade
Lgica PO: vantagens
o formalismo de referncia para representao
de conhecimento, o mais estudado e o melhor
formalizado
Satisfaz em grande parte a maioria dos requisitos de
um formalismo de representao do conhecimento
Supera limitaes da lgica proposicional com respeito a
domnios grandes, relacionais, dinmicos e contnuos
Lgica PO: limitaes
Legibilidade e poder de perfrase
Para frmulas arbitrrias no existe acar sinttico
facilitando legibilidade por especialista no domnio do problema
e no em lgica
Eficincia inferencial:
Deduo genrica da LPO com aritmtica formalmente
provada apenas semi-decidvel
Mesmo sem garantia, deduo automtica em LPO sem
nenhuma restrio sinttica, no pior caso, exponencial
Mesmo problema para abduo e induo
No entanto, existem muitas mquina de inferncia (dedutivas,
abdutivas e indutivas) implementadas que so eficientes:
Empiricamente, no caso mdio
para subconjuntos sintticos quase completos da LPO
Linguagem Eng. Ontolog. Eng. Epistem.
L. Proposicional Fatos V, F, ?
LPO Fatos, objetos,
relaes
V, F, ?
L. Temporal Fatos, objetos,
relaes, tempo
V, F, ?
Probabilidade Fatos Grau de crena:
0-1
L. Difusa Grau de verdade
sobre fatos,
objetos, relaes
Grau de crena:
0-1


Engajamentos de vrias linguagens
O que Prolog?
Primeira e mais divulgada linguagem do paradigma da
Programao em Lgica (PL)
Operacionalizao simples, prtica e eficiente da
metfora da PL
PL unifica:
Engenharia de Software (especificao formal, linguagens de
programao)
Inteligncia Artificial (IA) (raciocnio com Formalismos de
Representao do Conhecimento (FRCs))
Banco de Dados -- Dedutivos (BDDs)
Teoria Lgica (TL) das provas
Metfora da programao em lgica

Teoria Lgica = Programa = BD dedutivo (BDD) = Base de
Conhecimento (BC)
Programar = apenas declarar axiomas e regras
Axiomas da TL:
fatos da BC
parte extensional do BDD
dados explcitos de um BD tradicional
Regras da TL (e da BC):
parte intencional do BDD
Teoremas da TL:
deduzidos a partir dos axiomas e das regras
dados implcitos do BDD
Aplicaes da programao em lgica
Inteligncia Artificial
Representao do
conhecimento
Sistemas especialistas
Provadores de teoremas
Aprendizagem de mquina
Processamento de linguagem
natural
Sistemas multi-agentes
Robtica
Sistemas Distribudos e
Internet
Comrcio eletrnico
Recuperao, filtragem e
extrao de informao
Engenharia de Software
Prototipagem rpida de
software complexos
Especificaes formais
executveis
Programao por resoluo de
restries
Programao multi-paradigma
de alto-nvel
Banco de Dados
BD dedutivos e DOO
Minerao de Dados e
Descoberta de Conhecimento
Integrao de Dados e
Interoperabilidade
Programao procedimental
x programao declarativa
1. Escolher linguagem de
especificao formal (LE)
2. Especificar formalmente os
requisitos na LE
3. Escolher linguagem de
programao (LP)
4. Codificar estruturas de
dados na LP
5. Codificar passo a passo
estruturas de controle na LP
6. Escolher/escrever
compilador da LP
7. Executar programa
Escolher FRC (1,3)
Declarar estruturas de
conhecimento no FRC (2,4)
Escolher/escrever motor de
inferncia para FRC (6)
Consultar base de
conhecimento sobre verdade
de um fato (7)
foi declarado?
pode ser deduzido?
reposta:
:booleana (L0, L1)
-: instanciao de variveis
(L1)


Reviso de LPO: mecanismo de inferncia
completo (para verificao)
Frmula da
lgica de
1a. ordem
Frmula na
forma
normal
Frmula
instanciada
ou False
Converso para forma normal
Prova por refutao
Resoluo Unificao
Demodulao
Refutao: aplicao repetitiva da regra de resoluo
Problema: a cada passo, como escolher o par de frmulas a resolver?
Reviso de LPO:
forma normal e clusulas de Horn
Def:

Thm:
Clusula de Horn uma formula de L1:
em forma normal implicativa, com uma concluso nica e positiva
ie, da forma: P
1
. ... . P
n
C
Muitas mas nem todas as formulas de L1 tem conjunto
equivalente de clusulas de Horn, cex:

Lgica de Horn:
F N L N L F
I
e - e ,
1 , 1
{ }
atmicas formulas so p p j i onde
c c p p N L N L
j i
m n
I
, ,
/
1 1 1 1

v v . . = e =
) , ( ) ( ) ( , Y X kills Y animal X r animalLove Y X .
{ }
n n
H
h h f Horn de clasulas h h L f L . . - e =
1 1 1 1
, , /
Reviso de LPO: refutao,
unificao e substituio
Motivao de provas por refutao:
KB P (KB P)
(KB v P)
(KB . P)
(KB . P) v False
(KB . P) False
Substituio de variveis de uma formula f:
conjunto de pares Var/const ou Var1/Var2
Unificao de 2 formulas f e g:
substituio S das variveis de f e g tal que S(f)=S(g)
2 resultados:
S
r=S(f)=s(g)



Reviso de LPO: unificao posicional

Exemplos:
unif(conhece(joao,X),conhece(Y,leandro)) =
{X/Leandro,Y/joao}
unif(conhece(joao,X),conhece(X,leandro) = fail
unif(conhece(joao,X),conhece(Y,mae(Y)) =
{Y/joao, X/mae(joao)}
unif(conhece(joo,X),conhece(Y,Z)) = {Y/Joo, X/Z}, ou
{Y/joo, X/Z, W/zelda} ou {Y/joo, X/joo, Z/joo} ...
Unificador mais geral: com menor nmero de variveis
instanciadas
Substituio mnima: com menor nmero de pares Var/const


Reviso de LPO: regra de resoluo

simples:

ex.:

geral:
'
) ' ) ( ( ) ) , ( ( ) ( ) (
r
r r q p unif r p q T

= . = . . u u
)) ' ' ' ' ' ' (
) ' ' ' ' ' ' ((
) ' ) ( (
) ) , ( (
) (
) (
1 1 1 1
1 1 1 1
1 1
1 1
l i i n
m j j k
j i
n m j
l i k
q q q q r r
p p p p s s
f f f
p q unif
r r p p p
q q q s s
v v v v v
. . . .
= .
= .
v v . . .
v v . .
+
+




u
u
{ } a X
a animal
X animal X dog a dog
/
) (
)) ( ) ( ( ) (
=

.
u
Clusulas Prolog e Clusulas de Horn
Fatos Prolog:
clusulas de Horn com premissa nica T implcita
ex: C. <=> T => C
Regras Prolog:
outras clusulas de Horn
ex: C :- P1, ... ,Pn. <=> P1 & ... & Pn => C
Premissas de clusulas com a mesma concluso so
implicitamente disjuntivas:
ex: {C :- P1, ... ,Pn., C :- Q1, ... ,Qm}
<=> (P1& ... & Pn) v (Q1 & ... & Qm) => C
Escopo das variveis = uma clusula
West criminoso? : em LPO

Requisitos em ingls
1. It is crimimal for an American to
sell weapons to an hostile country
2. Nono owns missiles
3. Nono acquires all its missiles from
West
4. West is American
5. Nono is a nation
6. Nono is an enemy of the USA
0. Is West a crimimal?
Em lgica da 1
a
ordem
1. P,W,N american(P) . weapon(W) .
nation(N) . hostile(N) .
sells(P,N,W) criminal(P)
2. - W owns(nono,W) . missile(W)
3. W owns(nono,W) . missile(W)
sells(west,nono,W)
7. W missile(W) weapon(W)
8. N enemy(N,america) hostile(N)
4. american(west)
5. nation(nono)
6. enemy(nono,america)
9. nation(america)

West criminoso?
em forma normal
Em lgica da 1
a
ordem
1. P,W,N american(P) . weapon(W)
. nation(N) . hostile(N) .
sells(P,N,W) criminal(P)
2. - W owns(nono,W) . missile(W)
3. W owns(nono,W) . missile(W)
sells(west,nono,W)
7. W missile(W) weapon(W)
8. W enemy(N,america)
hostile(N)
4. american(west)
5. nation(nono)
6. enemy(nono,america)
9. nation(america)
Em formal normal
american(P) . weapon(W) .
nation(N) . hostile(N) .
sells(P,N,W) criminal(P)
owns(nono,m1)
missile(m1)
owns(nono,W) . missile(W)
sells(west,nono,W)
missile(W) weapon(W)
enemy(N,america) hostile(N)
american(west)
nation(nono)
enemy(nono,america)
nation(america)
West criminoso? em Prolog
Em Lgica de Horn:
american(P) . weapon(W) .
nation(N) . hostile(N) .
sells(P,N,W) => criminal(P)
owns(nono,m1)
missile(m1)
owns(nono,W) . missile(W)
sells(west,nono,W)
missile(W) weapon(W)
enemy(N,america) hostile(N)
american(west)
nation(nono)
enemy(nono,america)
nation(america)
Em Prolog:
criminal(P) :- american(P), weapon(W),
nation(N), hostile(N),
sells(P,N,W).
owns(nono,m1).
missile(m1).
sells(west,nono,W) :- owns(nono,W),
missile(W).
weapon(W) :- missile(W).
hostile(N) :- enemy(N,america).
american(west).
nation(nono).
enemy(nono,america).
nation(america).
West criminoso? busca
criminal(P) :- american(P), weapon(W),
nation(N), hostile(N),
sells(P,N,W).
owns(nono,m1).
missile(m1).
sells(west,nono,W) :- owns(nono,W),
missile(W).
weapon(W) :- missile(W).
hostile(N) :- enemy(N,america).
american(west).
nation(nono).
enemy(nono,america).
nation(america).
criminal(west)? <- yes.
american(west)? -> yes.
weapon(W)? <- W = m1.
missile(W)? -> W = m1.
nation(N)? -> N = nono.
hostile(nono)? <- yes.
enemy(nono,america)? -> yes.
sells(west,nono,m1)? <- yes.
owns(nono,m1)? -> yes.
missile(m1)? -> yes.
West criminoso? backtracking
criminal(P) :- american(P), weapon(W),
nation(N), hostile(N),
sells(P,N,W).
owns(nono,m1).
missile(m1).
sells(west,nono,W) :- owns(nono,W),
missile(W).
weapon(W) :- missile(W).
hostile(N) :- enemy(N,america).
american(west).
nation(america).
enemy(nono,america).
nation(nono).
criminal(west)? <- yes.
american(west)? -> yes.
weapon(W)? <- W = m1.
missile(W)? -> W = m1.
nation(N)? -> N = america.
hostile(america)? <- no.
enemy(america,america)? -> no.
backtrack: nation(N),
N \ {america}? -> N = nono.
hostile(nono)? <- yes.
enemy(nono,america)? -> yes.
sells(west,nono,m1)? <- yes.
owns(nono,m1)? -> yes.
missile(m1)? -> yes.
Interpretador Prolog: controle e busca
Aplica regra de resoluo:
com estratgia linear (sempre tenta unificar ultimo fato a provar
com a concluso de uma clusula do programa),
na ordem de escritura das clusulas no programa,
com encadeamento de regras para trs,
busca em profundidade e
da esquerda para direita das premissas das clusulas,
e com backtracking sistemtico e linear quando a unificao
falha,
e sem occur-check na unificao.
Estratgia eficiente mas incompleta.
Prolog devolve a primeira resposta
g1(a).
g21(a).
g3(a).
g4(a).
g1(b).
g21(b).
g22(b).
g3(b).
g(X) :- g1(X), g2(X).
g(X) :- g3(X), g4(X).
g2(X) :- g21(X), g22(X).
$ prolog
?- consult(g.pl).
yes
?- g(U).
U = b
?- ;
U = a
?- ;
no
?- halt.
$


Forar o backtracking para obter todas as
respostas
g1(a).
g21(a).
g3(a).
g4(a).
g1(b).
g21(b).
g22(b).
g3(b).
g(X) :- g1(X), g2(X).
g(X) :- g3(X), g4(X).
g2(X) :- g21(X), g22(X).
g(U)? <- U = b.
g1(U)? -> U = a.
g2(a)? <- no.
g21(a)? -> yes.
g22(a)? -> no.
g1(U), U \ {a}? -> U = b.
g2(b)? <- yes.
g21(b)? -> yes.
g22(b)? -> yes.
;
g1(U), U \ {a,b} ? -> no.
Backtracking em cascatas
g1(a).
g21(a).
g3(a).
g4(a).
g1(b).
g21(b).
g22(b).
g3(b).
g(X) :- g1(X), g2(X).
g(X) :- g3(X), g4(X).
g2(X) :- g21(X), g22(X).
g(U), g \ {g1,g2}? <- U = a.
g3(U)? -> U = a.
g4(a)? -> yes.
;
g3(U), U \ {a}? -> U = b.
g4(b)? -> no.
g3(U), U \ {a,b}? -> no.
g(U), g \ {g1,g2 ; g3,g4}? -> no.
Prolog: sintaxe 1
fato -> fa. (abrev. para Formula Atmica)
regra -> fa0 :- fa1, ... , faN.
consulta -> fa1, ... , faN.
fa -> pred(termo1, ... , termoN) | preop termo1 termo2
| termo1 inop termo2 | termo1 termo2 postop
termo -> constante | varivel | fa
constante -> tomos | numeros
pred -> tomo
Ao invs de L1:
nenhuma distino entre predicados e funes
ausncia da igualdade semntica
Prolog: sintaxe 2
varivel ex: G, Glr, Geber_ramalho, Geber1, _glr, _
tomo ex: g, glr, =>, geber_ramalho, geber1, geber ramalho
nmero ex: 23
termos, fatos, regras e consultas sem variveis:
instanciados (ground)
ex.: person(bob,40,cs).
termos, fatos e regras com variveis:
universais
ex.: pai(X,adao).
ancestral(X,A) :- pai(X,P), ancestral(P,A).
consultas com variveis:
existenciais
ex.: ? pai(F,P).

Vous aimerez peut-être aussi