\documentclass[12pt, a4paper]{report}

\pagestyle{empty}
\begin{document}
 
\noindent Bacharelado em Ci\^{e}ncia da Computa\c{c}\~{a}o
\hfill DCC/ICEx/UFMG
 
\noindent {\it Intelig\^encia Artificial}
\hfill $\mbox{2}^{\mbox{\underline{o}}}$ semestre de 2001
 
\noindent Prof.: Newton Jos\'{e} Vieira
 
\noindent {\bf Primeiro Exerc\'{\i}cio de Prolog} \hfill Devolu\c c\~ao: 23/08/01

\vspace*{7mm}
Modifique o programa da Figura 2.14 do livro texto de Prolog, que pode ser
recuperado no ender\^e\c co www.booksites.net/bratko (arquivo fig2\_14.pl),
de tal forma que ele retorne uma sequ\^encia de opera\c c\~oes que deve ser
executada pelo macaco (caso exista alguma) para que ele consiga a banana.

\vspace*{6mm}
\noindent {\bf Sugest\~ao:}

\vspace*{3mm}
Rotule o estado inicial com uma constante; por exemplo: \verb|i|. Com isto o
estado inicial seria \verb|state(atdoor,onfloor,atwindow,hasnot,i)|.
A estrutura que representa um estado tem um argumento a mais para
o r\'otulo do estado, que ir\'a representar a sequ\^encia de opera\c c\~oes
utilizada para se alcan\c car o estado. Ao se
aplicar a opera\c c\~ao {\em push\/}, por exemplo, o estado mudaria de
\begin{center}
 \verb|state(P1,onfloor,P1,H,S)|
\end{center}
para
\begin{center}
 \verb|state(P2,onfloor,P2,H,push(P1,P2,S))|.
\end{center}
Fazendo-se as modifica\c c\~oes pertinentes, a uma consulta da forma
\begin{flushleft}
 \verb|?- canget(state(atdoor,onfloor,atwindow,hasnot,i),S).|
\end{flushleft}
ter-se-\'a uma resposta da forma:
\begin{flushleft}
 \verb|S = grasp(climb(push(atwindow,middle,walk(atdoor,atwindow,i))))|.
\end{flushleft}

\end{document}
 
