Você está na página 1de 32

Exerccios de Lgica para Programao

Ana Cardoso-Cachopo

Fevereiro de 2014
CONTEDO 1

Contedo

1 Argumentos e Validade 3

2 Lgica Proposicional Sistema de Deduo Natural 4

3 Lgica Proposicional Tabelas de Verdade 6

4 Lgica Proposicional Resoluo 7

5 Lgica Proposicional BDDs 8

6 Lgica Proposicional OBDDs 10

7 Lgica Proposicional SAT 11

8 Lgica de Primeira Ordem Sistema de Deduo Natural 13

9 Lgica de Primeira Ordem Sistema Semntico 15

10 Lgica de Primeira Ordem Representao 19

11 Lgica de Primeira Ordem Resoluo 20

12 Programao em Lgica Resoluo SLD; rvores SLD 22

13 Prolog rvores de Refutao; Listas 24

14 Prolog Operadores Pr-definidos 26

15 Prolog Corte; Negao 28


2 CONTEDO

Prefcio

Este documento contm uma compilao de exerccios para a disciplina de


Lgica para Programao da LEIC.
A maior parte dos exerccios foi criada por mim especificamente para as aulas
prticas ou para as provas de avaliao da disciplina e outros foram tirados
de livros ou artigos acerca da matria em questo.
Existem dois exerccios cujo enunciado foi feito pelo Professor Joo Pavo
Martins nas aulas sobre os sistemas de deduo natural da lgica proposici-
onal e da lgica de primeira ordem. Esses exerccios esto assinalados com a
etiqueta (JPM).
O Professor Joo Cachopo, para alm de discutir comigo algumas das respos-
tas dos exerccios, ajudou-me a fazer em LaTeX as figuras dos vrios captulos,
tornando esta compilao (muito) mais apresentvel.
Obviamente, a responsabilidade por quaisquer erros ou gralhas que esta com-
pilao de exerccios possa ter inteiramente minha.
Correces de gralhas ou sugestes de melhorias podem ser enviadas para o
meu endereo de email: acardoso@tecnico.ulisboa.pt.
3

1 Argumentos e Validade

Exerccio 1.1
Usando apenas a informao que est explcita, diga, justificando, se os seguintes argu-
mentos so vlidos ou so invlidos:

1. Peregrino Cinzento Gandalf


Mithrandir Gandalf
Peregrino Cinzento Mithrandir
2. Mithrandir um feiticeiro
Mithrandir Gandalf
Gandalf um feiticeiro
3. Os orcs so feios
Os orcs so feios
4. Nemo um peixe
Dori um peixe
Nemo Dori
5. Os tubares so carnvoros
Os tubares no so vegetarianos
O Bruce vegetariano
O Bruce no tubaro
6. Os peixes so animais
Os tubares so animais

Exerccio 1.2
Sempre que for possvel, d exemplos de argumentos vlidos e invlidos com:

As premissas verdadeiras e a concluso verdadeira;

As premissas verdadeiras e a concluso falsa;

As premissas falsas e a concluso verdadeira;

As premissas falsas e a concluso falsa.


4 2 LGICA PROPOSICIONAL SISTEMA DE DEDUO NATURAL

2 Lgica Proposicional Sistema de Deduo Natural

Exerccio 2.1
(JPM) Demonstre os seguintes teoremas e argumentos usando o sistema de deduo na-
tural da lgica proposicional. Em cada alnea indique se est a demonstrar um teorema
ou um argumento.

1. A (B A)
2. (A A) B
3. ({A B, B A}, A)
4. ({A}, B (A B))
5. ({}, ((A B) (B C)) (A C))

Exerccio 2.2
Demonstre os seguintes teoremas usando o sistema de deduo natural da lgica propo-
sicional.

1. (A (B C)) ((A B) (A C))


2. ((A (A B)) A) B
3. (A B) (B A)
4. (B A) (A B)
5. (A B) (A B)
6. ((A B) B) A
7. (A A) A
8. (A B) (B A)
9. ((A B) C) (A (B C))
10. (A (B C)) ((A B) (A C))
11. ((A B) (A C)) (A (B C))
12. ((A B) A) A

Exerccio 2.3
Demonstre os seguintes teoremas, que correspondem a aplicaes das leis de De Morgan,
usando o sistema de deduo natural da lgica proposicional.

1. (A B) (A B)
2. (A B) (A B)
3. (A B) (A B)
4. (A B) (A B)
Lgica Proposicional Sistema de Deduo Natural
Prem E
n
.. ..
n Prem . .
m E, n
Hip
ou
n Hip
n
.. ..
. .
m E, n
n+1 ...
I
Rep n
.. ..
n
.. .. . .
. . m I, n
m Rep, n ou
Rei n
.. ..
. .
n m I, n
.. ..
. . E

m Rei, n n

