From 20e49832cd05b34c7dc275f9746442e6457d4c6e Mon Sep 17 00:00:00 2001 From: Vladimir Date: Wed, 15 Feb 2023 18:10:02 -0600 Subject: [PATCH] primer commit --- altorden.py | 19 ++ altorden.py~ | 14 + calculo_lambda.pdf | Bin 0 -> 157197 bytes calculo_lambda.tex | 200 +++++++++++ calculo_lambda.tex~ | 412 ++++++++++++++++++++++ introduccion.aux | 43 --- introduccion.log | 817 -------------------------------------------- introduccion.out | 0 nats.py | 6 + pascalazy.py | 22 ++ pascalazy.py~ | 22 ++ prim.py~ | 22 ++ 12 files changed, 717 insertions(+), 860 deletions(-) create mode 100644 altorden.py create mode 100644 altorden.py~ create mode 100644 calculo_lambda.pdf create mode 100644 calculo_lambda.tex create mode 100644 calculo_lambda.tex~ delete mode 100644 introduccion.aux delete mode 100644 introduccion.log delete mode 100644 introduccion.out create mode 100644 nats.py create mode 100644 pascalazy.py create mode 100644 pascalazy.py~ create mode 100644 prim.py~ diff --git a/altorden.py b/altorden.py new file mode 100644 index 0000000..3210414 --- /dev/null +++ b/altorden.py @@ -0,0 +1,19 @@ +def pascal(n): + if n==1: + return [1] + else: + r=pascal(n-1) + x=[0]+r + y=r+[0] + return [i+j for i,j in zip(x,y)] + +def conc(func,n): + nueva = [0]+func(n) + print(nueva) + +def concs(func,n): + nueva = func(n)+func(n+1) + print(nueva) + +conc(pascal,5) +concs(pascal,5) diff --git a/altorden.py~ b/altorden.py~ new file mode 100644 index 0000000..1cabb5d --- /dev/null +++ b/altorden.py~ @@ -0,0 +1,14 @@ +def pascal(n): + if n==1: + return [1] + else: + r=pascal(n-1) + x=[0]+r + y=r+[0] + return [i+j for i,j in zip(x,y)] + +def conc(func,n): + nueva = [0]+func(n) + print(nueva) + +conc(pascal,5) diff --git a/calculo_lambda.pdf b/calculo_lambda.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7ab1c7a17a5cca2140cd77f89692d11ed0564d9f GIT binary patch literal 157197 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

