\documentclass[12pt]{article}

\usepackage{times,mathptm}
\pagestyle{myheadings}



\parindent 0in
\setlength{\parindent}{0in}
\setlength{\parskip}{1ex}

\topmargin -0.1in \headheight\baselineskip
\textheight 8.5in         % 1in top and bottom margin
\textwidth 6.5in        % 1in left and right margin
\oddsidemargin 0in
\evensidemargin 0in



% \setlength{\itemsep}{0pt}

\markright{\footnotesize CS 451 Programming Paradigms, Spring 2001}

\begin{document}

\section*{Homework set 7: Unification --- due Wednesday 21 February}

Total number of points available on this homework is 100. Full credit
is equivalent to 100 points.

\begin{enumerate}


\item (50 pts.)   
Using the {\tt append} program discussed in the class, what 
unification problems will need to be solved on the following query?
On each such unification problem, show the steps of the Unification Algorithm.

{\tt append([a |  X], Y, [a, b, a])}.



\vspace*{0.20in}

\item (50 pts.)   
Sketch the steps of the Unification Algorithm for the
equations { \{\tt s1 = t1, s2 = t2\}}, where {\tt s1, s2, t1, and t2}
given below. {f, g, h, a, b} are function symbols and {X, Y, Z, U}
are variable symbols.

(i) {\tt s1 = f(g(a(), X), h(f(Y, Z))), s2 = g(Y, h(f(Z, U))), \\
         t1 = f(U, h(f(X, X))), t2 = g(f(h(X), a()), h(f(a(), b()))) },\\


(ii) {\tt s1 = f(X, Y, Z, a()), s2 = g(X, X, f(Y, Z, h(a()), h(b()))), \\
         t1 = f(Y, Z, X, a()), t2 = g(Y, Z, f(X, Z, h(X), h(W)))}.




\end{enumerate}


\end{document}