I o Hip
.. ..
. .
n Hip
.. .. p
. .
r Hip
m
.. ..
k I, (n, m) . .
E s
n m E, (n, (o, p), (r, s))
.. ..
. . I
m
.. ..
. .
n Hip
k E, (n, m)
.. ..
I . .
n
.. .. m
. . .. ..
m . .
.. ..
. .
k I, (n, m) k
l I, (n, (m, k))
E
n
..
..
. .
m E, n
6 3 LGICA PROPOSICIONAL TABELAS DE VERDADE

3 Lgica Proposicional Tabelas de Verdade

Exerccio 3.1
Para cada uma das seguintes fbfs, diga, justificando, se satisfazvel, falsificvel, tautol-
gica ou contraditria. necessrio conhecer todas as linhas das tabelas de verdade para
responder a estas perguntas?

1. A
2. A A
3. A A
4. (A B) (A B)
5. (A B) (A B)

Exerccio 3.2
Considere o seguinte conjunto de frmulas:
{Homem P essoa, M ulher P essoa, Homem M ulher}

1. Mostre quais so os modelos desse conjunto.


2. P essoa consequncia lgica desse conjunto? Porqu?
3. Acrescente Homem ao conjunto. Diga quais so os seus modelos e as suas con-
sequncias lgicas.

Exerccio 3.3
Considere a seguinte tabela de verdade. Diga a que conectiva lgica corresponde a fun-
o f .
P Q f (P, Q)
V V V
V F F
F V F
F F F

Exerccio 3.4
Usando o sistema semntico da lgica proposicional, mostre que {A, B} |= (A B).

Exerccio 3.5
Mostre que as frmulas A (B C) e (A B) C no so equivalentes apresen-
tando uma interpretao para a qual elas tenham valores lgicos diferentes.

Exerccio 3.6
Usando tabelas de verdade, prove que as seguintes frmulas, correspondentes s leis de
De Morgan, so tautologias.
(A B) (A B)
(A B) (A B)
7

4 Lgica Proposicional Resoluo

Exerccio 4.1
Transforme a seguinte frmula para a forma clausal:

1. A ((B C) (C D))

Exerccio 4.2
Demonstre os teoremas e argumentos do exerccio 2.1 usando resoluo. Em cada alnea
indique se est a demonstrar um teorema ou um argumento.

Exerccio 4.3
Demonstre os teoremas do exerccio 2.2 usando resoluo.

Exerccio 4.4
Demonstre os teoremas do exerccio 2.3, que correspondem a aplicaes das leis de De
Morgan, usando resoluo.

Exerccio 4.5
Usando uma estratgia de resoluo linear, apresente uma prova por refutao para A a
partir do seguinte conjunto de clusulas: {{A, B, C}, {D, A}, {B}, {C}}.
8 5 LGICA PROPOSICIONAL BDDS

5 Lgica Proposicional BDDs

Exerccio 5.1
Considere a seguinte tabela de verdade:
P Q f (P, Q)
V V V
V F F
F V F
F F F

1. Represente a rvore de deciso correspondente.

2. Mostre o BDD reduzido correspondente rvore anterior, apresentando e justifi-


cando todos os passos.

3. Com base no BDD reduzido, diga quais so os modelos de f (P, Q) e compare-os


com os obtidos pela observao da tabela de verdade.

Exerccio 5.2
Considere a seguinte tabela de verdade:
P Q R f (P, Q, R)
V V V V
V V F F
V F V F
V F F F
F V V V
F V F F
F F V V
F F F F

1. Represente a rvore de deciso correspondente.

2. Mostre o BDD reduzido correspondente rvore anterior, apresentando e justifi-


cando todos os passos.

3. O BDD teria a mesma forma se tivesse escolhido outra ordenao para os ns?
Justifique, mostrando o novo BDD reduzido.

4. Com base nos BDDs reduzidos, diga quais so os modelos de f (P, Q, R) e compare-
os com os obtidos pela observao da tabela de verdade.

Exerccio 5.3
Usando BDDs, prove que as seguintes frmulas, correspondentes s leis de De Morgan,
so tautologias.
(A B) (A B)
(A B) (A B)

Exerccio 5.4
Considere que = A B C e = B C. Determine os BDDs reduzidos para:
9

1.

2.

3.

4.
10 6 LGICA PROPOSICIONAL OBDDS

6 Lgica Proposicional OBDDs

Exerccio 6.1
Considere as seguintes fbfs:

1. = A B C

2. = B C

3. = (A B) D

Partindo das suas rvores de deciso binrias, mostre os seus OBBDs reduzidos atravs
da aplicao do algoritmo reduz. Deve usar a ordenao [A, B, C, D] para os predicados.

Exerccio 6.2
Considerando os OBBDs reduzidos do exerccio anterior, combine-os usando o algoritmo
aplica (se isso for possvel) para obter os OBBDs reduzidos para as seguintes fbfs.

1.

2.

3.
11

7 Lgica Proposicional SAT

Exerccio 7.1
Considere a seguinte frmula: (A (B C)) ((B C) D). Crie o seu DAG,
efectue a propagao de valores de modo a que a frmula seja verdadeira e apresente
uma testemunha.

Exerccio 7.2
Considere a seguinte frmula: (A B) (B (B C)).