+6Qo~_dI&KNd{VN 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,node distance=2cm,on grid,auto] + \node[state,initial,initial text= ] (S) {$S$}; + \node[state,xshift=1cm,right=of S] (q_1) {$q_1$}; + \node[state,above right=of q_1] (q_4) {$q_4$}; + \node[state,below right=of q_4] (q_2) {$q_2$}; + \node[state,below=of S] (r) {$r$}; + \node[state,below=of q_1] (t) {$t$}; + \node[state,below=of q_2] (q_3) {$q_3$}; + + + \path [-stealth,thick] + (S) edge node[yshift=-0.3cm]{$0\Rightarrow \textvisiblespace, \rightarrow$} (q_1) + edge node[xshift=-0.5cm] {$\begin{array}{c l} + \textvisiblespace \Rightarrow - \\ + x\Rightarrow - + \end{array}$} (r) + (q_1) edge node[yshift=-0.3cm]{$0\Rightarrow x,\rightarrow$} (q_2) + edge [loop above] node {$x\Rightarrow \rightarrow$} () + edge node[xshift=-0.5cm]{$\textvisiblespace \Rightarrow -$} (t) + (q_2) edge[loop above] node{$x\Rightarrow \rightarrow$} () + edge [bend right] node[xshift=-0.5cm]{$0\Rightarrow \rightarrow$} (q_3) + edge node{$\textvisiblespace \Rightarrow \leftarrow$} (q_4) + (q_3) edge[bend right] node[xshift=0.5cm]{$0\Rightarrow x,\rightarrow$} (q_2) + edge [loop right] node{$x\Rightarrow \rightarrow$} () + edge [bend left] node[yshift=0.3cm]{$\textvisiblespace \Rightarrow -$} (r) + (q_4) edge[loop above] node{$\begin{array}{c l} + 0 \Rightarrow \leftarrow \\ + x\Rightarrow \leftarrow + \end{array}$} () + edge node{$\textvisiblespace \Rightarrow \rightarrow$} (q_1); + \end{tikzpicture} + \caption{Diagrama de estados de la máquina de Turing descrita.} + \label{fig:tur3} + \end{center} +\end{figure} + +\section*{Otros modelos computacionales} + +El modelo de máquina de Turing ajusta muy bien para cuando se trabaja de manera teórica con computadoras, pero quizá pueda parecer demasiado mecánico y no se parece a como operamos con computadoras hoy en día. Existen más modelos que sonm equivalentes, sabemos de esa equivalencia por la \textbf{tesis Church-Turing}. + +\newtheorem{church}{Tesis de Church-Turing} +\begin{church} + Toda función es efectivamente calculable sí y sólo sí es calculable por una máquina de Turing. +\end{church} + +En esos otros modelos se encuentran las funciones recursivas $\mu$, relacionadas dierctamente al trabajo de Gödel al preguntarse ¿cuál es el mínimo de funciones necesarias para definir a todas las funciones computables? + +\begin{enumerate} +\item \emph{Sucesor}. La función $\mathbf{s}:\mathbb{N} \rightarrow \mathbb{N}$ dadas por $\mathbf{s}(x)=x+1$ es computable. +\item \emph{Cero}. La función $\mathbf{z}: \mathbb{N}^0 \rightarrow \mathbb{N}$ dada por $\mathbb{z}()=0$ es computable. +\item \emph{Proyecciones}. Las funciones $\pi_k^n: \mathbb{N}^n \rightarrow \mathbb{N}$ dadas por $\pi_k^n(x_1,...,x_n) = x_k,\ 1\leq k \leq n$, son computables. +\item \emph{Composición}. Si $f:\mathbb{N}^k \rightarrow \mathbb{N}$ y $g_1,...g_k:\mathbb{N}^n \rightarrow \mathbb{N}$ son computables, entonces también lo es la función $f\circ (g_1,...,g_k):\mathbb{N}^n \rightarrow\mathbb{N}$ que en la entrada $\overline{x}= x_1,...,x_n$, da + \begin{equation*} + f(g_1(\overline{x}),...,g_k(\overline{x})) + \end{equation*} +\item \emph{Recursión primitiva}. Si $h_i:\mathbb{N}^{n} \rightarrow \mathbb{N}$ y $g_i:\mathbb{N}^{n+k+1} \rightarrow \mathbb{N}$ son computables, $1\leq i \leq k$, entonces también lo son las funciones $f_i:\mathbb{N}^{n+1} \rightarrow \mathbb{N},\ 1\leq i \leq k$, definidas por inducción mutua de la siguiente manera: + \begin{align*} + f_i(0,\overline{x}) &\overset{def}{=} h_i(x) \\ + f_i(x+1,\overline{x}) &\overset{def}{=} g_i(x,\overline{x},f_1(x,\overline{x}),...,f_k(x,\overline{x})), + \end{align*} + donde $\overline{x}=x_1,...,x_n$. + +\item \emph{Minimización no acotada}. Si $g:\mathbb{N}^{n+1} \rightarrow \mathbb{N}$ es computable, entonces también lo es la función $f:\mathbb{N}^n \rightarrow $ que con la entrada $\overline{x}=x_1,...,x_n$ de al menos $y$ tal que $g(z,\overline{x})$ esté definida para todas las $z\leq y$ y $g(y,\overline{x})=0$ si tal $y$, y está indefinida de otra manera. Esto se denota como: + \begin{equation*} + f(\overline{x})=\mu y.(g(y,\overline{x})=0) + \end{equation*} +\end{enumerate} + +\begin{thebibliography}{10} +\bibitem{Thompson1996} Thompson, Simon J.. ``Haskell - the craft of functional programming.'' International computer science series (1996). +\bibitem{VanRoy2009} Van Roy, Peter. ``Programming paradigms for dummies: what every programmer should know.'' (2009). +\bibitem{VanRoy2004} Van Roy, Peter, Haridi, Seif. ``Concepts, Techniques, and Models of Computer Programming''. *The MIT Press*, (2004). ISBN: 0262220695 +\bibitem{Kowalski1988} Kowalski, Robert. ``The early years of logic programming'',\textit{Communications of the ACM}, \textbf{31}, 1, (1988). +\bibitem{python_concurrency} \url{https://realpython.com/python-concurrency/}, revisado el 15 de febrero de 2023. + +\end{thebibliography} + +\end{document} diff --git a/calculo_lambda.tex~ b/calculo_lambda.tex~ new file mode 100644 index 0000000..7162d5c --- /dev/null +++ b/calculo_lambda.tex~ @@ -0,0 +1,412 @@ +\documentclass[10pt,a4paper]{article} +\usepackage[utf8]{inputenc} +\usepackage[spanish]{babel} +\usepackage{amsmath} +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage{hyperref} +\usepackage{graphicx} +\usepackage{listings} +\usepackage{xcolor} +\usepackage{caption} +\usepackage{pgf} +\usepackage{tikz} +\usetikzlibrary{automata,positioning,arrows} + +\definecolor{codegreen}{rgb}{0,0.6,0} +\definecolor{codegray}{rgb}{0.5,0.5,0.5} +\definecolor{codepurple}{rgb}{0.58,0,0.82} +\definecolor{backcolour}{rgb}{0.95,0.95,0.92} +\definecolor{darkblue}{rgb}{0,0,.75} + +\lstdefinestyle{mystyle}{ + backgroundcolor=\color{backcolour}, + commentstyle=\color{codegreen}, + keywordstyle=\color{magenta}, + numberstyle=\tiny\color{codegray}, + stringstyle=\color{codepurple}, + basicstyle=\ttfamily\footnotesize, + breakatwhitespace=false, + breaklines=true, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2 +} + +\lstset{style=mystyle} + +\lstloadlanguages{Matlab} %use listings with Matlab for Pseudocode +\lstnewenvironment{PseudoCode}[1][] +{\lstset{language=Matlab,basicstyle=\scriptsize, keywordstyle=\color{darkblue},numbers=left,xleftmargin=.04\textwidth,#1}} +{} + +\renewcommand{\rmdefault}{ptm} +%\usepackage[all,cmtip]{xy} +%\usepackage{graphicx} +\author{Programación funcional para la física computacional} +\title{Introducción} +\begin{document} +\maketitle +\section*{Lenguajes de programación y sus conceptos básicos} + +A veces los mayores descubrimientos vienen de darse cuenta de qué es lo que no se puede hacer. Ese es el caso de las computadoras, a partir de saber lo que no podemos automatizar, es que podemos construir computadoras para automatizar ciertos procesos, apoyarnos en cálculos extensos para el caso de la física e incluso estudiar sobre fenomenos de la naturaleza y la sociedad, como sucede con casi todas las ciencias sean naturales, formales y hasta sociales. + + +Los lenguajes de programación prácticos, usados día a día y que son un poco más amables con los programadores, son una estructura complicada, pero las ideas importantes en la labor de la programación son simples. + +\subsection*{Conceptos básicos} + + +\begin{itemize} +\item[Programa:] Descripción de como se manipula la información. +\item[Lenguaje de programación:] Lenguaje formal, artificial usado para dar instrucciones a una computadora. +\item[Lenguaje de alto nivel:] En lugar de pensar en controlar el *hardware* directamente, se piensa en el programa. +\end{itemize} + +Un paradigma de programación es un enfoque para programar una computadora basado en una teoría matemática o un conjunto coherente de principios. + +\begin{itemize} +\item \textbf{Programación estructurada}: Uso extensivo de flujo de control estructurado: $if$, $while$, $for$. +\item \textbf{Programación orientada a objetos}: una gran cantidad de abstracciones de datos con características comunes y una jerarquía: física de partículas y C++. +\item \textbf{Programación lógica}: manejar estructuras simbólicas complejas de acuerdo a las reglas de la lógica (ejemplo pendiente). +\item \textbf{Programación funcional}: Usa funciones matemáticas en lugar de declaraciones para expresar las ideas. Como no depende de los estados hay menor riesgo de \textbf{no determinismo}. +\end{itemize} + +Por lo regular los lenguajes populares de programación tienen a lo más dos paradigmas (como C++ y java), pero lo mejor sería que todo lenguaje de programación acepte múltiples paradigmas. Multiparadigma es el término que se usa para nombrar, como si fuera una cualidad específica y no algo deseable en todo lenguaje. + +\subsection*{Programación orientada a objetos} +Uno de los paradigmas más populares, uno de los primeros a llegar a las computadoras en laboratorios y personales. + +De sus primeras implementaciones se menciona al lenguaje \textit{Simula67} que fue una ampliación de \textit{Algol60}, el primero en introducir los conceptos de \textbf{objeto}, \textbf{clase}, \textbf{subclases} y \textbf{herencia}. + +Ya en 1980 aparecen $C++$ y $Smaltalk-80$, siendo el primero uno de los lenguajes más utilizados aún hoy en día. Java y C++ son lenguajes de programación orientada a objetos y basta con buscar en internet para notar que son dos de los lenguajes más utilizados en casi cualquier ámbito. + +Dentro de la física suele ser muy utilizado en simulaciones de física de partrículas. Una parte importante del software para el análisis de datos y simulaciones para el LHC está enm $C++$ aunque partió un poco del $FORTRAN$ y empieza a incluir $Python$. El poder definir clases y objetos facilita el manejo de las partículas elementales en las simulaciones, o los árboles de datos en el análisis de los experimentos. + +\subsection*{Programación lógica} + +Como menciona [Kowalski1988] definir la programación lógica puede ser un poco ambiguo. ``La programación lógica comparte con la demostración automática de teoremas el uso de la lógica para representar conocimiento y el uso de la deducción para resolver problemas al derivar consecuencias lógicas''. pero a su vez dice que ``difiere de la demostración mecánica de teoremas en dos formas distintas pero complementarias: (1) explota el hecho de que la lógica puede utilizarse para expresar definiciones de funciones computable y procedimientos, y (2)explota el uso de procedimientos de prueba que realizan deducciones de manera dirigida por el objetivo, para correr tales definiciones como programas''. + +Uno de los lenguajes de programación lógica más utilizados es $Prolog$, con aplicaciones en inteligencia artificial. No sé de algún uso en la física. + +\subsection*{Programación funcional} + +Como su nombre lo dice, la programación funcional parte de funciones. Podría pensarse que un poco como $Fortran$ no está pensado para crear aplicaciones, si no sólo resolver problemas matemáticos, pero no, su impronta ha sido tan dinámica hasta llegar a tener software para la creación musical (\textit{tidal cycles}) y para la transformación de formatos de texto (\textit{pandoc}). Realmente es una manera de concentrarse en las relaciones entre valores más que en los objetos con que se trabaja. + +Usemos el clásico ejemplo de la función como una caja negra, como se puede ver en la figura \ref{fig:func}. La función recibe uno, dos o más argumentos, valores, objetos, en general entradas, y regresa una o más salidas o resultados. + +\begin{center} + \begin{figure}[h!] + \begin{tikzpicture} + \draw[black, very thick] (0,0) rectangle (3,2); + \draw[-latex,line width=2pt,black] (-0.8,0.5)--(0,0.5); + \draw[-latex,line width=2pt,black] (-0.8,1.5)--(0,1.5); + \draw[-latex,line width=2pt,black] (3,1)--(3.8,1); + \draw[black, very thick] (6,0) rectangle (9,2); + \filldraw[black] (7.5,1.5) circle (0pt) node[below]{Producto escalar}; + \draw[-latex,line width=2pt,black] (5.2,0.5)--(6,0.5); + \filldraw[black] (5.2,0.5) circle (1pt) node[below]{$(3,2,1)$}; + \draw[-latex,line width=2pt,black] (5.2,1.5)--(6,1.5); + \filldraw[black] (5.2,1.5) circle (1pt) node[above]{$(2,1,2)$}; + \draw[-latex,line width=2pt,black] (9,1)--(9.8,1); + \filldraw[black] (9.8,1) circle (0pt) node[above]{$10$}; + \end{tikzpicture} + \caption{Una función representada como caja negra.} + \end{figure} + \label{fig:func} +\end{center} + +Podría ser una función que recibe como entrada un programa y te dice si tu programa está bien escrito y dará un resultado (\textbf{¿es eso posible?}). + +¿Cómo diferencia una función si se le da un vector, un escalar, un sonido o incluso un programa de computación? Eso tiene que ver con los \textbf{tipos}, que son colecciones de valores agrupados juntos por ciertas características que comparten. Como estamos pensando funcionalmente: podemos aplicar relaciones parecidas entre esos valores, les aplicamos los mismos tipos de funciones. + +En el caso de la figura \ref{fig:func}(b) los tipos de las entradas son vectores, el tipo de la salida es escalar. + +\textit{Haskell} es el lenguaje de programación funcional que usaremos en parte de este curso, \textit{python} permite implementarlo pero no de manera nativa como lo hace \textit{Haskell}. Recibe su nombre por Haskell B. Curry, matemático especializado en lógica que trabajo ampliamente en el calculo $\lambda$, una teoría matemática de las funciones que veremos con un poco más de detalle más adelante. + +\section*{Cuestiones generales de los lenguajes de programación} + +Pensemos en la cuestión más sencilla al usar un lenguaje de programación en nuestra área de trabajo, pensaríamos en hacer una calculadora lo más amplia posible, hasta incluir matrices, cálculos de números complejos. ¿Qué necesitamos? + +\begin{itemize} +\item Operaciones sencillas: suma, resta, multiplicación, producto escalar, multiplicación de matrices... +\item Variables: atajos a valores, sólo se asignan una vez. Cada variable cuenta con un identificador y valor guardado, que viene de un estado de memoria. Para esto existen enunciados declarativos. +\item Funciones: ya las explicamos más o menos a detalle en la sección pasada. +\item Recursión: poder definir una función a partir de ella misma, en el caso de que dependa del valor anterior. +\item Abstracciones funcionales: usar funciones para construir abstracciones, pensemos en una cebolla, varias capas de funciones. +\end{itemize} + +Para entender un poco de como es eso de la recursión definamos la función factorial, primero como y¡una función, pero además como una función recursiva, hagámoslo en $python$. + +\begin{lstlisting}{language=Python} + def fact(x): #definimos la funcion fact + if x==0: #caso base + return 1 + else: + return x*fact(x-1) #para los demas casos + + x=int(input("Valor a calcular factorial:")) #dar valor + print(fact(x)) #imprime el resultado +\end{lstlisting} + +La función es definida en la línea $1$, el argumento será la variable $x$, a dársele en el momento que se desee evaluar. Como saben el factorial de $0$ vale $1$ por definición, el resto de valores se obtiene recursivamente a partir del anterior, así en general $n!=n\times(n-1)!$. Revisen el programa con unos pocos valores a ver que obtienen. + +Para trabajar con estructuras más allá de números podemos hacer uso de las listas, para desarrollar el tema de esta sección veamos un ejemplo algo abstracto pero que puede ser útil: el triángulo de Pascal. + +\subsection*{El triángulo de Pascal} + +El triángulo de Pascal es útil en combinatoria y está relacionado al teorema binomial. No dudo que les pueda ser útil más adelante, pero a esta altura lo veremos como un ejemplo al trabajar con tipos más elaborados que un escalar, los trataremos como listas de números. + +En la fila $1$ empieza con un $1$, la regla para construir los subsecuentes valores es ir en orden descendente sumando las parejas de números justo arriba. Las orillas se suponen llenas de ceros, así seguida de la fila $1$ sigue una pareja de números, el de la izquierda es la suma del $1$ de la fila $1$ con su vecino de la izquierda, que está vacío y tomamos como cero. Esto nos da $1$, de manera similar para el lado derecho, como puede verse en el cuadro \ref{tab:pascal}. + +\begin{table}[h!] + \centering + \begin{tabular}{rccccccccc} + $n=1$:& & & & & 1\\\noalign{\smallskip\smallskip} + $n=2$:& & & & 1 & & 1\\\noalign{\smallskip\smallskip} + $n=3$:& & & 1 & & 2 & & 1\\\noalign{\smallskip\smallskip} + $n=4$:& & 1 & & 3 & & 3 & & 1\\\noalign{\smallskip\smallskip} + $n=5$:& 1 & & 4 & & 6 & & 4 & & 1\\\noalign{\smallskip\smallskip} + \end{tabular} + \caption{Primeros $5$ niveles del triángulo de Pascal} + \label{tab:pascal} +\end{table} + +Ahora queremos construir una función que nos dé el valor de la fila $n$. Hagámoslo de manera similar al factorial, en $python$ y pensando en funciones. Esta vez no trabajaremos con números naturales, si no con listas de números naturales, en los que no sólo tendremos que operar sobre los números, también sobre la estructura. + +Pensando de nuevo en definir funciones lo que haríamos sería algo más o menos como lo que se ve en la figura \ref{fig:pseudo}. + +\begin{figure}[h] + \caption{Desarrollo de arriba $pa'bajo$} + \textbf{Datos:} El valor de la primera fila del triángulo de Pascal\\ + \textbf{Resultados:} Cualquier fila $n$ del triángulo de Pascal\\ + inicialización; + \begin{PseudoCode} + function Pascal(n): + if n==1 then return [1]; + else + return SumaLista(CorrerListaDerecha(n-1),CorrerListaIzquierda(n-1)); + end + end + \end{PseudoCode} + \label{fig:pseudo} +\end{figure} + +Esto se llama desarrollo de software de ``arriba a abajo'' (\textit{top-down}), proponemos las funciones que resuelvan los detalles y luego llenamos los huecos. + +¿Cómo serían esa funciones? Lo primero que tenemos que ver es que los objetos que nos regresa la función Pascal son listas, lo que le damos de entrada es un natural que identifica la fila del triángulo. Veamos qué es una lista. + +Una lista la podemos entender como una cadena de ligas, cada liga contiene dos cosas, un elemento de la lista y la referencia al resto de la cadena. Una lista vacía puede escribirse como $[\ ]$ o simplemente como $nil$. A esta lista vacía se le van agregando elementos\footnote{Esta terminología se tomó del lenguaje de programación \textit{lisp}, cuyo nombre deriva de \textit{list processing}.}. + +En $python$ una lista se define encerrada entre corchetes, así la lista vacía de nombre $a$ sería $a=[]$. Para agregar elementos se puede utilizare la función $append$. De esta forma podemos construir la lista $[8,2.3,-4]$ de la siguiente forma: + +\begin{lstlisting}{language=Python} + a=[] #crea una lista vacia + a.append(8) #va agregando elementos + a.append(2.3) + a.append(-4) + + print(a) #imprime la lista +\end{lstlisting} + +Noten que los va agregando en el orden empezando de izquierda a derecha, tal como leemos las palabras del español. Pero podemos usar algunos atajos para agregar elementos por ambos lados, las funciones de concatenación de listas que se escriben como $+$, pero no debe confundirse con una suma de números, es una operación distinta al aplicarse en listas. + +\begin{lstlisting}{language=Python} + a=[2.3] #crea la lista de un solo valor, el central + a=[8]+a+[-4] #concatenamos por izquierda y derecha + + print(a) #imprime la lista +\end{lstlisting} + +De esta forma podemos construir una función que nos dé la n-eva fila del triángulo de Pascal, lo que debemos hacer es generar dos listas, a una se le agregará por la izquierda un cero y a la otra por la derecha, para ser sumadas a continuación. + +\begin{lstlisting}{language=Python} + def pascal(n): + if n==1: + return [1] + else: + x=[0]+pascal(n-1) + y=pascal(n-1)+[0] + return [i+j for i,j in zip(x,y)] + + n=int(input(``Fila (1,2,3,..)?:'')) + print(pascal(n)) +\end{lstlisting} + +\subsection*{Corrección} + +¿Cómo sabemos si lo que hacemos es correcto? Podemos comprobarlo para la línea $1$, $2$, $3$,..., pero ¿para la línea $20$? + +Yo espero recuerden sus cursos de álgebra (la de primer semestre, sea superior o para físicos, en ambas se veía por lo regular el tema de inducción. Al igual espero les hayan constado que hay tres tipos de inducción, son equivalentes pero cada tipo nos da detalles sobre dónde estamos trabajando. + +Para probar que nuestro programa es correcto necesitamos de un modelo matemático de las operaciones del lenguaje de programación, es decir, una semántica del lenguaje. Con esta semántica debemos especificar lo que queremos que el programa haga: especificación del programa. Por último se utilizan técnicas matemáticas para razonar sobre el programa, usando la semántica. + +Los tres tipos de inducción son la normal que conocen, sobre los números naturales, la inducción fuerte y la inducción bien fundada. Por ser la más general me centraré en la inducción bien fundada, pero como mencioné, son equivalentes. + +\newtheorem{defi}{Definición} +\begin{defi} + $(A,\preceq)$ es llamado un conjunto bien fundado si y sólo si todo subconjunto no vacío $M$ de $A$ contiene al menos un elemento minimal $m$ con respecto a la relación de orden $\preceq$. +\end{defi} + +Entonces podemos ir más allá de los naturales siempre y cuando podamos dar una relación de orden para el conjunto sobre el que estamos trabajando. + +\newtheorem{teo}{Teorema} +\begin{teo} + (Principio de inducción Noetheriana) Sea $(A,\preceq)$ un conjunto bien fundado. Para probar que una propiedad $P(x)$ es verdadera para todos los elementos $x$ en $A$ es suficiente probar las siguientes propiedades: + \begin{itemize} + \item[(a)] \textbf{Base inductiva:} $P(x)$ es verdad para todos los elementos minimales de $A$. + \item[(b)] \textbf{Paso inductivo} Para cada no minimal $x$ en $A$, si $P(y)$ es verdad para toda $y\prec x$ (\textbf{hipótesis inductiva}), entonces $P(x)$ es verdad. + \end{itemize} +\end{teo} + +Para darles un ejemplo no me detendré en el caso del triángulo de Pascal, pero sí en el factorial que antes hicimos. Más que un ejercicio es un ejemplo ilustrativo. + +\textbf{Ejemplo:} Demuestra que el factorial es una función total. + +Recordemos que nuestra función factorial está definida de la siguiente forma: + +\begin{align*} + f(0) &= 0! = 1\\ + f(x) &= x(x-1)!, \ x>0 \text{ y } x\in\mathbb{N}. +\end{align*} + +Entonces aplicamos la inducción: + +\begin{itemize} +\item \textbf{Base inductiva:} Estamos trabajando en los naturales más el $0$ ($\mathbb{N}_0$), el minimal es el $0$ y por la definición de la función $f(0)=0!=1$, ya está. +\item \textbf{Hipótesis inductiva:} Supongamos es cierto para $n>0$ con $n\in\mathbb{N}_0$, en ese caso tenemos que $f(n)=n!$. +\item \textbf{Paso inductivo:} Probemos que se cumple para $n+1$. Para este caso por definición $f(n+1)=(n+1)n!$, como supusimos que $n!$ está valuado por consiguiente $(n+1)n!$ está valuado también, es solo una multiplicación de naturales que da un natural $\square$. +\end{itemize} + +\subsection*{Complejidad} + +Ahora viene un ejercicio entretenido aunque puede llegar a preocupar en algún momento: determinar el tiempo de ejecución de nuestro programa. + +Por un lado es complicado dar un tiempo que valga para toda computadora, el tiempo que tarde dependerá mucho de la arquitectura, el RAM, si se corren más programas a la par, incluso la temperatura del equipo. Pero sobretodo nos interesa saber si podemos correr el programa en tiempos considerables, por un lado humanamente posibles, por otro viables para la tarea que buscamos. + +El tiempo de ejecución de un programa como función del tamaño de entrada, hasta un factor constante, es llamada la complejidad en el tiempo del programa. Es decir, existe una $t(n)$ que nos da el tiempo aproximado de la ejecución, un factor constante más o menos. + +¿Porqué tan impreciso se preguntarán? Si el tiempo es $t(3s)=K\times p(3)$ donde $p(3)$ es un polinomio valuado en $3$ no es lo mismo $K=1$ que $K=1,000,000$. Por un lado ya mencionamos que es una medida muy aproximada, pero además lo interesan te es saber que no se disparará el tiempo de ejecución, es muy diferente $t(n)=n^3$ que $t(n)=3^n$. + +\begin{figure}[ht!] + \begin{center} + \includegraphics[width=0.8\linewidth]{comple.jpg} + \caption{Comparando la complejidad temporal $t(x)=x^3$ con $t(x)=3^x$ para valores muy pequeños.} + \label{fig:comple} + \end{center} +\end{figure} + +¿Qué sucede para nuestro programa que calcula la fila $n$ del triángulo de Pascal? Notemos que como lo tenemos definido para calcular la fila $28$ llama dos veces a calcular la fila $27$, cada una de estas llama dos veces a calcular la fila $26$, lo que equivale a $4$ llamadas de la función, en cada paso se va multiplicando por dos, va como $2^n$, ¡en el paso $28$ hará $268435456$ llamadas a la función! + +¿Cómo podemos mejorarlo? Llamando solo una vez a la función. + +\begin{lstlisting}{language=Python} + def pascal(n): + if n==1: + return [1] + else: + r=pascal(n-1) + x=[0]+r + y=r+[0] + return [i+j for i,j in zip(x,y)] + + n=int(input(``Fila (1,2,3,..)?:'')) + print(pascal(n)) +\end{lstlisting} + +Prueben el tiempo y verán las mejoras en el tiempo, esta vez cada paso sólo llama una vez a la función. + +\subsection*{Evaluación perezosa} + +Imaginen que desean obtener todos los números primos posibles, más que eso, operar con ellos. Sin saber mucho de computación podemos estar seguros que esa labor es imposible, ya que es una cantidad de números infinitos. Todo lo que solemos operar en una computadora, o por medioas físicos es finito ¿como operar sobre estructuras infinitas? + +En ese caso se utiliza la evaluación perezosa, su principal característica es que el cálculo se realiza sólo cuando se necesita. Para poner un ejemplo, en la programación normal, ``chambeadora'' si quieres obtener un elemento de una secuencia de números primero debes decirle a la máquina cuál es esa secuencia de números. Ya sea que definas un arreglo o una lista, pero debes determinarlos todos. En la evaluación perezosa puedes trabajar con la estructura infinita y solo calcular el elemento cuando sea necesario evaluar, sin necesidad de generar toda la lista o arreglo antes. + +Pongamos un ejemplo, el más sencillo es tratar de obtener todos los naturales, definir una lista de todos ellos es imposible, es infinita, pero podemos trabajar con el generador de esos números: + +\lstinputlisting[firstline=1,lastline=5]{nats.py} + +Esto no se ve nada impresionante, estamos sumando un número al anterior, pero esta implementación sencilla ya es nuestra entrada al \emph{infinito y más allá}, porque realmente estamos trabajando con un generador. En gran medida es una función que puede generarnos todos los naturales pero que además podemos operar con ella (nótese que ya estamos hablando de programar con funciones). Y se preguntarán ¿Y cómo la uso? Veamos un ejemplo. + +Veamos un algoritmo griego con más de $2000$ años de antigüedad, el colador de Eratostenes. ¿Cómo puedo obtener todos los números primos? Podemos hacerlo por fuerza bruta, es decir, por la simple definición dejar que el programa haga las operaciones, que cheque que cada número solo es múltiplo de el mismo, pero como se imaginarán al poco tiempo la tarea se volverá tardada. A Eratostenes se le ocurrió una manera que lleva menos tiempo: se ponen todos los número naturales sobre la rejilla del colador, en esa primera colada todos los múltiplos de $2$ se quedarán como asientos y los demás número fluirán a la siguiente etapa. En esta etapa todos los múltiplos de $3$ se quedan sedimentados y pasan los siguientes números. El $4$ ya se quedo un sedimento arriba así que sigue el $5$, y así se continúa. Un esquema del proceso de puede ver en la tabla\ref{tab:eratostenes}. + +\begin{table}[h!] + \centering + \begin{tabular}{cccccccccccc} + $1$:& 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & $\hdots$ \\ + $2$:& 3 & 5 & 7 & 9 & 11 & $\hdots$ & & & & & \\\noalign{\smallskip\smallskip} + $3$:& 5 & 7 & 11 & $\hdots$ & & & & & & & \\\noalign{\smallskip\smallskip} + $5$:& 7 & 11 & $\hdots$ & & & & & & & & \\\noalign{\smallskip\smallskip} + $7$:& 11 & $\hdots$ & & & & & & \\\noalign{\smallskip\smallskip} + $11$:& $\hdots$ & & & & & & & & \\\noalign{\smallskip\smallskip} + \end{tabular} + \caption{Obteniendo números primos} + \label{tab:eratostenes} +\end{table} + +¿Cómo aplicar lo que sabemos de funciones perezosas para calcular los números primos? Definamos una nueva función que haga la operación de la coladera de Eratostenes. + +Partamos del generador de los naturales que ya definimos, lo usamos en una nueva función que a partir del natural generado calculará el número primo en cada paso de la coladera. + +\lstinputlisting[firstline=1,lastline=10]{prim.py} + +Ahora usemos esto mismo para hacer una evaluación perezosa de nuestra función para calcular la fila $n$ del triángulo de Pascal. Tal como lo hemos hecho crearemos una estructura generadora, que en cierta forma contiene al infinito, pero iremos paso por paso generando cada una de las filas. + +Y no encontré como hacerlo, no sé como hacerlo para listas, hallé una solución pero es chafa. + +\lstinputlisting[firstline=1,lastline=22]{pascalazy.py} + +\subsection*{Programación de más alto orden} + +Imaginen ahora que quieren hacer operaciones con las filas que obtienen del triángulo de Pascal. Está la opción de tomar la salida, asignarla a una variable y operar. Pero acuerdense que nos gusta la flojera, ¿nos podemos ahorrar el tener que definir una variable y simplemente meter la función que nos da la fila del triángulo de Pascal como argumento a otra función? + +Se puede, $python$ lo permite pero sobretodo al llegar a la parte de programación funcional veremos que se puede hacer mucho más fácil y explotando algunas de las ventajas antes mencionadas. + +Esto es lo que se llama programación de alto orden (¿mayor orden?), definimos funciones que dependen de funciones que a su ves pueden depender de funciones. Tenemos un queso oaxaca de funciones. + +\lstinputlisting[firstline=1,lastline=22]{altorden.py} + +Vean en el ejemplo como es posible operar con la salida de una función dando como argumento la función misma. + +\subsection*{Concurrencia} + +Sabemos de la programación en paralelo, para ello requerimos una máquina con más de un núcleo de procesamiento, es decir, dependemos de la arquitectura de la máquina. Pero a nivel de lenguajes de programación podemos hablar de algo similar, la concurrencia. + +La concurrencia sucede cuando distintas actividades interdependientes, cada una se ejecuta en su propio paso. Se implemente concurrencia a través de \textbf{hilos} (\textit{threads}). Un hilo simplemente es un programa que se ejecuta, pero un programa puede tener varios hilos. + +De esta forma, para nuestro ejemplo podríamos ejecutar la cocatenación de filas en el triángulo de Pacal a la par que las estamos calculando, si nuestra computadora puede hacerlo a buena velocidad nos estaríamos ahorrando bastante tiempo en operaciones más complicadas y filas más extensas. + +A nadie le quedará duda de que seguro es una herramienta útil, pero si no tenemos bien controlados los tiempos de asignación y operación podemos obtener errores que nos llevan a un aparente no determinismo. $Python$ lo puede hacer de distintas maneras que a nivel de arquitectura funciona distinto: \textit{thread}, \textit{task} y \textit{process}. + +\textit{Threading} y \textit{asyncio} corren en un solo procesador, sólo toma turnos para hacer cada tarea y acelerar un poco, pero sigue siendo concurrencia. Lo siguinete es paralelizar, con \textit{multiprocessing}. Cada proceso corre su propio intérprete de $python$. + + + +\subsection*{Flujo de datos, estado explícito, objetos, clases} + +\begin{ietmize} +\item \textbf{Flujo de datos:} Si una operación trata de usar una variable aún no acotada y espera hasta que otra operación o proceso la acote para usarla es un buen comportamiento que se llama flujo de datos. +\item \textbf{Estado explícito:} se define una célula de memoria (para diferenciar de una variable aunque su estructura es la misma) que guarda memoria para saber como ha cambiado el comportamiento de una función, aprender de su pasado. +\item \textbf{Objetos:} Función con memoria interna. Si la célula solo es accesible internamente se dice que está encapsulada. Polimorfismo: la célula funciona bien ante cualquier implementación mientras la interfase sea la misma. + \item \textbf{Clases:} una clase es una fábrica de objetos. +\end{itemize} + +La programación orientada a objetos se centra en estas ideas pasadas (sumadas a la programación estructurada). Las operaciones dentro de clases son llamadas métodos. Al agregar herencia se tiene la programación orientada a objetos. + +El no determinismo se da al combinar hilos y estados explícitos. El orden de acceso a los estados puede cambiar de acuerdo a los distintos hilos, dando valores distintos para una ejecución en las mismas condiciones. Sucede cuando no se sabe el tiempo exacto en que se ejecuta una operación. Un ejemplo fatídico fue el de la máquina de terapia de radiación Therac-25. Un problema de concurrencia en el programa que la operaba produjo un error en la cantidad de radiación, produciendo la muerte de algunos pacientes. + +\begin{thebibliography}{10} +\bibitem{Thompson1996} Thompson, Simon J.. ``Haskell - the craft of functional programming.'' International computer science series (1996). +\bibitem{VanRoy2009} Van Roy, Peter. ``Programming paradigms for dummies: what every programmer should know.'' (2009). +\bibitem{VanRoy2004} Van Roy, Peter, Haridi, Seif. ``Concepts, Techniques, and Models of Computer Programming''. *The MIT Press*, (2004). ISBN: 0262220695 +\bibitem{Kowalski1988} Kowalski, Robert. ``The early years of logic programming'',\textit{Communications of the ACM}, \textbf{31}, 1, (1988). +\bibitem{python_concurrency} \url{https://realpython.com/python-concurrency/}, revisado el 15 de febrero de 2023. + +\end{thebibliography} + +\end{document} diff --git a/introduccion.aux b/introduccion.aux deleted file mode 100644 index f7f02dc..0000000 --- a/introduccion.aux +++ /dev/null @@ -1,43 +0,0 @@ -\relax -\providecommand\hyper@newdestlabel[2]{} -\providecommand\babel@aux[2]{} -\@nameuse{bbl@beforestart} -\catcode `"\active -\catcode `<\active -\catcode `>\active -\@nameuse{es@quoting} -\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} -\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined -\global\let\oldcontentsline\contentsline -\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} -\global\let\oldnewlabel\newlabel -\gdef\newlabel#1#2{\newlabelxx{#1}#2} -\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} -\AtEndDocument{\ifx\hyper@anchor\@undefined -\let\contentsline\oldcontentsline -\let\newlabel\oldnewlabel -\fi} -\fi} -\global\let\hyper@last\relax -\gdef\HyperFirstAtBeginDocument#1{#1} -\providecommand\HyField@AuxAddToFields[1]{} -\providecommand\HyField@AuxAddToCoFields[2]{} -\babel@aux{spanish}{} -\newlabel{fig:func}{{}{2}{Programación funcional}{figure.caption.6}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Una función representada como caja negra.\relax }}{3}{figure.caption.6}\protected@file@percent } -\@writefile{lol}{\contentsline {lstlisting}{language=Python}{3}{lstlisting.-1}\protected@file@percent } -\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Primeros $5$ niveles del triángulo de Pascal\relax }}{4}{table.caption.9}\protected@file@percent } -\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} -\newlabel{tab:pascal}{{1}{4}{Primeros $5$ niveles del triángulo de Pascal\relax }{table.caption.9}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Desarrollo de arriba $pa'bajo$\relax }}{4}{figure.caption.10}\protected@file@percent } -\newlabel{fig:pseudo}{{2}{4}{Desarrollo de arriba $pa'bajo$\relax }{lstnumber.-2.7}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Comparando la complejidad temporal $t(x)=x^3$ con $t(x)=3^x$ para valores muy pequeños.\relax }}{7}{figure.caption.13}\protected@file@percent } -\newlabel{fig:comple}{{3}{7}{Comparando la complejidad temporal $t(x)=x^3$ con $t(x)=3^x$ para valores muy pequeños.\relax }{figure.caption.13}{}} -\bibcite{Thompson1996}{1} -\bibcite{VanRoy2009}{2} -\bibcite{VanRoy2004}{3} -\@writefile{lol}{\contentsline {lstlisting}{prim.py}{8}{lstlisting.-7}\protected@file@percent } -\bibcite{Kowalski1988}{4} -\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Obteniendo números primos\relax }}{9}{table.caption.15}\protected@file@percent } -\newlabel{tab:pascal}{{2}{9}{Obteniendo números primos\relax }{table.caption.15}{}} -\gdef \@abspage@last{9} diff --git a/introduccion.log b/introduccion.log deleted file mode 100644 index a7baef8..0000000 --- a/introduccion.log +++ /dev/null @@ -1,817 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020/Debian) (preloaded format=pdflatex 2022.11.21) 14 FEB 2023 17:38 -entering extended mode - restricted \write18 enabled. - %&-line parsing enabled. -**introduccion.tex -(./introduccion.tex -LaTeX2e <2020-10-01> patch level 4 -L3 programming layer <2021-01-09> xparse <2020-03-03> -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2020/04/10 v1.4m Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2020/04/10 v1.4m Standard LaTeX file (size option) -) -\c@part=\count177 -\c@section=\count178 -\c@subsection=\count179 -\c@subsubsection=\count180 -\c@paragraph=\count181 -\c@subparagraph=\count182 -\c@figure=\count183 -\c@table=\count184 -\abovecaptionskip=\skip47 -\belowcaptionskip=\skip48 -\bibindent=\dimen138 -) -(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty -Package: inputenc 2020/08/01 v1.3d Input encoding file -\inpenc@prehook=\toks15 -\inpenc@posthook=\toks16 -) -(/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty -Package: babel 2021/01/26 3.53 The Babel package - -(/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def -File: babel.def 2021/01/26 3.53 Babel common definitions -\babel@savecnt=\count185 -\U@D=\dimen139 -\l@babelnohyphens=\language10 - -(/usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def) -\bbl@readstream=\read2 -) -\bbl@dirlevel=\count186 - -(/usr/share/texlive/texmf-dist/tex/generic/babel-spanish/spanish.ldf -Language: spanish.ldf 2016/03/03 v5.0p Spanish support from the babel system -\es@quottoks=\toks17 -\es@quotdepth=\count187 -Package babel Info: Making " an active character on input line 561. -Package babel Info: Making . an active character on input line 662. -Package babel Info: Making < an active character on input line 707. -Package babel Info: Making > an active character on input line 707. -)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2020/09/23 v2.17i AMS math features -\@mathmargin=\skip49 - -For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty -Package: amstext 2000/06/29 v2.01 AMS text - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty -File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks18 -\ex@=\dimen140 -)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty -Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen141 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty -Package: amsopn 2016/03/08 v2.02 operator names -) -\inf@bad=\count188 -LaTeX Info: Redefining \frac on input line 234. -\uproot@=\count189 -\leftroot@=\count190 -LaTeX Info: Redefining \overline on input line 399. -\classnum@=\count191 -\DOTSCASE@=\count192 -LaTeX Info: Redefining \ldots on input line 496. -LaTeX Info: Redefining \dots on input line 499. -LaTeX Info: Redefining \cdots on input line 620. -\Mathstrutbox@=\box47 -\strutbox@=\box48 -\big@size=\dimen142 -LaTeX Font Info: Redeclaring font encoding OML on input line 743. -LaTeX Font Info: Redeclaring font encoding OMS on input line 744. -\macc@depth=\count193 -\c@MaxMatrixCols=\count194 -\dotsspace@=\muskip16 -\c@parentequation=\count195 -\dspbrk@lvl=\count196 -\tag@help=\toks19 -\row@=\count197 -\column@=\count198 -\maxfields@=\count199 -\andhelp@=\toks20 -\eqnshift@=\dimen143 -\alignsep@=\dimen144 -\tagshift@=\dimen145 -\tagwidth@=\dimen146 -\totwidth@=\dimen147 -\lineht@=\dimen148 -\@envbody=\toks21 -\multlinegap=\skip50 -\multlinetaggap=\skip51 -\mathdisplay@stack=\toks22 -LaTeX Info: Redefining \[ on input line 2923. -LaTeX Info: Redefining \] on input line 2924. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty -Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support -\symAMSa=\mathgroup4 -\symAMSb=\mathgroup5 -LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. -LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' -(Font) U/euf/m/n --> U/euf/b/n on input line 106. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty -Package: amssymb 2013/01/14 v3.01 AMS font symbols -) -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty -Package: hyperref 2020-05-15 v7.00e Hypertext links for LaTeX - -(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty -Package: ltxcmds 2020-05-10 v1.25 LaTeX kernel commands for general use (HO) -) -(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty -Package: iftex 2020/03/06 v1.0d TeX engine tests -) -(/usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty -Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO -) - -(/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty -Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) -) -Package pdftexcmds Info: \pdf@primitive is available. -Package pdftexcmds Info: \pdf@ifprimitive is available. -Package pdftexcmds Info: \pdfdraftmode found. -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty -Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks23 -) -(/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty -Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) -) -(/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty -Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) -) -(/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty -Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) -) -(/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty -Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) -) -(/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty -Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) -) -(/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty -Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) -) -(/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty -Package: kvoptions 2020-10-07 v3.14 Key value format for package options (HO) -) -\@linkdim=\dimen149 -\Hy@linkcounter=\count266 -\Hy@pagecounter=\count267 - -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def -File: pd1enc.def 2020-05-15 v7.00e Hyperref: PDFDocEncoding definition (HO) -Now handling font encoding PD1 ... -... no UTF-8 mapping file for font encoding PD1 -) -(/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty -Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) -) -(/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty -Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) -) -\Hy@SavedSpaceFactor=\count268 -Package hyperref Info: Hyper figures OFF on input line 4464. -Package hyperref Info: Link nesting OFF on input line 4469. -Package hyperref Info: Hyper index ON on input line 4472. -Package hyperref Info: Plain pages OFF on input line 4479. -Package hyperref Info: Backreferencing OFF on input line 4484. -Package hyperref Info: Implicit mode ON; LaTeX internals redefined. -Package hyperref Info: Bookmarks ON on input line 4717. -\c@Hy@tempcnt=\count269 - -(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty -\Urlmuskip=\muskip17 -Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. -) -LaTeX Info: Redefining \url on input line 5076. -\XeTeXLinkMargin=\dimen150 - -(/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty -Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty -Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO -) -)) -\Fld@menulength=\count270 -\Field@Width=\dimen151 -\Fld@charsize=\dimen152 -Package hyperref Info: Hyper figures OFF on input line 6347. -Package hyperref Info: Link nesting OFF on input line 6352. -Package hyperref Info: Hyper index ON on input line 6355. -Package hyperref Info: backreferencing OFF on input line 6362. -Package hyperref Info: Link coloring OFF on input line 6367. -Package hyperref Info: Link coloring with OCG OFF on input line 6372. -Package hyperref Info: PDF/A mode OFF on input line 6377. -LaTeX Info: Redefining \ref on input line 6417. -LaTeX Info: Redefining \pageref on input line 6421. - -(/usr/share/texlive/texmf-dist/tex/latex/base/atbegshi-ltx.sty -Package: atbegshi-ltx 2020/08/17 v1.0a Emulation of the original atbegshi packa -ge -with kernel methods -) -\Hy@abspage=\count271 -\c@Item=\count272 -\c@Hfootnote=\count273 -) -Package hyperref Info: Driver (autodetected): hpdftex. - -(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def -File: hpdftex.def 2020-05-15 v7.00e Hyperref driver for pdfTeX - -(/usr/share/texlive/texmf-dist/tex/latex/base/atveryend-ltx.sty -Package: atveryend-ltx 2020/08/19 v1.0a Emulation of the original atvery packag -e -with kernel methods -) -\Fld@listcount=\count274 -\c@bookmark@seq@number=\count275 - -(/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty -Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty -Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) -) -Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 -86. -) -\Hy@SectionHShift=\skip52 -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2020/09/09 v1.2b Enhanced LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2020/08/30 v1.4c Standard LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty -Package: trig 2016/01/03 v1.10 sin cos tan (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg -File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration -) -Package graphics Info: Driver file: pdftex.def on input line 105. - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def -File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex -)) -\Gin@req@height=\dimen153 -\Gin@req@width=\dimen154 -) -(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty -\lst@mode=\count276 -\lst@gtempboxa=\box49 -\lst@token=\toks24 -\lst@length=\count277 -\lst@currlwidth=\dimen155 -\lst@column=\count278 -\lst@pos=\count279 -\lst@lostspace=\dimen156 -\lst@width=\dimen157 -\lst@newlines=\count280 -\lst@lineno=\count281 -\lst@maxwidth=\dimen158 - -(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty -File: lstmisc.sty 2020/03/24 1.8d (Carsten Heinz) -\c@lstnumber=\count282 -\lst@skipnumbers=\count283 -\lst@framebox=\box50 -) -(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg -File: listings.cfg 2020/03/24 1.8d listings configuration -)) -Package: listings 2020/03/24 1.8d (Carsten Heinz) - -(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty -Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg -File: color.cfg 2016/01/02 v1.6 sample color configuration -) -Package xcolor Info: Driver file: pdftex.def on input line 225. -Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. -Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. -Package xcolor Info: Model `RGB' extended on input line 1364. -Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. -Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. -Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. -Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. -Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. -Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. -) -(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty -Package: caption 2020/10/26 v3.5g Customizing captions (AR) - -(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty -Package: caption3 2020/10/21 v2.2e caption3 kernel (AR) -\captionmargin=\dimen159 -\captionmargin@=\dimen160 -\captionwidth=\dimen161 -\caption@tempdima=\dimen162 -\caption@indent=\dimen163 -\caption@parindent=\dimen164 -\caption@hangindent=\dimen165 -Package caption Info: Standard document class detected. -) -\c@caption@flags=\count284 -\c@continuedfloat=\count285 -Package caption Info: hyperref package is loaded. -Package caption Info: listings package is loaded. -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex -\pgfutil@everybye=\toks25 -\pgfutil@tempdima=\dimen166 -\pgfutil@tempdimb=\dimen167 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t -ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def -\pgfutil@abb=\box51 -) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex) -Package: pgfrcs 2020/12/27 v3.1.8b (3.1.8b) -)) -Package: pgf 2020/12/27 v3.1.8b (3.1.8b) - -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex -Package: pgfsys 2020/12/27 v3.1.8b (3.1.8b) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex -\pgfkeys@pathtoks=\toks26 -\pgfkeys@temptoks=\toks27 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t -ex -\pgfkeys@tmptoks=\toks28 -)) -\pgf@x=\dimen168 -\pgf@y=\dimen169 -\pgf@xa=\dimen170 -\pgf@ya=\dimen171 -\pgf@xb=\dimen172 -\pgf@yb=\dimen173 -\pgf@xc=\dimen174 -\pgf@yc=\dimen175 -\pgf@xd=\dimen176 -\pgf@yd=\dimen177 -\w@pgf@writea=\write3 -\r@pgf@reada=\read3 -\c@pgf@counta=\count286 -\c@pgf@countb=\count287 -\c@pgf@countc=\count288 -\c@pgf@countd=\count289 -\t@pgf@toka=\toks29 -\t@pgf@tokb=\toks30 -\t@pgf@tokc=\toks31 -\pgf@sys@id@count=\count290 - (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg -File: pgf.cfg 2020/12/27 v3.1.8b (3.1.8b) -) -Driver file for pgf: pgfsys-pdftex.def - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def -File: pgfsys-pdftex.def 2020/12/27 v3.1.8b (3.1.8b) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de -f -File: pgfsys-common-pdf.def 2020/12/27 v3.1.8b (3.1.8b) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. -tex -File: pgfsyssoftpath.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgfsyssoftpath@smallbuffer@items=\count291 -\pgfsyssoftpath@bigbuffer@items=\count292 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. -tex -File: pgfsysprotocol.code.tex 2020/12/27 v3.1.8b (3.1.8b) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex -Package: pgfcore 2020/12/27 v3.1.8b (3.1.8b) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex -\pgfmath@dimen=\dimen178 -\pgfmath@count=\count293 -\pgfmath@box=\box52 -\pgfmath@toks=\toks32 -\pgfmath@stack@operand=\toks33 -\pgfmath@stack@operation=\toks34 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet -ric.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari -thmetics.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count294 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te -x -File: pgfcorepoints.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgf@picminx=\dimen179 -\pgf@picmaxx=\dimen180 -\pgf@picminy=\dimen181 -\pgf@picmaxy=\dimen182 -\pgf@pathminx=\dimen183 -\pgf@pathmaxx=\dimen184 -\pgf@pathminy=\dimen185 -\pgf@pathmaxy=\dimen186 -\pgf@xx=\dimen187 -\pgf@xy=\dimen188 -\pgf@yx=\dimen189 -\pgf@yy=\dimen190 -\pgf@zx=\dimen191 -\pgf@zy=\dimen192 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. -code.tex -File: pgfcorepathconstruct.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgf@path@lastx=\dimen193 -\pgf@path@lasty=\dimen194 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code -.tex -File: pgfcorepathusage.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgf@shorten@end@additional=\dimen195 -\pgf@shorten@start@additional=\dimen196 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te -x -File: pgfcorescopes.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgfpic=\box53 -\pgf@hbox=\box54 -\pgf@layerbox@main=\box55 -\pgf@picture@serial@count=\count295 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c -ode.tex -File: pgfcoregraphicstate.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgflinewidth=\dimen197 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation -s.code.tex -File: pgfcoretransformations.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgf@pt@x=\dimen198 -\pgf@pt@y=\dimen199 -\pgf@pt@temp=\dimen256 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex -File: pgfcorequick.code.tex 2020/12/27 v3.1.8b (3.1.8b) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t -ex -File: pgfcoreobjects.code.tex 2020/12/27 v3.1.8b (3.1.8b) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing -.code.tex -File: pgfcorepathprocessing.code.tex 2020/12/27 v3.1.8b (3.1.8b) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te -x -File: pgfcorearrows.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgfarrowsep=\dimen257 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex -File: pgfcoreshade.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgf@max=\dimen258 -\pgf@sys@shading@range@num=\count296 -\pgf@shadingcount=\count297 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex -File: pgfcoreimage.code.tex 2020/12/27 v3.1.8b (3.1.8b) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. -tex -File: pgfcoreexternal.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgfexternal@startupbox=\box56 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te -x -File: pgfcorelayers.code.tex 2020/12/27 v3.1.8b (3.1.8b) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c -ode.tex -File: pgfcoretransparency.code.tex 2020/12/27 v3.1.8b (3.1.8b) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. -tex -File: pgfcorepatterns.code.tex 2020/12/27 v3.1.8b (3.1.8b) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex -File: pgfcorerdf.code.tex 2020/12/27 v3.1.8b (3.1.8b) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex -File: pgfmoduleshapes.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgfnodeparttextbox=\box57 -) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex -File: pgfmoduleplot.code.tex 2020/12/27 v3.1.8b (3.1.8b) -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 -.sty -Package: pgfcomp-version-0-65 2020/12/27 v3.1.8b (3.1.8b) -\pgf@nodesepstart=\dimen259 -\pgf@nodesepend=\dimen260 -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 -.sty -Package: pgfcomp-version-1-18 2020/12/27 v3.1.8b (3.1.8b) -)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex -Package: pgffor 2020/12/27 v3.1.8b (3.1.8b) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) -\pgffor@iter=\dimen261 -\pgffor@skip=\dimen262 -\pgffor@stack=\toks35 -\pgffor@toks=\toks36 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex -Package: tikz 2020/12/27 v3.1.8b (3.1.8b) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers -.code.tex -File: pgflibraryplothandlers.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgf@plot@mark@count=\count298 -\pgfplotmarksize=\dimen263 -) -\tikz@lastx=\dimen264 -\tikz@lasty=\dimen265 -\tikz@lastxsaved=\dimen266 -\tikz@lastysaved=\dimen267 -\tikz@lastmovetox=\dimen268 -\tikz@lastmovetoy=\dimen269 -\tikzleveldistance=\dimen270 -\tikzsiblingdistance=\dimen271 -\tikz@figbox=\box58 -\tikz@figbox@bg=\box59 -\tikz@tempbox=\box60 -\tikz@tempbox@bg=\box61 -\tikztreelevel=\count299 -\tikznumberofchildren=\count300 -\tikznumberofcurrentchild=\count301 -\tikz@fig@count=\count302 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex -File: pgfmodulematrix.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgfmatrixcurrentrow=\count303 -\pgfmatrixcurrentcolumn=\count304 -\pgf@matrix@numberofcolumns=\count305 -) -\tikz@expandcount=\count306 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarytopaths.code.tex -File: tikzlibrarytopaths.code.tex 2020/12/27 v3.1.8b (3.1.8b) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryautomata.code.tex -File: tikzlibraryautomata.code.tex 2020/12/27 v3.1.8b (3.1.8b) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryshapes.multipart.code.tex -File: tikzlibraryshapes.multipart.code.tex 2020/12/27 v3.1.8b (3.1.8b) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibraryshape -s.multipart.code.tex -File: pgflibraryshapes.multipart.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\pgfnodepartlowerbox=\box62 -\pgfnodeparttwobox=\box63 -\pgfnodepartthreebox=\box64 -\pgfnodepartfourbox=\box65 -\pgfnodeparttwentybox=\box66 -\pgfnodepartnineteenbox=\box67 -\pgfnodeparteighteenbox=\box68 -\pgfnodepartseventeenbox=\box69 -\pgfnodepartsixteenbox=\box70 -\pgfnodepartfifteenbox=\box71 -\pgfnodepartfourteenbox=\box72 -\pgfnodepartthirteenbox=\box73 -\pgfnodeparttwelvebox=\box74 -\pgfnodepartelevenbox=\box75 -\pgfnodeparttenbox=\box76 -\pgfnodepartninebox=\box77 -\pgfnodeparteightbox=\box78 -\pgfnodepartsevenbox=\box79 -\pgfnodepartsixbox=\box80 -\pgfnodepartfivebox=\box81 -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarypositioning.code.tex -File: tikzlibrarypositioning.code.tex 2020/12/27 v3.1.8b (3.1.8b) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibraryarrows.code.tex -File: tikzlibraryarrows.code.tex 2020/12/27 v3.1.8b (3.1.8b) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.code. -tex -File: pgflibraryarrows.code.tex 2020/12/27 v3.1.8b (3.1.8b) -\arrowsize=\dimen272 -)) (/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty -File: lstlang1.sty 2020/03/24 1.8d listings language file -) -LaTeX Font Info: Trying to load font information for OT1+ptm on input line 5 -3. - -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ot1ptm.fd -File: ot1ptm.fd 2001/06/04 font definitions for OT1/ptm. -) -(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def -File: l3backend-pdftex.def 2020-01-29 L3 backend support: PDF output (pdfTeX) -\l__color_backend_stack_int=\count307 -\l__pdf_internal_box=\box82 -) -(./introduccion.aux -LaTeX Info: Redefining \. on input line 25. -LaTeX Info: Redefining \% on input line 25. - - -LaTeX Warning: Label `tab:pascal' multiply defined. - -) -\openout1 = `introduccion.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 53. -LaTeX Font Info: ... okay on input line 53. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 53. -LaTeX Font Info: ... okay on input line 53. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 53. -LaTeX Font Info: ... okay on input line 53. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 53. -LaTeX Font Info: ... okay on input line 53. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 53. -LaTeX Font Info: ... okay on input line 53. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 53. -LaTeX Font Info: ... okay on input line 53. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 53. -LaTeX Font Info: ... okay on input line 53. -LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 53. -LaTeX Font Info: ... okay on input line 53. -LaTeX Info: Redefining \. on input line 53. -LaTeX Info: Redefining \% on input line 53. -Package hyperref Info: Link coloring OFF on input line 53. - (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty -Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section - -(/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty -Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) -) -(/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty -Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) -) -\c@section@level=\count308 -) -LaTeX Info: Redefining \ref on input line 53. -LaTeX Info: Redefining \pageref on input line 53. -LaTeX Info: Redefining \nameref on input line 53. - -(./introduccion.out) (./introduccion.out) -\@outlinefile=\write4 -\openout4 = `introduccion.out'. - - -(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -[Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count309 -\scratchdimen=\dimen273 -\scratchbox=\box83 -\nofMPsegments=\count310 -\nofMParguments=\count311 -\everyMPshowfont=\toks37 -\MPscratchCnt=\count312 -\MPscratchDim=\dimen274 -\MPnumerator=\count313 -\makeMPintoPDFobject=\count314 -\everyMPtoPDFconversion=\toks38 -) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty -Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf -Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 -85. - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg -File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv -e -)) -\c@lstlisting=\count315 -Package caption Info: Begin \AtBeginDocument code. -Package caption Info: End \AtBeginDocument code. -LaTeX Font Info: Trying to load font information for U+msa on input line 55. - - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd -File: umsa.fd 2013/01/14 v3.01 AMS symbols A -) -LaTeX Font Info: Trying to load font information for U+msb on input line 55. - - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd -File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) [1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] - -Package hyperref Warning: Suppressing empty link on input line 101. - - -LaTeX Warning: `!h' float specifier changed to `!ht'. - -[2] - -Package hyperref Warning: Suppressing empty link on input line 128. - -Package hyperref Info: bookmark level for unknown lstlisting defaults to 0 on i -nput line 146. -[3] -LaTeX Font Info: Trying to load font information for TS1+ptm on input line 1 -93. - (/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd -File: ts1ptm.fd 2001/06/04 font definitions for TS1/ptm. -) [4] [5] -\c@defi=\count316 -\c@teo=\count317 - [6] - -File: comple.jpg Graphic file (type jpg) - -Package pdftex.def Info: comple.jpg used on input line 298. -(pdftex.def) Requested size: 276.00105pt x 207.01175pt. - -[7 <./comple.jpg>] (./prim.py) - -LaTeX Warning: `!h' float specifier changed to `!ht'. - -[8] [9] (./introduccion.aux -LaTeX Info: Redefining \. on input line 25. -LaTeX Info: Redefining \% on input line 25. -) - -LaTeX Warning: There were multiply-defined labels. - -Package rerunfilecheck Info: File `introduccion.out' has not changed. -(rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0. - ) -Here is how much of TeX's memory you used: - 22532 strings out of 481117 - 420388 string characters out of 5912367 - 1009443 words of memory out of 5000000 - 38987 multiletter control sequences out of 15000+600000 - 431901 words of font info for 83 fonts, out of 8000000 for 9000 - 85 hyphenation exceptions out of 8191 - 72i,10n,74p,868b,2038s stack positions out of 5000i,500n,10000p,200000b,80000s -{/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on introduccion.pdf (9 pages, 192492 bytes). -PDF statistics: - 208 PDF objects out of 1000 (max. 8388607) - 181 compressed objects within 2 object streams - 91 named destinations out of 1000 (max. 500000) - 18 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/introduccion.out b/introduccion.out deleted file mode 100644 index e69de29..0000000 diff --git a/nats.py b/nats.py new file mode 100644 index 0000000..d6ac0f2 --- /dev/null +++ b/nats.py @@ -0,0 +1,6 @@ +def nats(n): + yield n + yield from nats(n+1) + +s=nats(1) + diff --git a/pascalazy.py b/pascalazy.py new file mode 100644 index 0000000..b720bd8 --- /dev/null +++ b/pascalazy.py @@ -0,0 +1,22 @@ +def pascal(n): + if n==1: + return [1] + else: + r=pascal(n-1) + x=[0]+r + y=r+[0] + return [i+j for i,j in zip(x,y)] + +def nats(n): + yield n + yield from nats(n+1) + +def primo(s): + n=next(s) + yield n + yield from primo(i for i in s if i%n!=0) + +s=nats(1) +print(pascal(next(s))) +p=primo(nats(2)) + diff --git a/pascalazy.py~ b/pascalazy.py~ new file mode 100644 index 0000000..b720bd8 --- /dev/null +++ b/pascalazy.py~ @@ -0,0 +1,22 @@ +def pascal(n): + if n==1: + return [1] + else: + r=pascal(n-1) + x=[0]+r + y=r+[0] + return [i+j for i,j in zip(x,y)] + +def nats(n): + yield n + yield from nats(n+1) + +def primo(s): + n=next(s) + yield n + yield from primo(i for i in s if i%n!=0) + +s=nats(1) +print(pascal(next(s))) +p=primo(nats(2)) + diff --git a/prim.py~ b/prim.py~ new file mode 100644 index 0000000..b720bd8 --- /dev/null +++ b/prim.py~ @@ -0,0 +1,22 @@ +def pascal(n): + if n==1: + return [1] + else: + r=pascal(n-1) + x=[0]+r + y=r+[0] + return [i+j for i,j in zip(x,y)] + +def nats(n): + yield n + yield from nats(n+1) + +def primo(s): + n=next(s) + yield n + yield from primo(i for i in s if i%n!=0) + +s=nats(1) +print(pascal(next(s))) +p=primo(nats(2)) +