Escolar Documentos
Profissional Documentos
Cultura Documentos
Lgica Computacional
Carlos Bacelar Almeida
Departmento de Informtica
Universidade do Minho
2007/2008
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 1/37
Lgica de Primeira Ordem Sintaxe
Lgica de Primeira Ordem
A Lgica de Primeira Ordem (ou Lgica de Predicados) aumenta
o poder expressivo da linguagem ao permitir associar as
asseres lgica s propriedades de objectos de um determinado
domnio.
Distinguem-se duas classes sintcticas: a dos termos e a das
frmulas.
Os termos denotam os vrios objectos de discurso.
Como caso particular desses termos temos as variveis, que
denotam objectos no especicados ou indeterminados. partida,
o seu signicado atribudo por uma dada valorao, que
determina o objecto associado a cada varivel. Utilizaremos as
letras maisculas A, B, ... para denotar variveis.
Os restantes constituintes dos termos so as constantes
(denotam objectos xos e determinados) e as funes (que
denotam transformaes sobre os objectos). Utilizaremos letras
minsculas ou palavras para denotar constantes e funes (e.g.
a, f (), suc(), ...)
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 2/37
Lgica de Primeira Ordem Sintaxe
As frmulas denotam as asseres (factos) sobre os termos.
Na sua forma mais simples so predicados atmicos (ou
simplesmente tomos). Sero denotados por letras maisculas ou
palavras iniciadas por letras maisculas (e.g., Maior (X, Y),
EPar (X +1), ...)
As conectivas lgicas proposicionais permitem-nos compor
frmulas estruturadas (e.g. EPar (X) EPar (x +1))
Os quanticadores permitem-nos considerar o conjunto de
possibilidades para as valoraes de uma varivel (e.g.
X.EPar (X) EPar (X +1)). Uma vez quanticada, uma varivel
deixa de representar uma objecto indeterminado (dizemos que as
ocorrncias da varivel que se encontram no mbito do
quanticador se encontram ligadas a esse quanticador).
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 3/37
Lgica de Primeira Ordem Sintaxe
Sintaxe
A sintaxe da lgica de primeira ordem parametrizada pelo tuplo , R, onde:
= S, arS a assinatura de termos. S um conjunto de smbolos de
funes e arS : S IN a funo de aridade que, a cada smbolo S,
associa o nmero de argumentos da respectiva funo (0 para as
constantes).
R = R, arR a assinatura de predicados. R um conjunto de smbolos
de predicados e arR : R IN associa o nmero de argumentos a cada
predicado.
Os termos (T ) so denidos pelas regras:
Uma varivel um termo;
Seja f S com arS(f ) = n. Se t
1
, . . . , t
n
forem termos ento f (t
1
, . . . , t
n
)
um termo.
As frmulas (L) so denidas por:
Seja P R com arR(P) = n. Se t
1
, . . . , t
n
forem termos ento P(t
1
, . . . , t
n
)
uma frmula;
Se e forem frmulas, ento , , , , so frmulas;
Se for uma frmula e X uma varivel, ento X. e X. so frmulas
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 4/37
Lgica de Primeira Ordem Sintaxe
Variveis e Substituies
Termos que no contenham ocorrncia de variveis dizem-se
termos base. O conjunto de termos base denotado por T
B
.
As ocorrncias das variveis dizem-se livres ou ligadas,
dependendo se se encontram (ou no) no mbito de um
quanticador. Os conjuntos das variveis livres e ligadas so
denotados por FV() e BV() respectivamente.
A operao de substituio de uma varivel (livre) X por um
termo t denotada por [t /X] (l-se t substitui X).
A aplicao da substituio a um termo denida por
recursividade estrutural:
Y[t /X] =
t , se X = Y
Y , se X ,= Y
f (t
1
, . . . , t
n
)[t /X] = f (t
1
[t /X], . . . , t
n
[t /X])
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 5/37
Lgica de Primeira Ordem Sintaxe
O processo de substituio extende-se s frmulas:
P(t
1
, . . . , t
n
)[t /X] = P(t
1
[t /X], . . . , t
n
[t /X])
()[t /X] = ([t /X])
(QY.)[t /X] =
QY. , se X = Y
QY.([t /X]) , se X ,= Y
onde Q denota um quanticador ( ou ).
Note-se que a substituio nunca afecta as variveis ligadas.
De facto, as variveis ligadas podem ser renomeadas por
variveis novas
1
sem se alterar o signicado das frmulas. Assim,
X. Y.([Y/X]) , quando Y , FV()
1
Uma varivel nova uma varivel que no utilizada no contexto em questo
(e.g. na frmula considerada).
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 6/37
Lgica de Primeira Ordem Semntica
Interpretao
Um modelo para a lgica de primeira ordem constitudo por:
Uma estrutura de interpretao 1 que dar signicado aos
objectos (termos) envolvidos nas frmulas. Ser constituda por:
Um conjunto I que constitui o domnio de interpretao;
Para cada funo f (com aridade n), uma funo 1(f ) : I
n
I;
Para cada predicado P 1 (com aridade n), uma relao n-ria
1(P) I
n
.
Uma valorao : V I que atribua signicado s variveis
(livres) envolvidas.
Uma vez xado uma interpretao 1 e uma valorao , podemos
atribuir signicado ao conjunto de termos (i.e. associar a cada termo
da linguagem um elemento do domnio de interpretao):
1
(x) = (x)
1
(f (t
1
, . . . , t
n
) = 1(f )(1
(t
1
), . . . , 1
(t
n
))
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 7/37
Lgica de Primeira Ordem Semntica
Validade
A validade de uma frmula lgica num modelo denida
recursivamente:
1 [= P(t
1
, . . . , t
n
) sse (1
(t
1
), . . . , 1
(t
n
)) 1(P)
1 [= sse 1 ,[=
1 [= sse 1 [= e 1 [=
1 [= sse 1 [= ou 1 [=
1 [= sse 1 ,[= ou 1 [=
1 [= X. sse para qualquer t I temos que 1 [= [t /X]
1 [= X. sse existir um t I tal que 1 [= [t /X]
Uma frmula diz-se vlida quando qualquer modelo a validar, i.e.
[= sse para qualquer 1 e , 1 [=
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 8/37
Lgica de Primeira Ordem Semntica
Um conjunto de frmulas diz-se uma teoria. A noo de validade
extende-se a teorias da forma bvia.
Dizemos que uma frmula consequncia semntica de uma
teoria (escreve-se [= ) quando qualquer modelo que valide
valide tambm .
Uma teoria inconsistente (escreve-se [= ) quando no
existe qualquer modelo que valide .
Proposio
Para quaisquer teorias , e frmulas temos:
, [=
Se [= e , ento [=
[= se e s se [=
Demonstrao.
(Detalhes apresentados na aula terica)
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 9/37
Formas Normais
Prenex Normal Form
A sintaxe da lgica de primeira ordem permite-nos construir
frmulas com quanticadores em qualquer nvel da rvore
sintctica (e.g. x.P(x) x.Q(x)).
Os quanticadores podem ser puxados para o exterior da
frmula sem alterar o seu signicado desde que nesse
processo no se capture ocorrncias de variveis livres. Por
exemplo:
x.(P(x, y) z.Q(x, z)) x.z.(P(x, y) Q(x, z))
x.(P(x, y) y.Q(x, y)) , x.y.(P(x, y) Q(x, y))
(destaca-se a negrito a ocorrncia da varivel y capturada pela
movimentao do quanticador).
A captura de variveis pode sempre ser evitada por renomeao
apropriada das variveis ligadas. No exemplo apresentado, o lado
esquerdo do segundo caso pode ser transformado no lado
esquerdo do primeiro.
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 10/37
Formas Normais
Prenex Normal Form
Denio
Uma frmula da lgica de primeira ordem diz-se na forma normal
Prenex quando todos os quanticadores ocorrem no exterior da
frmula.
Operacionalmente, podemos obter a forma normal Prenex
aplicando sucessivamente as seguintes equivalncias (facilmente
demonstrveis pela denio de validade):
x. x.
x. x.
(x.) x
.([x
/x] )
(x.) x
.([x
/x] )
(x.) x
.( [x
/x])
(x.) x
.( [x
/x])
onde x
C,
(Corte)
,
(Ax)
, A A,
P, Q,
(D )
P Q,
, P
(D )
P,
P, Q,
(D )
P Q,
, P Q,
(D )
P Q,
, P, Q
(E )
, P Q
P,
(E )
, P
, P , Q
(E )
, P Q
, Q P,
(E )
, P Q
, X., [t /X]
(E )
, X.
, [A/X]
(E )
sendo A uma var. nova
, X.
[A/X],
(D )
sendo A uma var. nova
X.,
X., [t /X],
(D )
X.,
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 19/37
Clculo de Sequentes
Propriedades
Tal como no clculo de sequentes proposicional, tambm aqui
possvel eliminar o corte na apresentao do sistema dedutivo. A
demonstrao deste resultado anlogo verso proposicional (faltando unicamente os
casos relativos s novas regras. Ver detalhes em Proof Theory and Automated Deduction,
Sec. 5.3).
As regras (D ) e (E ) mantm a frmula principal na premissa.
Desta forma podemos instanciar a varivel quanticada em
diferentes termos.
Nas regras (E ) e (D ) so introduzidas variveis novas. Este
facto determina que a ordem de aplicao das regras deixa de ser
irrelevante...
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 20/37
Clculo de Sequentes
A sua justicao (correco) para as regras dos quanticadores
resulta da seguinte observao:
Proposio
Para qualquer teoria , frmula , termo t e varivel nova A, temos:
, X., [t /X] inconsistente se e s se , X.
inconsistente.
, [A/X] inconsistente se e s se , X. inconsistente.
, (X.), ([t /X]) inconsistente se e s se , (X.)
inconsistente.
, ([A/X]) inconsistente se e s se , (X.)
inconsistente.
Demonstrao.
(Detalhes apresentados na aula terica.)
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 21/37
Clculo de Sequentes
O Sistema Dedutivo LC correcto e completo, i.e.
[= sse
Mas note-se que este resultado diz-nos que, para qualquer
frmula vlida, existe uma derivao no clculo de sequentes.
No nos diz como obter essa derivao...
De facto, ao contrrio do clculo de sequentes proposicional, na
lgica de primeira ordem no possvel utilizar directamente as
regras do clculo de sequentes como um procedimento de
vericao da validade das frmula.
Em rigor, no poderia ser de outra forma a vericao da
validade em lgica de primeira ordem indecidvel.
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 22/37
Resoluo
Vericao da Inconsistncia em LPO
Vericar a inconsistncia de uma frmula reduz-se, pelo processo
de Skolenizao, a vericar a inconsistncia de uma frmula
universal, i.e. da forma
X
1
, . . . , X
n
.
onde uma frmula livre de quanticadores.
Desta forma, est prxima de uma frmula proposicional. Em
particular, pode ser expressa numa dada forma normal (e.g. na
FNC).
por isso natural aplicar mtodos estudados em lgica
proposicional para estabelecer a inconsistncia de . Em
particular, poderemos utilizar resoluo para procurar derivar
da forma clausal de .
evidente que contm, em geral, variveis. Este facto ir
colocar desaos na generalizao do mtodo lgica de primeira
ordem,
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 23/37
Resoluo
Resoluo Proposicional em LPO
Comecemos por analisar a aplicao da resoluo proposicional
em frmulas de primeira ordem da forma
X
1
, . . . , X
n
.
onde se encontra na FNC.
O teorema de Herbrand garante-nos a existncia de instncias
base que estabelecem a inconsistncia pretendida.
Considerem-se clusulas
1
e
2
e substituies base
1
e
2
tais
que
1
= A
2
= A
A resoluo proposicional de (A ) e (A ) permite obter a
clusula ( ).
Note que, se e forem clusulas vazia, derivado o absurdo
e, como tal, estabelecida a inconsistncia de .
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 24/37
Resoluo
A completude do mtodo de resoluo para lgica proposicional,
e o teorema de Herbrand, garantem-nos que para qualquer forma
universal inconsistente podemos derivar aplicando a resoluo
proposicional como apresentada atrs.
O problema que o mtodo no , de forma alguma, efectivo
teremos sempre de adivinhar as substituies base apropriadas
para aplicar a resoluo proposicional.
O que seria desejvel era uma forma de aplicar a resoluo
directamente sobre as clusulas de .
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 25/37
Resoluo
Igualizao de Termos com Variveis
Na aplicao da resoluo proposicional em frmulas de primeria
ordem, so normalmente as substituies de base aplicadas que
igualam os literais que intervm na resoluo.
Podemo-nos perguntar se no possvel igualar os literais sem ter
necessidade de usar substituies de base (i.e. ter de concretizar todas
as variveis).
Ilustremos o argumento com os termos t
1
= f (X) e t
2
= f (g(Y))
existe uma innidade de substituies de base que igualam t
1
e t
2
(e.g.,
assumindo a existncia de uma constante a, temos [g(a)/X, a/Y],
[g(g(a))/X, g(a)/Y], etc.). A questo que se coloca se no existe
uma nica soluo que, de alguma forma, represente todas as restantes
solues?
Essa soluo mais geral de facto existe: considere-se a substituio
[g(Y)/X] esta substituio iguala ambos os termos (em f (g(Y))), e
deixa ainda liberdade para substituir Y pelo termo que se entender. De
facto, qualquer substituio que iguale t
1
e t
2
uma instncia da
soluo apresentada.
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 26/37
Resoluo
Unicao
A unicao consiste no problema de determinar (caso exista) a
substituio mais geral que iguale dois termos. Essa substituio
designada por unicador mais geral (mgu) desses termos.
Para denir o que se entende por substituio mais geral, torna-se
necessrio estabelecer uma ordem (de especializao) nas
substituies.
Denio (Ordem de Especializao)
Sejam e substituies. Dizemos que mais geral do que ( )
quando existe uma substituio tal que = .
Denio
O Unicador Mais Geral (mgu) de termos t
1
e t
2
consiste numa substituio
tal que t
1
= t
2
e, para qualquer substituio para a qual t
1
= t
2
,
temos que . No existindo qualquer substituio que iguale os termos,
convenciona-se que mgu(t
1
, t
2
) = .
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 27/37
Resoluo
Algoritmo de Unicao
Podemos determinar o unicador mais geral de dois termos
manipulando um sistema de equaes.
O estado do sistema composto por um par [) onde um
conjunto de equaes entre termos, e a substituio
calculada.
Como estado inicial temos uma nica equao entre os termos
que pretendemos unicar. A substituio inicial a identidade.
O algoritmo prossegue aplicando as seguintes regras:
trivial , t = t [) , )
decompose , f (t
1
, ., t
n
) = f (s
1
, ., s
n
)[) , t
1
= s
1
, ., t
n
= s
n
[)
clash , f (. . .) = g(. . .)[) , se f ,= g
orient , t = x[) , x = t [), se t no uma varivel
occurs , x = t [) , se x Vars(t )
variable , x = t [) [t /x][ [t /x]), se x ,= t
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 28/37
Resoluo
Codicao em Haskell
...retirado de um exemplo do interpretador hugs.
--- Prolog Terms:
type Id = (Int,String)
type Atom = String
data Term = Var Id | Struct Atom [Term]
--- Substitutions:
-- substitutions are represented by functions mapping identifiers to terms.
type Subst = Id -> Term
-- app s extends the substitution s to a function mapping terms to terms
app :: Subst -> Term -> Term
app s (Var i) = s i
app s (Struct a ts) = Struct a (map (app s) ts)
-- nullSubst is the empty substitution which maps every identifier to the
-- same identifier (as a term).
nullSubst :: Subst
nullSubst i = Var i
infix 4 ->-
-- i ->- t is the substitution which maps the identifier i to the term t,
-- but otherwise behaves like nullSubst.
(->-) :: Id -> Term -> Subst
(i ->- t) j | j==i = t
| otherwise = Var j
infixr 3 @@
-- s1@@ s2 is the composition of substitutions s1 and s2
(@@) :: Subst -> Subst -> Subst
s1 @@ s2 = app s1 . s2
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 29/37
Resoluo
--- Unification:
-- unify t1 t2 returns a list containing a single substitution s which is
-- the most general unifier of terms t1 t2. If no unifier
-- exists, the list returned is empty.
unify :: Term -> Term -> [Subst]
unify (Var x) (Var y) = if x==y
then [nullSubst]
else [x->-Var y]
unify (Var x) t2 = [ x ->- t2 | x notElem varsIn t2 ]
unify t1 (Var y) = [ y ->- t1 | y notElem varsIn t1 ]
unify (Struct a ts) (Struct b ss) = [ u | a==b, u<-listUnify ts ss ]
listUnify :: [Term] -> [Term] -> [Subst]
listUnify [] [] = [nullSubst]
listUnify [] (r:rs) = []
listUnify (t:ts) [] = []
listUnify (t:ts) (r:rs) = [ u2 @@ u1 | u1<-unify t r,
u2<-listUnify (map (app u1) ts)
(map (app u1) rs) ]
Carlos Bacelar Almeida, DIUM LGICA DE PREDICADOS- LGICA COMPUTACIONAL 30/37
Resoluo
Resoluo de Primeira Ordem
Denio
Sejam ,
e ,
quando = mgu(, ).
O requisito de as clusulas no conterem variveis em comum
pode facilmente ser satisfeito por renomeao das variveis de
uma das clusulas.
e so normalmente literais. No entanto podem ser tambm
conjuntos no vazios de literais
2
que so todos unicados num s.