1. Crie o seu DAG. Efectue a propagao de valores, de modo a que a frmula seja
verdadeira. O que pode concluir?

2. Faa o mesmo para a negao da frmula dada. Consegue encontrar uma testemu-
nha usando apenas o algoritmo de propagao de marcas? E usando o algoritmo
de teste de ns? O que pode concluir?

Exerccio 7.3
Considere o seguinte DAG. Diga a que frmula corresponde. Efectue a propagao de
valores, de modo a que a frmula seja verdadeira. Se for necessrio, use o algoritmo de
teste de ns. Se for possvel, apresente uma testemunha.

A B C D E

Exerccio 7.4
Considere o seguinte conjunto de clusulas: {{A, B}, {A, B}, {B}}. Aplique o algo-
ritmo DP e caso a frmula seja satisfazvel, indique uma testemunha.

1. Usando a ordem A B;

2. Usando a ordem B A.
12 7 LGICA PROPOSICIONAL SAT

Exerccio 7.5
Considere o seguinte conjunto de clusulas: {{D, B}, {C, A}, {A, D, C}, {C, E}, {E}}.
Aplique o algoritmo DP usando a ordem C E D A B. Caso a frmula seja sa-
tisfazvel, indique uma testemunha.

Exerccio 7.6
Considere a seguinte frmula ((A B) (A C)) (A D).
Determine se ela satisfazvel e se for indique uma testemunha, usando:

1. o algoritmo de propagao de marcas (e o algoritmo de teste de ns, se necessrio);

2. o algoritmo DP.
13

8 Lgica de Primeira Ordem Sistema de Deduo Natural

Exerccio 8.1
Demonstre os seguintes argumentos, usando o sistema de deduo natural da lgica de
primeira ordem:

1. ({x[F (x)]}, x[F (x)])

2. ({x[F (x) G(x)], x[F (x) H(x)]}, x[G(x) H(x)])

Exerccio 8.2
(JPM) Demonstre os seguintes teoremas, usando o sistema de deduo natural da lgica
de primeira ordem:

1. (F (a) x[F (x) G(x)]) G(a)

2. (x[F (x) G(x)] x[G(x) H(x)]) x[F (x) H(x)]

3. (x[F (x) H(x)] y[F (y)]) z[H(z)]

Exerccio 8.3
Demonstre os seguintes teoremas, que correspondem a aplicaes das leis de De Mor-
gan para os quantificadores, usando o sistema de deduo natural da lgica de primeira
ordem.

1. x[F (x)] x[F (x)]

2. x[F (x)] x[F (x)]

3. x[F (x)] x[F (x)]

4. x[F (x)] x[F (x)]


Lgica de Primeira Ordem Sistema de Deduo Natural

Prem E
n Prem
n
Hip
o Hip
n Hip .. ..
. .
n+1 ...
p
Rep
n r Hip
.. ..
. . .. ..
m Rep, n . .

Rei s
n m E, (n, (o, p), (r, s))
.. ..
. .
I
m Rei, n n Hip
.. ..
I . .
n Hip m
.. .. .. ..
. . . .
m k
k I, (n, m) l I, (n, (m, k))
E E
n
..
..
n
..
.. . .
. .
m E, n
m
.. ..
. . I
k E, (n, m)
I n x0
n
..
.. .. ..
. . . .
m
.. .. m (x0 )
. .
k I, (n, m) m+1 x[(x)] I, (n, m)

E E
n x[(x)]
n
.. ..
..
.
..
.
. .
m E, n m (t) E, n
ou I
n
.. ..
n
.. (t)
..
. . . .
m E, n m x[(x)] I, n
I E
n
..
..
. . n x[(x)]
m I, n m x0 (x0 ) Hip
ou .. ..
n . .
.. ..
. .
m I, n k
k+1 E, (n, (m, k))
15

9 Lgica de Primeira Ordem Sistema Semntico

Exerccio 9.1
Considere a seguinte conceptualizao C = (D, F, R):

