\documentclass[12pt]{article}

\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\usepackage{stmaryrd}
\usepackage{color}
\usepackage{xcolor}
\usepackage{amssymb}
\usepackage{amsxtra}
\usepackage{amsmath}
\usepackage{amstext}
\usepackage{amsthm}
\usepackage{amsbsy}
\usepackage{latexsym}
\usepackage{mathrsfs}
\usepackage{eucal}
\usepackage{alltt}
\usepackage{listings}
\usepackage{moreverb}
\usepackage{graphicx}
\usepackage{synttree}


\theoremstyle{definition}
\newtheorem{definition}{Definici\'on}[section]
\newtheorem{proposition}[definition]{Proposici\'on}
\newtheorem{lemma}[definition]{Lema}
\newtheorem{theorem}[definition]{Teorema}
\newtheorem{corollary}[definition]{Corolario}
\newtheorem{example}[definition]{Ejemplo}
\newtheorem{observation}[definition]{Observaci\'on}
\newtheorem{problem}[definition]{Problema}
\newtheorem{question}[definition]{Pregunta}

\def\proof{\noindent{\textbf{Demostraci\'on}}\\}
\def\endproof{\hfill{\ensuremath\square}}
\def\refname{Referencias}
\def\abstractname{Resumen}


\title{Documento de ejemplo para reportar tareas \\
Fundamentos de Lenguajes de Programación \\
CCOS 255}
\author{José de Jesús Lavalle Martínez}
\date{}

\begin{document}
\maketitle

\begin{abstract}
Escribir brevemente qué se está reportando y cuál es su propósito.
\end{abstract}

\section{Nombre de la primera sección}
Desarrollar el discurso correspondiente al nombre de la primera sección, por ejemplo: 

En esta sección veremos como usar los ambientes \texttt{lstlisting} (importar en el preámbulo el paquete \texttt{listings} mediante \verb+{\usepackage{listings}+) y \texttt{verbatim} (no requiere importar paquete alguno). 

Con el siguiente código en \LaTeX $\ $ usando el ambiente \verb+lstlisting+  se obtiene una presentación formateada de acuerdo al lenguaje usado, en nuestro caso ML.
\begin{verbatim}
\begin{lstlisting}[language=ML]
datatype 'a Milist = nul | ht of 'a * 'a Milist;
\end{lstlisting}
\end{verbatim}
para obtener:
\begin{lstlisting}[language=ML]
datatype 'a Milist = nul | ht of 'a * 'a Milist;
\end{lstlisting}

Para reportar lo que hace el intérprete de ML use el siguiente código en \LaTeX, sólo copie lo que responde el intérprete y enciérrelo entre \verb+\begin{verbatim}+ y \verb+\end{verbatim}+.

\begin{verbatimtab}
\begin{verbatim}
- datatype 'a Milist = nul | ht of 'a * 'a Milist;
> New type names: =Milist
  datatype 'a Milist =
  ('a Milist,
   {con 'a ht : 'a * 'a Milist -> 'a Milist, 
    con 'a nul : 'a Milist})
  con 'a ht = fn : 'a * 'a Milist -> 'a Milist
  con 'a nul = nul : 'a Milist
- 
\end{verbatim}
\end{verbatimtab}
para obtener:
\begin{verbatim}
- datatype 'a Milist = nul | ht of 'a * 'a Milist;
> New type names: =Milist
  datatype 'a Milist =
  ('a Milist,
   {con 'a ht : 'a * 'a Milist -> 'a Milist, 
    con 'a nul : 'a Milist})
  con 'a ht = fn : 'a * 'a Milist -> 'a Milist
  con 'a nul = nul : 'a Milist
- 
\end{verbatim}

\section{Nombre de la segunda sección}
Desarrollar el discurso correspondiente al nombre de la segunda sección, por ejemplo:

Más código en ML como ejemplo es:
\begin{verbatim}
\begin{lstlisting}[language=ML]
fun uneList(nul, any) = any
|   uneList(ht(h, t), any) = ht(h, uneList(t, any));
\end{lstlisting}
\end{verbatim}

para obtener:
\begin{lstlisting}[language=ML]
fun uneList(nul, any) = any
|   uneList(ht(h, t), any) = ht(h, uneList(t, any));
\end{lstlisting}

Como ejemplo final está el código para definir funciones al estilo matemático, con:
\begin{verbatim}
\begin{equation*}
sum'(n) =
\begin{cases}
0 & \text{cuando $n = 0$} \\
n + sum'(n-1) & \text{cuando $n > 0$} 
\end{cases}
\end{equation*}
\end{verbatim}
obtiene:
\begin{equation*}
sum'(n) =
\begin{cases}
0 & \text{cuando $n = 0$} \\
n + sum'(n-1) & \text{cuando $n > 0$} 
\end{cases}
\end{equation*}

\section{Eliminación de paréntesis}
\begin{example}
Elimine del siguiente término-$\lambda$ la mayor cantidad posible de paréntesis, siguiendo las convenciones establecidas.
$$((\lambda x. (\lambda y.(\lambda z.(y ((x y) z))))) (\lambda v.(\lambda w.(v w))))$$
\end{example}
\textbf{Solución:}
$${\color{red}(}(\lambda x. (\lambda y.(\lambda z.(y ((x y) z))))) (\lambda v.(\lambda w.(v w))){\color{red})} \overset{1}{=}$$
$$(\lambda x. (\lambda y.(\lambda z.(y ({\color{red}(}x y{\color{red})} z))))) (\lambda v.(\lambda w.(v w)))\overset{2}{=}$$
$$(\lambda x. (\lambda y.(\lambda z.{\color{red}(}\color{black}y (x y z){\color{red})}))) (\lambda v.(\lambda w.(v w)))\overset{5}{=}$$
$$(\lambda x. (\lambda y.{\color{red}(}\color{black}\lambda z.y (x y z){\color{red})})) (\lambda v.(\lambda w.(v w)))\overset{3}{=}$$
$$(\lambda x. {\color{red}(}\color{black}\lambda y.\lambda z.y (x y z){\color{red})}) (\lambda v.(\lambda w.(v w)))\overset{3}{=}$$
$$({\color{red}\lambda x. \lambda y.\lambda z}.y (x y z)) (\lambda v.(\lambda w.(v w)))\overset{4}{=}$$
$$(\lambda xyz.y (x y z)) (\lambda v.(\lambda w. {\color{red}(}\color{black} v w{\color{red})}))\overset{5}{=}$$
$$(\lambda xyz.y (x y z)) (\lambda v.{\color{red} (}\color{black}\lambda w.v w {\color{red} )})\overset{3}{=}$$
$$(\lambda xyz.y (x y z)) ({\color{red}\lambda v.\lambda w}.v w) \overset{4}{=}$$
$$(\lambda xyz.y (x y z)) (\lambda v w.v w)$$


\section{Representación arbórea de términos-$\lambda$}
\begin{itemize}
\item $x y z$ se representa mediante
\begin{center}
\synttree[@ [@ [$x$] [y]] [$z$] ]
\end{center}
\item $x (y z)$ se representa mediante
\begin{center}
\synttree[@ [$x$] [@ [$y$][$z$]]]
\end{center}
\item A $(\lambda x.x) y x$ le corresponde el siguiente árbol
\begin{center}
\synttree[@ [@ [$\lambda x$ [$x$]][$y$]] [$x$]]
\end{center}
\end{itemize}
\section{Conclusiones}
Escribir dos o tres conclusiones sobre el trabajo desarrollado con respecto al propósito establecido en el resumen.

\end{document}