Guião para a Segunda Aula Prática de IPL
Delfim F. Marado Torres
8 de Março de 1999
Agradeço comentários, sugestões ou correcções. O meu endereço de correio
electrónico é < delfim@mat.ua.pt > . Desde já obrigado.
1 Objectivos da aula
- Algumas considerações sobre os primeiros trabalhos práticos.
- Consolidação, através de exercícios, dos seguintes conceitos:
- regras (implicação e conjunção);
- recursão (definição de regras recursivas);
- retrocesso (``backtracking'').
- Como é que o prolog responde às questões?
2 Exercícios
2.1 Exercício (regras, recursividade, como o
prolog responde às questões)
Considere a seguinte situação:
- Um objecto A está sobre uma mesa;
- Um objecto B está sobre o objecto A.
- a)
- Instrua o interpretador de prolog sobre esta situação, usando para o efeito o
predicado sobre.
- b)
- Exprima por meio de fórmulas lógicas (e de seguida na notação do prolog) as
seguintes regras de conhecimento:
- i)
- Se um objecto está sobre outro, então está acima dele.
- ii)
- O predicado acima_de é transitivo.
- c)
- Coloque a seguinte questão ao interpretador de prolog: ``B está acima da mesa?''.
2.2 Exercício (regras, retrocesso e
recursividade)
Numa empresa fabricante de equipamento eléctrico para cozinhas, encontram-se as
seguintes proposições sobre a constituição de um fogão:
- Um fogão é composto por uma estrutura e um cordão eléctrico.
- Umas das componentes da estrutura é uma resistência de aquecimento.
- A resistência de aquecimento é em metal.
- Outra parte da estrutura é o painel do fogão.
- O painel tem um botão.
- Os botões são sempre feitos em plástico.
- O cordão eléctrico é composto de fio metálico.
- Parte do cordão eléctrico é um isolador.
- O isolador é feito de fibra plástica.
Responda, então, às alíneas seguintes:
- a)
- Recorrendo apenas aos predicados parte-de e feito-em (note que uma
palavra diferente não corresponde necessariamente a um predicado ou argumento distinto),
escreva um conjunto de cláusulas Prolog que descrevam
precisamente o conhecimento contido nas frases acima.
- b)
- Tomando em consideração a Base de Conhecimento criada na alínea anterior, diga como
procederia, face a um Interpretador de Prolog, para obter
resposta para às seguintes questões:
- Que objectos (simples) são de metal ?
- Que objectos (simples) não são de plástico ?
- c)
- Tomando em consideração a Base de Conhecimento criada na alínea a), escreva um
predicado que permita determinar se um dado objecto faz ou não parte do fogão.
Solução:
% a)
parte_de(estrutura,fogao).
parte_de(cordao_electrico,fogao).
parte_de(resistencia,estrutura).
parte_de(painel,estrutura).
parte_de(botao,painel).
parte_de(fio,cordao_electrico).
parte_de(isolador,cordao_electrico).
feito_em(resistencia,metal).
feito_em(botao,plastico).
feito_em(fio,metal).
feito_em(isolador,plastico).
% b): feito_em(X,metal).
% OU (analisar diferen,cas!!)
% feito_em(X,metal), write(X), nl, fail.
% feito_em(X,M), M \= plastico.
% OU (analisar diferen,cas!!)
% feito_em(X,M), M \= plastico, write(X), nl, fail.
% c): parte_fogao(X) :- parte_de(X,fogao).
% parte_fogao(X) :- parte_de(X,Y), parte_fogao(Y).
3 Mais ideias a reter
- Em prolog existem cláusulas de três tipos: factos, regras e questões.
- O prolog usa um conceito de ``mundo fechado'': tudo o que não está explicitado na base
de conhecimento, ou dela pode ser deduzido por aplicação de regras, é considerado
falso.