Escolar Documentos
Profissional Documentos
Cultura Documentos
PARTE I
PARTE II
PARTE III
Logica Matematica
Joseluce de Farias Cunha
PROLOG
1 / 186
Introducao
PARTE I
PARTE II
PARTE III
1 Introducao
2 PARTE I
Programacao em Logica e Prolog
Implementacoes Prolog
Sintaxe SWI-Prolog
Usando o SWI-Prolog
3 PARTE II
Fatos
Consultas
Regras
Regras recursivas
4 PARTE III
Listas
Aritmetica
Corte
2 / 186
Introducao
PARTE I
PARTE II
PARTE III
Introducao
Espera-se que apos esta parte do curso, o aluno seja capaz de:
compreender e executar programas Prolog;
modificar programas Prolog;
escrever programas Prolog basicos e intermediarios.
3 / 186
Introducao
PARTE I
PARTE II
PARTE III
Bibliografia
Judith L. Gersting.
Fundamentos matematicos para a Ciencia da Computacao.
LTC, 2001.
Ivan Bratko.
Prolog Programming for Artificial Intelligence.
Addison-Wesley, 1986.
Marco A. Casanova, Fernando Giorno & Antonio L. Furtado.
Programacao em logica e a linguagem Prolog.
Edgar Blucher, 1987.
L. Sterling e E. Shapiro.
The Art of Prolog.
MIT Press, 1986.
4 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
PARTE I
5 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
6 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
11 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Implementacoes Prolog
12 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Sintaxe SWI-Prolog
13 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Sintaxe SWI-Prolog
14 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Sintaxe SWI-Prolog
Alguns caracteres sao especiais para impressao, sao eles:
nl, \n, \l - nova linha.
\r - retorna ao incio da linha;
\t - tabulacao;
\% - imprime o smbolo %;
Existem dois tipos de comentarios em Prolog, sao eles:
% - todo texto existente na mesma linha apos o smbolo e
considerado comentario;
/* */ - todo o texto entre os smbolos e considerado comentario.
Exemplo
15 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
17 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
18 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
19 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
20 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
21 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
22 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
23 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
24 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
25 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
26 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
27 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
28 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
29 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
30 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
31 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
32 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
Exerccio
33 / 186
Introducao Programacao em Logica e Prolog
PARTE I Implementacoes Prolog
PARTE II Sintaxe SWI-Prolog
PARTE III Usando o SWI-Prolog
Usando o SWI-Prolog
start( ) :-
write(Digite o valor de X: ), nl,
read(X), nl,
write(X), nl.
Exemplo
?- atom(vINCENT).
?- var(X).
?- is list([a, b, c]).
?- number(23).
?- start(X).
|: 1 .
34 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
PARTE II
35 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
36 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Durante toda a PARTE II iremos descrever as seguintes relacoes:
Fatos
Definidos os predicados:
homem(x) - significando que x e um homem;
mulher(x) - significando que x e um mulher;
genitor(x, y) - significando que x e genitor de y;
Usando apenas fatos, descreva as seguintes relacoes:
tom, bob, jim, sao homens;
pam, liz, ann e pat, sao mulheres;
tom e pam sao os pais de bob;
bob e pai de ann e pat;
pat e a mae de jim.
38 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
39 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
40 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
41 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
42 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
43 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
44 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
45 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
46 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
47 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
48 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
49 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
50 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
51 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exemplo
pause
52 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
53 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
54 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
55 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
56 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
57 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
58 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
59 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
60 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
61 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
62 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
63 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Fatos
Exerccio
64 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
65 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
66 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
67 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
68 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
69 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
70 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
71 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
72 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
73 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
74 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
75 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
76 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
homem(tom). % fato
mulher(pam). % fato
genitor(pam, bob). % fato
genitor(tom, bob). % fato
Exemplo
77 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
78 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
79 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
80 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
81 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
82 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
83 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
84 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
85 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
86 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
87 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
88 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
89 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
90 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
91 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
92 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
93 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
94 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
95 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
96 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
97 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
98 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
99 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
100 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
101 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
102 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
103 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
104 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
105 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exemplo
1. chama(a,b). % fato
2. usa(b,e). % fato
3. depende(X, Y) :- chama(X,Y). % regra
4. depende(X,Y) :- usa(X, Y). % regra
5. depende(X, Y) :- chama(X, Z), depende(Z, Y). % regra recursiva
Exemplo
106 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
107 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
108 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
109 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
110 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
111 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
112 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
113 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
114 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
115 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
116 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
117 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
118 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
119 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
120 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Consultas
Exerccio
pause
121 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Regras facilitam a execucao de consultas e tornam um programa muito
mais expressivo.
Exemplo
Regras
Exemplo
Tem-se a base:
mulher(pam). homem(jim). genitor(pam, bob).
homem(tom). mulher(ann). genitor(tom, bob).
homem(bob). genitor(pat, jim). genitor(tom, liz). a
mulher(liz). genitor(bob, pat). genitor(bob, ann).
mulher(pat).
123 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Exemplo
Tem-se a base:
mulher(pam). homem(jim). genitor(pam, bob).
homem(tom). mulher(ann). genitor(tom, bob).
homem(bob). genitor(pat, jim). genitor(tom, liz). a
mulher(liz). genitor(bob, pat). genitor(bob, ann).
mulher(pat).
Assim:
prole(X,Y) :- genitor(Y,X).
124 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Consultas sao realizadas sobre regras do mesmo modo como ocorrem
sobre fatos.
Exemplo
prole(X,Y) :-
genitor(Y,X).
Exemplo
?- prole(pam, bob).
125 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Consultas sao realizadas sobre regras do mesmo modo como ocorrem
sobre fatos.
Exemplo
prole(X,Y) :-
genitor(Y,X).
Exemplo
Regras
Consultas sao realizadas sobre regras do mesmo modo como ocorrem
sobre fatos.
Exemplo
prole(X,Y) :- match
genitor(Y,X).
Exemplo
?- prole(pam, bob).
127 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Consultas sao realizadas sobre regras do mesmo modo como ocorrem
sobre fatos.
Exemplo
Exemplo
?- prole(pam, bob).
128 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Consultas sao realizadas sobre regras do mesmo modo como ocorrem
sobre fatos.
Exemplo
prole(X,Y) :-
genitor(Y,X). nova meta
Exemplo
?- prole(pam, bob).
129 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Consultas sao realizadas sobre regras do mesmo modo como ocorrem
sobre fatos.
Exemplo
prole(X,Y) :-
genitor(Y,X). Unifica [X/pam] e [Y/bob]
Exemplo
?- prole(pam, bob).
130 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Consultas sao realizadas sobre regras do mesmo modo como ocorrem
sobre fatos.
Exemplo
prole(X,Y) :-
genitor(Y,X). Encontra o fato genitor(pam,bob).
Exemplo
?- prole(pam, bob).
131 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Consultas sao realizadas sobre regras do mesmo modo como ocorrem
sobre fatos.
Exemplo
prole(X,Y) :-
genitor(Y,X). Satisfaz a consulta.
Exemplo
?- prole(pam, bob).
132 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Consultas sao realizadas sobre regras do mesmo modo como ocorrem
sobre fatos.
Exemplo
prole(X,Y) :-
genitor(Y,X).
Exemplo
?- prole(pam, bob).
133 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Exerccio
5. Tem-se a base:
a)mulher(pam). f)homem(jim). k)genitor(pam, bob).
b)homem(tom). g)mulher(ann). l)genitor(tom, bob).
c)homem(bob). h)genitor(pat, jim). m)genitor(tom, liz). a
d)mulher(liz). i)genitor(bob, pat). n)genitor(bob, ann).
e)mulher(pat). j)prole(X,Y) :- genitor(Y,X). % regra
pause
134 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Exerccio
5. Tem-se a base:
a)mulher(pam). f)homem(jim). k)genitor(pam, bob).
b)homem(tom). g)mulher(ann). l)genitor(tom, bob).
c)homem(bob). h)genitor(pat, jim). m)genitor(tom, liz). a
d)mulher(liz). i)genitor(bob, pat). n)genitor(bob, ann).
e)mulher(pat). j)prole(X,Y) :- genitor(Y,X). % regra
pause
135 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Exerccio
5. Tem-se a base:
a)mulher(pam). f)homem(jim). k)genitor(pam, bob).
b)homem(tom). g)mulher(ann). l)genitor(tom, bob).
c)homem(bob). h)genitor(pat, jim). m)genitor(tom, liz). a
d)mulher(liz). i)genitor(bob, pat). n)genitor(bob, ann).
e)mulher(pat). j)prole(X,Y) :- genitor(Y,X). % regra
pause
136 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Exerccio
5. Tem-se a base:
a)mulher(pam). f)homem(jim). k)genitor(pam, bob).
b)homem(tom). g)mulher(ann). l)genitor(tom, bob).
c)homem(bob). h)genitor(pat, jim). m)genitor(tom, liz). a
d)mulher(liz). i)genitor(bob, pat). n)genitor(bob, ann).
e)mulher(pat). j)prole(X,Y) :- genitor(Y,X). % regra
pause
137 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Exerccio
5. Tem-se a base:
a)mulher(pam). f)homem(jim). k)genitor(pam, bob).
b)homem(tom). g)mulher(ann). l)genitor(tom, bob).
c)homem(bob). h)genitor(pat, jim). m)genitor(tom, liz). a
d)mulher(liz). i)genitor(bob, pat). n)genitor(bob, ann).
e)mulher(pat). j)prole(X,Y) :- genitor(Y,X). % regra
pause
138 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Exemplo
Dada a base:
a)mulher(pam). f)homem(jim). k)genitor(pam, bob).
b)homem(tom). g)mulher(ann). l)genitor(tom, bob).
c)homem(bob). h)genitor(pat, jim). m)genitor(tom, liz).
d)mulher(liz). i)genitor(bob, pat). n)genitor(bob, ann).
e)mulher(pat). j)prole(X,Y) :- genitor(Y,X). % regra
pause
139 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Exemplo
Dada a base:
a)mulher(pam). f)homem(jim). k)genitor(pam, bob).
b)homem(tom). g)mulher(ann). l)genitor(tom, bob).
c)homem(bob). h)genitor(pat, jim). m)genitor(tom, liz).
d)mulher(liz). i)genitor(bob, pat). n)genitor(bob, ann).
e)mulher(pat). j)prole(X,Y) :- genitor(Y,X). % regra
pause
140 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Exemplo
Dada a base:
a)mulher(pam). f)homem(jim). k)genitor(pam, bob).
b)homem(tom). g)mulher(ann). l)genitor(tom, bob).
c)homem(bob). h)genitor(pat, jim). m)genitor(tom, liz).
d)mulher(liz). i)genitor(bob, pat). n)genitor(bob, ann).
e)mulher(pat). j)prole(X,Y) :- genitor(Y,X). % regra
pause
141 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Exerccio
6. Tem-se a base:
a)animal(urso). h)animal(guaxinim). o)come(peixe,peixinho).
b)animal(peixe). i)planta(alga). p)come(peixinho,alga).
c)animal(peixinho). j)planta(grama). q)come(guaxinim,peixe).
d)animal(lince). k)come(urso,peixe). r)come(raposa,coelho).
e)animal(raposa). l)come(lince,veado). s)come(coelho,grama).
f)animal(coelho). m)come(urso,raposa). t)come(veado,grama).
g)animal(veado). n)come(urso,veado). u)come(urso,guaxinim).
a
pause
142 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras
Exerccio
6. Tem-se a base:
a)animal(urso). h)animal(guaxinim). o)come(peixe,peixinho).
b)animal(peixe). i)planta(alga). p)come(peixinho,alga).
c)animal(peixinho). j)planta(grama). q)come(guaxinim,peixe).
d)animal(lince). k)come(urso,peixe). r)come(raposa,coelho).
e)animal(raposa). l)come(lince,veado). s)come(coelho,grama).
f)animal(coelho). m)come(urso,raposa). t)come(veado,grama).
g)animal(veado). n)come(urso,veado). u)come(urso,guaxinim).
a
pause
143 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras recursivas
144 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras recursivas
Exemplo
Exemplo
Regras recursivas
Exemplo
Exemplo
Regras recursivas
Exemplo
Exemplo
Regras recursivas
Exemplo
Exemplo
Regras recursivas
Exemplo
Exemplo
Regras recursivas
Exemplo
Exemplo
Regras recursivas
Exemplo
Exemplo
Regras recursivas
Exemplo
Exemplo
Regras recursivas
Exemplo
Exemplo
Regras recursivas
Exerccio
7. Tem-se a base:
a)animal(urso). h)animal(guaxinim). o)come(peixe,peixinho).
b)animal(peixe). i)planta(alga). p)come(peixinho,alga).
c)animal(peixinho). j)planta(grama). q)come(guaxinim,peixe).
d)animal(lince). k)come(urso,peixe). r)come(raposa,coelho).
e)animal(raposa). l)come(lince,veado). s)come(coelho,grama).
f)animal(coelho). m)come(urso,raposa). t)come(veado,grama).
g)animal(veado). n)come(urso,veado). u)come(urso,guaxinim).
a
pause
154 / 186
Introducao Fatos
PARTE I Consultas
PARTE II Regras
PARTE III Regras recursivas
Regras recursivas
Exerccio
7. Tem-se a base:
a)animal(urso). h)animal(guaxinim). o)come(peixe,peixinho).
b)animal(peixe). i)planta(alga). p)come(peixinho,alga).
c)animal(peixinho). j)planta(grama). q)come(guaxinim,peixe).
d)animal(lince). k)come(urso,peixe). r)come(raposa,coelho).
e)animal(raposa). l)come(lince,veado). s)come(coelho,grama).
f)animal(coelho). m)come(urso,raposa). t)come(veado,grama).
g)animal(veado). n)come(urso,veado). u)come(urso,guaxinim).
a
pause
155 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
PARTE III
156 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Listas
Exemplo
157 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Listas
Listas podem ser de dois tipos:
vazias - quando nao contem nenhum elemento, representadas por [];
nao-vazias - quando contem ao menos um elemento.
Listas
Exerccio
pause
159 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Listas
Exerccio
pause
160 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Aritmetica
Prolog e mais indicada para resolucao de problemas simbolicos, mas
tambem oferece suporte a aritmetica.
161 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Aritmetica
Sao oferecidos diversos predicados para operacoes aritmeticas, alguns
destes sao:
+, , , /, para realizar soma, subtracao, multiplicacao e divisao,
respectivamente;
is, atribui uma expressao numerica a uma variavel;
mod, para obter o resto da divisao;
b, para potenciacao;
cos, sin, tan, funcao cosseno, seno e tangente, respectivamente;
exp, exponencial;
ln, log, logaritmo natural e logaritmo;
sqrt, raiz quadrada.
Aritmetica
Prolog tambem possui predicados para comparacao, os operadores sao:
>, maior que;
<, menor que;
>=, maior ou igual;
=<, menor ou igual;
=:=, igual;
= / =, diferente.
?- 1 + 2 = 2 + 1. No
?- 1 + 2 =:= 2 + 1. Yes
?- 1 + A = B + 2. A = 2 B = 1 ; No
?- A =:= 1. ERROR
163 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Aritmetica
Prolog tambem possui predicados para comparacao, os operadores sao:
>, maior que;
<, menor que;
>=, maior ou igual;
=<, menor ou igual;
=:=, igual;
= / =, diferente.
?- 1 + 2 = 2 + 1. No
?- 1 + 2 =:= 2 + 1. Yes
?- 1 + A = B + 2. A = 2 B = 1 ; No
?- A =:= 1. ERROR
164 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Aritmetica
Prolog tambem possui predicados para comparacao, os operadores sao:
>, maior que;
<, menor que;
>=, maior ou igual;
=<, menor ou igual;
=:=, igual;
= / =, diferente.
?- 1 + 2 = 2 + 1. No
?- 1 + 2 =:= 2 + 1. Yes
?- 1 + A = B + 2. A = 2 B = 1 ; No
?- A =:= 1. ERROR
165 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Aritmetica
Prolog tambem possui predicados para comparacao, os operadores sao:
>, maior que;
<, menor que;
>=, maior ou igual;
=<, menor ou igual;
=:=, igual;
= / =, diferente.
?- 1 + 2 = 2 + 1. No
?- 1 + 2 =:= 2 + 1. Yes
?- 1 + A = B + 2. A = 2 B = 1 ; No
?- A =:= 1. ERROR
166 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Aritmetica
Prolog tambem possui predicados para comparacao, os operadores sao:
>, maior que;
<, menor que;
>=, maior ou igual;
=<, menor ou igual;
=:=, igual;
= / =, diferente.
?- 1 + 2 = 2 + 1. No
?- 1 + 2 =:= 2 + 1. Yes
?- 1 + A = B + 2. A = 2 B = 1 ; No
?- A =:= 1. ERROR
167 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Aritmetica
Exemplo
Exerccio
Aritmetica
Exemplo
Exerccio
Aritmetica
Exemplo
Exerccio
Aritmetica
Exemplo
Exerccio
Corte
Prolog realiza busca exaustiva para responder uma consulta, ou seja,
todas as clausulas existentes sao analisadas.
Pro: todas as solucoes possveis sao obtidas.
Contra: uma busca pode ser extremamente ineficiente.
Para minimizar os casos de ineficiencia, o operador de corte (!) pode ser
utilizado. Este operador impede que busca posteriores sejam realizadas.
Exemplo
172 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Corte
O operador de corte e extremamente util, porem, deve ser utilizado com
cuidado.
Um programa sem cortes pode ter a ordem das clausulas alterada e este
ira realizar a mesma computacao. Ja um programa com cortes pode ter
seu significado alterado caso a ordem das regras seja modificada.
Exemplo
O programa abaixo, sem cortes, nao teria seu significado alterado caso a
ordem das regras fosse modificada.
a(1).
b(2).
c(1).
1.p(X) :- a(X), b(X).
2.p(X) :- c(X).
?- p(1).
?- p(2).
173 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Corte
O operador de corte e extremamente util, porem, deve ser utilizado com
cuidado.
Um programa sem cortes pode ter a ordem das clausulas alterada e este
ira realizar a mesma computacao. Ja um programa com cortes pode ter
seu significado alterado caso a ordem das regras seja modificada.
Exemplo
O programa abaixo, sem cortes, nao teria seu significado alterado caso a
ordem das regras fosse modificada.
a(1).
b(2).
c(1).
1.p(X) :- a(X), b(X).
2.p(X) :- c(X).
?- p(1). Yes
?- p(2).
174 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Corte
O operador de corte e extremamente util, porem, deve ser utilizado com
cuidado.
Um programa sem cortes pode ter a ordem das clausulas alterada e este
ira realizar a mesma computacao. Ja um programa com cortes pode ter
seu significado alterado caso a ordem das regras seja modificada.
Exemplo
O programa abaixo, sem cortes, nao teria seu significado alterado caso a
ordem das regras fosse modificada.
a(1).
b(2).
c(1).
1.p(X) :- a(X), b(X).
2.p(X) :- c(X).
?- p(1). Yes
?- p(2). No
175 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Corte
O operador de corte e extremamente util, porem, deve ser utilizado com
cuidado.
Um programa sem cortes pode ter a ordem das clausulas alterada e este
ira realizar a mesma computacao. Ja um programa com cortes pode ter
seu significado alterado caso a ordem das regras seja modificada.
Exemplo
O programa abaixo, sem cortes, nao teria seu significado alterado caso a
ordem das regras fosse modificada.
a(1).
b(2).
c(1).
1.p(X) :- c(X).
2.p(X) :- a(X), b(X).
?- p(1).
?- p(2).
176 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Corte
O operador de corte e extremamente util, porem, deve ser utilizado com
cuidado.
Um programa sem cortes pode ter a ordem das clausulas alterada e este
ira realizar a mesma computacao. Ja um programa com cortes pode ter
seu significado alterado caso a ordem das regras seja modificada.
Exemplo
O programa abaixo, sem cortes, nao teria seu significado alterado caso a
ordem das regras fosse modificada.
a(1).
b(2).
c(1).
1.p(X) :- c(X).
2.p(X) :- a(X), b(X).
?- p(1). Yes
?- p(2).
177 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Corte
O operador de corte e extremamente util, porem, deve ser utilizado com
cuidado.
Um programa sem cortes pode ter a ordem das clausulas alterada e este
ira realizar a mesma computacao. Ja um programa com cortes pode ter
seu significado alterado caso a ordem das regras seja modificada.
Exemplo
O programa abaixo, sem cortes, nao teria seu significado alterado caso a
ordem das regras fosse modificada.
a(1).
b(2).
c(1).
1.p(X) :- c(X).
2.p(X) :- a(X), b(X).
?- p(1). Yes
?- p(2). No
178 / 186
Introducao
Listas
PARTE I
Aritmetica
PARTE II
Corte
PARTE III
Corte
Exemplo
Exerccio
Corte
Exemplo
Exerccio
Corte
Exemplo
Exerccio
Corte
Exemplo
Exerccio
Corte
Exemplo
Exerccio
Corte
Exemplo
Exerccio
Corte
Exemplo
Exerccio
Sumario
Fatos, consultas...
Regras, regras recursivas...
Listas...
Aritmetica...
Corte...
186 / 186