D = {F, V, X, B, [, k}
F = {{(F, B), (V, [), (X, k)}}
R = {{(F), (V), (X)}, {(B), ([), (k)}, {(F, V), (F, X), (V, X)}}

e a seguinte interpretao:

I(eq) = F
I(es) = V
I(eo) = X
I(f q) = B
I(f s) = [
I(f o) = k
I(f lorDe) = {(F, B), (V, [), (X, k)}
I(Estrela) = {(F), (V), (X)}
I(F lor) = {(B), ([), (k)}
I(M enosP ontas) = {(F, V), (F, X), (V, X)}

Diga, justificando, quais das seguintes fbfs so satisfeitas por esta interpretao para esta
conceptualizao:

1. Estrela(eo)

2. Estrela(f lorDe(eq))

3. M enosP ontas(eo, eq)

4. Estrela(es) F lor(f q)

5. x[Estrela(x)]

6. x, y, z[(M enosP ontas(x, y) M enosP ontas(y, z)) M enosP ontas(x, z)]

Exerccio 9.2
Considere a seguinte conceptualizao C = (D, F, R):

D = {I, V, X, C, D, M, 1, 5, 10, 100, 500, 1000}


F = {{(I, 1), (V, 5), (X, 10), (C, 100), (D, 500), (M, 1000)}}
R = {{(X), (C), (D), (M )}, {(I), (V )}}

e a seguinte interpretao:

I(um) 7 I
I(cinco) 7 V
16 9 LGICA DE PRIMEIRA ORDEM SISTEMA SEMNTICO

I(dez) 7 X
I(cem) 7 C
I(quinhentos) 7 D
I(mil) 7 M
I(valor) 7 {(I, 1), (V, 5), (X, 10), (C, 100), (D, 500), (M, 1000)}
I(P ar) 7 {(X), (C), (D), (M )}
I(Impar) 7 {(I), (V )}

1. Diga, justificando, quais das seguintes fbfs so satisfeitas por esta interpretao
para esta conceptualizao:

(a) P ar(cem)
(b) Impar(valor(cinco))
(c) P ar(cem) Impar(dez)
(d) x[P ar(x)]
(e) x[Impar(valor(x))]

2. Diga que alteraes faria na conceptualizao para os resultados serem os intuiti-


vamente esperados. Que mudanas que isso implicaria na interpretao?

3. Diga, justificando, se o seguinte poderia ser uma interpretao para esta conceptu-
alizao. Se no puder, indique todas as razes para no poder.

I(a) 7 X
I(a) 7 10
I(b) 7 100
I(c) 7 100
I(d) 7 20
I(f 1) 7 {(I, 1), (V, 5), (V, 10), (C, 100)}
I(R1) 7 {(X), (C), (D)}

Exerccio 9.3
Considere a relao binria EDivisorDe no domnio {1, 2, 3, 4, 5, 6}.

1. Apresente o conjunto de todos os pares que esto na relao para o domnio dado.

2. Diga, justificando, se a relao : reflexiva, simtrica, ou transitiva.

Exerccio 9.4
Considere a seguinte f bf : x, y[(A(x)B(x, y)) A(y)]. Diga se ela verdadeira ou falsa
para cada uma das seguintes interpretaes. Se for falsa, apresente um contra-exemplo.

1. O domnio dos nmeros naturais, onde A(x) interpretado como x par e B(x, y)
interpretado como x igual a y.

2. O domnio dos nmeros naturais, onde A(x) interpretado como x par e B(x, y)
interpretado como x um inteiro divisor de y.

3. O domnio dos nmeros naturais, onde A(x) interpretado como x par e B(x, y)
interpretado como x um inteiro mltiplo de y.
17

4. O domnio dos booleanos {verdadeiro, f also}, onde A(x) interpretado como x


falso e B(x, y) interpretado como x igual a y.

Exerccio 9.5
Considere a seguinte conceptualizao:

Universo de discurso = {_, `}


Conjunto de funes = {{(_, `)}, {(_, _), (`, _)}}
Conjunto de relaes = {{(_, _), (_, `), (`, `)}}

e o seguinte conjunto de frmulas: {P1 (f1 (a), b), P1 (f2 (a), b) P1 (b, f1 (a))}.

Diga se a seguinte interpretao modelo deste conjunto de frmulas:

I(a) 7 _
I(b) 7 `
I(f1 ) 7 {(_, `)}
I(f2 ) 7 {(_, _), (`, _)}
I(P1 ) 7 {(_, _), (_, `), (`, `)}

Exerccio 9.6
Considere a seguinte conceptualizao C = (D, F, R):

D = {, , , }
F = {{(, )}, {( , )}, {( , , ), ( , , )}}
R = {{(, )}, {(, )}, {(), ( ), (), ( )}}

e a seguinte interpretao:

I(a) = 
I(b) =
I(c) = 
I(d) =
I(f 1) = {(, )}
I(f 2) = {( , )}
I(R1) = {(, )}
I(R2) = {(, )}
I(R3) = {(), ( ), (), ( )}

1. Diga, justificando, se esta interpretao para esta conceptualizao um modelo do


seguinte conjunto de frmulas: {x, y[R3(x)R1(x, f 2(y))], R2(f 1(a), d)R3(b)}.

2. Explique porque que o seguinte no pode ser uma interpretao para esta con-
ceptualizao, mencionando todos os erros que foram cometidos.

I(a) = 
I(b) = 
18 9 LGICA DE PRIMEIRA ORDEM SISTEMA SEMNTICO

I(c) = 
I(c) =
I(d) = ~
I(f 1) = {(, ), (, )}
I(R1) = {(), (), ( )}

Exerccio 9.7
Represente em lgica de primeira ordem cada uma das seguintes frases:

1. O Miau um gato castanho.


2. Os gatos so animais.
3. Nenhum gato um co.
4. Nem todos os gatos gostam de leite.
5. Os gatos no gostam de ces.
(Nenhum gato gosta de nenhum co.)

6. Existe um co de quem todos os gatos gostam.


(Todos os gatos gostam do mesmo co.)

7. Todos os gatos gostam de algum co.


(Pode ser um co diferente para cada gato.)

8. Se algum gato gostar do Rui, ento o Miau tambm gosta do Rui.

9. O Miau um siams ou um bobtail, mas no os dois simultaneamente.


(No pode usar o ou exclusivo.)

10. A cauda do Miau comprida.

11. Todos os gatos tm cauda.

Exerccio 9.8
Suponha que N (x) representa o predicado x um nmero, P (x) representa o predicado
x par, I(x) representa o predicado x mpar e M (x, y) representa o predicado x
maior que y. Traduza as seguintes fbfs para linguagem comum. Se no conseguir
traduzir alguma delas, explique porqu.

1. x[N (x)]
2. x[I(x) N (x)]
3. x[N (x) P (x)]
4. x[N (x) P (x)]
5. x[I(x) P (x)]
6. x[P (x) y[I(y) M (y, x)]]
7. x[P (x) y[(P (y) x 6= y) M (y, x)]]
8. x[P (x) N (x)]
19

10 Lgica de Primeira Ordem Representao

Exerccio 10.1
Represente em lgica de primeira ordem cada uma das seguintes frases:

1. O Miau um gato castanho.

2. Os gatos so animais.

3. Nenhum gato um co.

4. Nem todos os gatos gostam de leite.


5. Os gatos no gostam de ces.
(Nenhum gato gosta de nenhum co.)

6. Existe um co de quem todos os gatos gostam.


(Todos os gatos gostam do mesmo co.)

7. Todos os gatos gostam de algum co.


(Pode ser um co diferente para cada gato.)

8. Se algum gato gostar do Rui, ento o Miau tambm gosta do Rui.

9. O Miau um siams ou um bobtail, mas no os dois simultaneamente.


(No pode usar o ou exclusivo.)

10. A cauda do Miau comprida.

11. Todos os gatos tm cauda.

Exerccio 10.2
Suponha que N (x) representa o predicado x um nmero, P (x) representa o predicado
x par, I(x) representa o predicado x mpar e M (x, y) representa o predicado x
maior que y. Traduza as seguintes fbfs para linguagem comum. Se no conseguir
traduzir alguma delas, explique porqu.

1. x[N (x)]

2. x[I(x) N (x)]

3. x[N (x) P (x)]

4. x[N (x) P (x)]

5. x[I(x) P (x)]

6. x[P (x) y[I(y) M (y, x)]]

7. x[P (x) y[(P (y) x 6= y) M (y, x)]]

8. x[P (x) N (x)]


20 11 LGICA DE PRIMEIRA ORDEM RESOLUO

11 Lgica de Primeira Ordem Resoluo

Exerccio 11.1
Utilize o algoritmo de unificao para determinar quais dos seguintes conjuntos de fbfs
so unificveis, e, no caso de o serem, determine o unificador mais geral. Mostre todos
os passos intermdios usados no clculos.

1. {P (a, x, x), P (a, b, c)}

2. {P (a, x, f (x)), P (x, y, z)}

3. {P (x, y), Q(x, y)}

4. {Colocou(x1 , SenhorAneis, y1 ), Colocou(M aria, x2 , topo(y2)),


Colocou(x3 , SenhorAneis, topo(M esaAzul))}

Exerccio 11.2
Passe as seguintes fbfs da lgica de primeira ordem para a forma clausal.

1. x[A(x)] x, y[B(x) w[C(x, y, w)] w[D(w, y)]] x[E(x) F (x)]

2. x[(A(x) y[B(y) C(x, y)]) D(x)]

3. x[A(x) y[B(x, y) C(y)]]

Exerccio 11.3
Considere o seguinte conjunto de clusulas: {{A(x), B(x), C(x)}, {A(x)}, {B(a)}, {A(y), C(y)}}.

1. Apresente uma demonstrao por refutao a partir desse conjunto.

2. Apresente uma demonstrao por refutao a partir desse conjunto, usando reso-
luo unitria.

3. Apresente uma demonstrao por refutao a partir desse conjunto, usando reso-
luo linear e {B(a)} como clusula inicial.

Exerccio 11.4
Demonstre, usando resoluo, o seguinte argumento:
({x, y, z[(R(x, y) R(y, z)) R(x, z)], R(a, b), R(b, c), R(c, d)}, R(a, d)).

Exerccio 11.5
Demonstre os argumentos do exerccio 8.1, usando resoluo.

Exerccio 11.6
Demonstre os teoremas do exerccio 8.2, usando resoluo.
21

Exerccio 11.7
Demonstre os teoremas do exerccio 8.3, que correspondem a aplicaes das leis de De
Morgan para os quantificadores, usando resoluo.

Exerccio 11.8
Considere as seguintes afirmaes:

Os animais com plos so mamferos.


Os ursos so animais com plos.
Os coelhos so mamferos.
O Winnie um urso.
O Bugsbunny um coelho.
O Sylvester um animal com plos.

1. Represente-as em lgica de primeira ordem.

2. Usando resoluo, responda s seguintes perguntas:

(a) O Winnie mamfero?


(b) Quem que tem plos?
(c) Quais so os mamferos?
22 12 PROGRAMAO EM LGICA RESOLUO SLD; RVORES SLD

12 Programao em Lgica Resoluo SLD; rvores SLD

Exerccio 12.1
Demonstre os argumentos do exerccio 8.1, usando resoluo SLD e uma funo de selec-
o que escolhe o primeiro literal da clusula objectivo.
Notas: Como est a tentar provar a validade de argumentos, deve fazer provas por re-
futao em que uma das clusulas corresponde negao da concluso. Uma vez que
a passagem para a forma clausal j foi feita na aula sobre resoluo, apresentam-se com
cada argumento as clusulas que lhe correspondem.

1. Argumento: ({x[F (x)]}, x[F (x)])


Clusulas: {{F (x)}, {F (y)}}

2. Argumento: ({x[F (x) G(x)], x[F (x) H(x)]}, x[G(x) H(x)])


Clusulas: {{F (x), G(x)}, {F (a)}, {H(a)}, {G(z), H(z)}}

Exerccio 12.2
Demonstre os teoremas do exerccio 8.2, usando resoluo SLD e uma funo de seleco
que escolhe o ltimo literal da clusula objectivo.
Notas: Como est a tentar provar se uma frmula teorema, pode fazer provas por
refutao em que as clusulas correspondem negao da frmula inicial. Uma vez que
a passagem para a forma clausal j foi feita na aula sobre resoluo, apresentam-se com
cada teorema as clusulas que correspondem sua negao.

1. (F (a) x[F (x) G(x)]) G(a)


{{F (a)}, {F (x), G(x)}, {G(a)}}

2. (x[F (x) G(x)] y[G(y) H(y)]) z[F (z) H(z)]


{{F (x), G(x)}, {G(y), H(y)}, {F (a)}, {H(a)}}

3. (x[F (x) H(x)] y[F (y)]) z[H(z)]


{{F (x), H(x)}, {F (a)}, {H(z)}}

Exerccio 12.3
Considere o seguinte conjunto de clusulas:

{Animal(x), T emP elos(x), M amif ero(x)}


{U rso(x), Animal(x)}
{U rso(x), T emP elos(x)}
{Coelho(x), M amif ero(x)}
{U rso(W innie)}
{Coelho(Bugsbunny)}
{Animal(Sylvester)}
{T emP elos(Sylvester)}

Usando resoluo SLD e uma funo de seleco sua escolha, responda s seguintes
perguntas:
23

1. O Winnie mamfero?

2. Quem que tem plos?

3. Quais so os mamferos?

Exerccio 12.4
Considere o seguinte conjunto de clusulas de Horn:

A(x) B(x), C(x)


B(x) D(x)
C(x) E(x)
B(a1)
E(a1)
C(a2)
C(a3)
D(a3)

Usando uma rvore de resoluo SLD e uma funo de seleco que escolha para unificar
o ltimo literal do objectivo, mostre todas as solues para o seguinte objectivo: A(x).
Notas: pode usar a estratgia de procura que preferir. No final, indique explicitamente
as solues.
24 13 PROLOG RVORES DE REFUTAO; LISTAS

13 Prolog rvores de Refutao; Listas

Exerccio 13.1
Considere o seguinte programa em Prolog:

mamifero(X) :- animal(X), tempelos(X).


animal(X) :- urso(X).
tempelos(X) :- urso(X).
mamifero(X) :- coelho(X).
urso(winnie).
coelho(bugsbunny).
animal(sylvester).
tempelos(sylvester).

Mostrando as rvores de refutao respectivas, explique o que que o Prolog responderia


s seguintes perguntas. Considere que so pedidas todas as solues em cada um dos
casos.

1. O Winnie mamfero?

2. Quem que tem plos?

3. Quais so os mamferos?

Exerccio 13.2
Considere definido da seguinte forma o predicado m(E, L):

m(X, [X|_]).
m(X, [_|Xs]) :- m(X, Xs).

Mostre as rvores de refutao para os seguintes objectivos, considerando que so pedi-


das todas as solues.

1. m(2, [1, 2, 3]).

2. m(X, [1, 2, 3]).

Exerccio 13.3
(Adaptado de The Art of Prolog, de Leon Sterling e Ehud Shapiro.)
Defina os seguintes predicados que manipulam listas. Em caso de necessidade, em cada
alnea pode usar os predicados definidos nas alneas anteriores.

1. O predicado membro(Elemento, Lista), que tem o valor verdadeiro se Elemento


for um membro da lista Lista. Por exemplo, membro(2, [1, 2, 3]) tem o va-
lor verdadeiro.
25

2. O predicado prefixo(Prefixo, Lista), que tem o valor verdadeiro se Prefixo


for um prefixo da lista Lista. Por exemplo, prefixo([1, 2], [1, 2, 3])
tem o valor verdadeiro.

3. O predicado sufixo(Sufixo, Lista), que tem o valor verdadeiro se Sufixo


for um sufixo da lista Lista. Por exemplo, sufixo([2, 3], [1, 2, 3]) tem
o valor verdadeiro.

4. O predicado sublista(Sub, Lista), que tem o valor verdadeiro se Sub for


uma sublista da lista Lista. Por exemplo, sublista([2, 3], [1, 2, 3, 4])
tem o valor verdadeiro.

5. O predicado junta(Xs, Ys, Zs), em que a lista Zs o resultado de concatenar


as listas Xs e Ys. Por exemplo, junta([1, 2], [3, 4], [1, 2, 3, 4]) tem
o valor verdadeiro.

6. Redefina os predicados membro, prefixo, sufixo e sublista em termos do


predicado junta.

7. O predicado seguidos(X, Y, Zs), que tem o valor verdadeiro se X e Y apare-


cerem seguidos na lista Zs. Por exemplo, seguidos(2, 3, [1, 2, 3]) tem o
valor verdadeiro.

8. O predicado ultimo(X, Xs), que tem o valor verdadeiro se X for o ltimo ele-
mento da lista Xs. Por exemplo, ultimo(3, [1, 2, 3]) tem o valor verdadeiro.

9. O predicado inverte(Xs, Ys), que tem o valor verdadeiro se Ys for uma lista
que contm os elementos de Xs pela ordem inversa da qual eles aparecem na lista
original. Por exemplo, inverte([1, 2, 3], [3, 2, 1]) tem o valor verda-
deiro.

10. O predicado comprimento(Xs, N), que tem o valor verdadeiro se N for o com-
primento da lista Xs. Por exemplo, comprimento([1], s(0)) tem o valor ver-
dadeiro.

11. O predicado repete(Xs, XsXs), que tem o valor verdadeiro se cada elemento
de Xs aparece repetido em XsXs. Por exemplo, repete([1, 2], [1, 1, 2,
2]) tem o valor verdadeiro.
26 14 PROLOG OPERADORES PR-DEFINIDOS

14 Prolog Operadores Pr-definidos

Exerccio 14.1
Considere o seguinte programa para calcular o factorial de um nmero.

/*
factorial1(N, F) :- F e o factorial de N.
*/
factorial1(0, 1).
factorial1(N, F) :- P is N-1, factorial1(P, FP), F is N*FP.

1. Qual a sua resposta ao objectivo factorial1(3, X)?


2. O que acontece se pedirmos uma segunda soluo? Como resolver o problema?
3. Qual a sua resposta ao objectivo factorial1(X, 6)? Como resolver o problema?

Exerccio 14.2
Escreva o predicado comp(L, C), que tem o valor verdadeiro se C o comprimento da
lista L.

1. Gerando um processo recursivo.


2. Gerando um processo iterativo.

Exerccio 14.3
Escreva o predicado somalista(Xs, S), que tem o valor verdadeiro se S corresponde
soma de todos os elementos da lista de inteiros Xs.

1. Gerando um processo recursivo.


2. Gerando um processo iterativo.

Exerccio 14.4
Escreva o predicado remove(Xs, X, Ys), que tem o valor verdadeiro se Ys resulta de
remover todas as ocorrncias de X da lista Xs.

Exerccio 14.5
Escreva o predicado escreveLista(Xs), que escreve todos os elementos da lista Xs,
um por linha, e a mensagem Fim da lista. no fim da lista.

Exerccio 14.6
Suponha que tem uma base de dados que indica as notas que os alunos tiveram nas vrias
disciplinas (nota(Nome, Disciplina, Nota)) e quais os alunos inscritos nas vrias
disciplinas (inscrito(Nome, Disciplina)).

Escreva um programa que permite lanar notas de alunos s disciplinas a que eles esto
inscritos e que determina a seguinte informao:
27

Lista dos alunos com pelo menos uma nota superior ou igual a um dado valor.

Mdia das notas de uma disciplina.

Mdia das notas de um aluno.


28 15 PROLOG CORTE; NEGAO

15 Prolog Corte; Negao

Exerccio 15.1
Escreva um programa que determina o mnimo entre dois nmeros.

1. Usando Prolog puro.

2. Usando cortes.

Exerccio 15.2
Explique porque que o seguinte programa para o minimo3 no tem os resultados es-
perados.

/*
minimo3(X, Y, Min) :- Min e o minimo dos numeros X e Y.
* /
minimo3(X, Y, X) :- X =< Y, !.
minimo3(X, Y, Y).

Exerccio 15.3
Escreva um programa em Prolog que funde duas listas ordenadas de inteiros, tendo
como resultado outra lista ordenada de inteiros, incluindo repeties. Por exemplo,
funde([1, 3, 5], [3, 7], [1, 3, 3, 5, 7]) tem o valor verdadeiro.

Exerccio 15.4
Em matemtica, um polinmio uma expresso construda a partir de uma ou mais va-
riveis e constantes, usando apenas os operadores de adio, subtraco e multiplicao,
e expoentes inteiros positivos. Por exemplo, x**2-4*x+7 a representao de um poli-
nmio em Prolog.

Considere o seguinte programa em Prolog para reconhecer polinmios.

/*
polinomio(Termo, X) :- Termo um polinomio em X.
*/
polinomio(X, X).
polinomio(Termo, _) :-
number(Termo).
polinomio(Termo1+Termo2, X) :-
polinomio(Termo1, X), polinomio(Termo2, X).
polinomio(Termo1-Termo2, X) :-
polinomio(Termo1, X), polinomio(Termo2, X).
polinomio(Termo1*Termo2, X) :-
polinomio(Termo1, X), polinomio(Termo2, X).
polinomio(Termo1/Termo2, X) :-
polinomio(Termo1, X), number(Termo2).
polinomio(Termo**N, X) :-
integer(N), N >= 0, polinomio(Termo, X).
29

Altere-o, usando cortes verdes, de modo a eliminar ramos desnecessrios da rvore de


refutao.

Exerccio 15.5
Explique qual o problema com o corte no seguinte programa:

/*
membro3(X, L) :- X e um membro de L.
*/
membro3(X, [X|_]) :- !.
membro3(X, [_|Ys]) :- membro3(X, Ys).

Exerccio 15.6
Escreva um procedimento separa(Numeros, Positivos, Negativos), em que Positivos
contm os nmeros positivos da lista de nmeros e Negativos contm os nmeros ne-
gativos da lista de nmeros. Considere que o zero um nmero positivo. Por exemplo,
separa([1, -2, 0, -3], [1, 0], [-2, -3]) tem o valor verdadeiro.

Exerccio 15.7
Escreva um predicado ifThenElse(A, B, C), que caso A tenha sucesso avalia B e caso
A falhe avalia C.

Exerccio 15.8
Considere o programa:

m(1).
m(2) :- !.
m(3).

Diga quais so todas as respostas do Prolog aos seguintes objectivos, considerando que o
utilizador escreve ; at esgotar todas as respostas:

1. ?- m(X).

2. ?- m(X), m(Y).

3. ?- m(X), !, m(Y).

4. ?- m(X), m(Y), !.

5. ?- m(1), m(2), m(3).

Exerccio 15.9
Considere o seguinte programa em Prolog.
30 15 PROLOG CORTE; NEGAO

d :- a.
d :- g.
a :- b(X), !, c(X).
a :- e.
b(1).
b(2).
c(2).
g.
e.

Construa a rvore de refutao para mostrar que d sucede atravs de g.

Exerccio 15.10
Considere o seguinte programa:

p(X, Y) :- q(X, Y).


p(a, b).
q(c, d).
q(e, f).
q(X, Y) :- r(X), !, s(Y).
q(X, Y) :- t(X, Y).
r(e).
r(f).
s(g).
s(h).
t(i, j).

Diga quais so as respostas dadas pelo Prolog ao objectivo p(X, Y), considerando que
o utilizador escreve ; at esgotar todas as respostas.

Exerccio 15.11
Considere o seguinte programa:

u(a).
u(b).

v(1).
v(2).
v(3).

w1(X, Y) :- !, u(X), v(Y).


w2(X, Y) :- u(X), !, v(Y).
w3(X, Y) :- u(X), v(Y), !.

Diga quais so as respostas dadas pelo Prolog aos objectivos w1(X, Y), w2(X, Y), e
w3(X, Y), considerando que o utilizador escreve ; at esgotar todas as respostas.
31

Exerccio 15.12
Escreva um predicado de dois argumentos diferentes, que tem sucesso apenas quando
os seus dois argumentos no so o mesmo, isto , no so unificveis.

Exerccio 15.13
Defina o conceito de duas listas serem disjuntas usando o not, partindo do princpio que
existe o predicado membro/2 que indica se um elemento membro de uma lista .

Exerccio 15.14
Considere o seguinte programa em Prolog.

pessoaAlta(X) :- not(baixa(X)), pessoa(X).


pessoa(eva).
pessoa(maria).
baixa(maria).

Qual a resposta do Prolog ao objectivo pessoaAlta(X)? Corresponde ao que estaria


intuitivamente correcto? Se no, explique como que poderia passar a corresponder.

Exerccio 15.15
Considere o seguinte programa:

p1(s(X)) :- p1(X).
p2(a).

Diga qual a resposta do Prolog ao objectivo not((p1(X), p2(X))).

Exerccio 15.16
Considere a seguinte base de conhecimento:

cao(bobi).
cao(fiel).
cao(guerreiro).
morde(guerreiro).

E as duas formas de representar que o Carlos gosta de todos os ces que no mordam.
Repare que em termos lgicos no existem diferenas entre as duas.

gosta1(carlos, X) :- cao(X), not(morde(X)).

gosta2(carlos, X) :- not(morde(X)), cao(X).

Diga qual a resposta do Prolog a cada um dos objectivos gosta1(carlos, X) e gosta2(carlos,


X). Se as repostas forem diferentes, explique a razo dessas diferenas.