\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}


\newcommand{\roj}[1]{\ensuremath{{\color{red}#1}}}

\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 \\
Primavera 2021}
\author{José de Jesús Lavalle Martínez}

\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{Sintaxis para los términos aritméticos}
Poniendo todo junto tenemos:
{\color{brown}
\begin{align*}
d &::= {\color{black} 0} | {\color{black} 1} | \cdots | {\color{black} 9} \\
n &::= d | nd \\
e &::= n | {\color{black}(}e_i {\color{black} +} e_d{\color{black})} | {\color{black}(}e_i {\color{black} -} e_d{\color{black})} | {\color{black}(}e_i {\color{black} *} e_d{\color{black})}
\end{align*}}

\section{Semántica para los términos aritméticos}
Ahora le daremos significado (también podemos decir evaluaremos o interpretaremos) a nuestro lenguaje de términos aritméticos, mediante la siguiente función de significado.
{\color{blue}
$$\llbracket \rrbracket : {\color{black} \mathcal{LTA}} \rightarrow {\color{red} \mathbb{Z}}$$
\begin{align*}
\llbracket {\color{black} 0} \rrbracket &= {\color{red} 0}, \ldots, \llbracket {\color{black} 9} \rrbracket = {\color{red} 9} \\
\llbracket {\color{brown} nd}  \rrbracket &= \roj{(} {\color{red}(}\llbracket {\color{brown} n} \rrbracket {\color{red}* 10) +} \llbracket {\color{brown} d} \rrbracket \roj{)} \\
\llbracket {\color{brown} e_i {\color{black} +} e_d} \rrbracket &= \roj{(} \llbracket {\color{brown} e_i} \rrbracket {\color{red}+} \llbracket {\color{brown} e_d} \rrbracket \roj{)} \\
\llbracket {\color{brown} e_i {\color{black} -} e_d} \rrbracket &= \roj{(} \llbracket {\color{brown} e_i} \rrbracket {\color{red}-} \llbracket {\color{brown} e_d} \rrbracket \roj{)} \\
\llbracket {\color{brown} e_i {\color{black} *} e_d} \rrbracket &= \roj{(} \llbracket {\color{brown} e_i} \rrbracket {\color{red}*} \llbracket {\color{brown} e_d} \rrbracket \roj{)}
\end{align*}}
\section{Ejemplo}
Como ejemplo tenemos:
\begin{figure}[h]
\begin{center}
\scalebox{0.60}
{\color{blue}
\synttree
[$\llbracket {\color{black} \overbrace{(315 -15)}^{{\color{brown}e_i} - {\color{brown}e_d}}} \rrbracket$
  [${\color{red} - = 300}$
  [$\llbracket {\color{black} \overbrace{315}^{{\color{brown} nd}}}\rrbracket$
    [${\color{red} + = 315}$
      [${\color{red} * = 310}$
        [$\llbracket {\color{black} \overbrace{31}^{{\color{brown} nd}}}\rrbracket$
          [${\color{red} + = 31}$
            [${\color{red} * = 30}$
              [$\llbracket {\color{black} \overbrace{3}^{{\color{brown} n}}}\rrbracket$
                [$\llbracket {\color{black} \overbrace{3}^{{\color{brown} d}}}\rrbracket$
                  [${\color{red} 3}$]
                ]
              ]
              [${\color{red} 10}$]
            ]
            [$\llbracket {\color{black} \overbrace{1}^{{\color{brown} d}}}\rrbracket$
              [${\color{red} 1}$]
            ]
          ]
        ]
        [${\color{red} 10}$]
      ]
      [$\llbracket {\color{black} \overbrace{5}^{{\color{brown} d}}}\rrbracket$
        [${\color{red} 5}$]
      ]
    ]
  ]
  [$\llbracket {\color{black} \overbrace{15}^{{\color{brown} nd}}}\rrbracket$
    [${\color{red} + = 15}$
      [${\color{red} * = 10}$
        [$\llbracket {\color{black} \overbrace{1}^{{\color{brown} n}}}\rrbracket$
          [$\llbracket {\color{black} \overbrace{1}^{{\color{brown} d}}}\rrbracket$
            [${\color{red} 1}$]
          ]
        ]
        [${\color{red} 10}$]
      ]
      [$\llbracket {\color{black} \overbrace{5}^{{\color{brown} d}}}\rrbracket$
        [${\color{red} 5}$]
      ]
    ]
  ]
  ]
]}
\end{center}
\end{figure}

\section{Inclusión de imágenes}
Para incluir imágenes escriba el siguiente código en \LaTeX.
\begin{verbatim}
\begin{figure}[h]
\centering
\includegraphics[width=0.9\textwidth]{CapturaPantallaX}
\caption{Captura de pantalla del ejercicio X.}
\label{fig1}
\end{figure}
\end{verbatim}

Y obtendrá la Figura \ref{fig1}.
\begin{figure}
\centering
\includegraphics[width=0.9\textwidth]{CapturaPantallaX}
\caption{Captura de pantalla del ejercicio X.}
\label{fig1}
\end{figure}

Tenga en cuenta que:
{\footnotesize
\begin{itemize} 
\item se puede hacer referencia a la figura (mediante \verb+\ref{fig1}+);
\item puede contener una leyenda
(mediante\verb+\caption{Captura de pantalla del ejercicio X.}+);
\item puede ajustar el tamaño de la imagen (mediante \verb+width=0.9+) en el argumento de \verb+\includegraphics+.
\item la imagen debe estar en alguno de los siguientes formatos: eps, pdf, png, jpeg, jbig2. Yo uso el formato png porque es en el formato que me lo deja el sistema operativo cuando hago una captura de pantalla.
\item la imagen la acomodará \LaTeX \ automáticamente donde considera que es mejor.
\end{itemize}
}

\section{Conclusiones}
Escribir dos o tres conclusiones sobre el trabajo desarrollado con respecto al propósito establecido en el resumen.

\end{document}