diff options
| author | Juan Marin Noguera <juan@mnpi.eu> | 2023-08-22 17:56:56 +0200 |
|---|---|---|
| committer | Juan Marin Noguera <juan@mnpi.eu> | 2023-08-22 17:56:56 +0200 |
| commit | 1fd2213192d22880706440e7f724bdc6db966ee0 (patch) | |
| tree | ff2d6812ef6db399852ad8c4cf2b6f1cd417dfed /present/index.html | |
| parent | 2f9eb7a94819a08937ba08320a142b7f0be407fd (diff) | |
Añadida presentación1.0
Diffstat (limited to 'present/index.html')
| -rw-r--r-- | present/index.html | 409 |
1 files changed, 409 insertions, 0 deletions
diff --git a/present/index.html b/present/index.html new file mode 100644 index 0000000..7eecb66 --- /dev/null +++ b/present/index.html @@ -0,0 +1,409 @@ +<!doctype html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> + + <title>reveal.js</title> + + <link rel="stylesheet" href="dist/reset.css"> + <link rel="stylesheet" href="dist/reveal.css"> + <link rel="stylesheet" href="dist/theme/black.css"> + + <!-- Theme used for syntax highlighted code --> + <link rel="stylesheet" href="plugin/highlight/monokai.css"> + <style> + li li, .small { font-size: 80%; } + img, object[type="image/svg+xml"] { filter: invert(1); max-width: 80%; } + .credits { vertical-align: bottom; margin-bottom: 5%; font-size: 80%; display:flex; } + .credits p { padding: 20pt; margin: 0pt; } + #creditleft { text-align: right; padding-top: calc(20pt + 0.5em); } + #creditright { text-align: left; } + #credit-intersp { background-color: white; margin: 0pt; border: 0pt; width: 6px; } + .horiz-list { display:flex !important; flex-direction: row; justify-content: space-around; } + .horiz-list > li { list-style-type: none; } + .has-diagrams { display:flex; flex-direction: column; height: 95%; } + .diagrams { display:flex; flex-direction: row; justify-content: space-around; width: 90%; flex-grow: 1; } + </style> + </head> + <body lang-="es"> + <div class="reveal"> + <div class="slides"> + <section> + <h2>Teoría de categorías</h2> + <p class="small">Una visión general con aplicaciones a la computación</p> + <object type="image/svg+xml" data="fig/front.svg"></object> + <div class="credits"> + <p id="creditleft"> + <strong>Juan Marín Noguera</strong><br> + Julio de 2023 + </p> + <div id="credit-intersp"></div> + <p id="creditright"> + <strong>Tutor:</strong> Alberto del Valle Robles<br> + Facultad de Matemáticas <br> + Universidad de Murcia + </p> + </div> + </section> + <section lang="en"> + <h2>Motivation</h2> + <ul> + <li class="fragment">Known as <em>abstract nonsense</em>.</li> + <li class="fragment">Common vocabulary + <ul class="fragment"> + <li>Isomorphisms</li> + <li>Products</li> + <li>Kernels</li> + <li>Quotients</li> + <li>etc.</li> + </ul> + <li class="fragment">Intuitive reasoning across fields</li> + <li class="fragment">Rigorous transfer of knowledge across fields</li> + </ul> + </section lang="en"> + <section> + <h2>Motivation</h2> + <p>General results, appliable to a lot of fields</p> + <ul> + <li class="fragment">Abbreviate routine parts of proofs</li> + <li class="fragment">Exploration of new areas</li> + <li class="fragment">Diagram chasing</li> + </ul> + </section> + <section lang="en"> + <h2>Bibliography</h2> + <ul> + <li class="fragment">Adámek, Jiří & Herrlich, Horst & Strecker, + George. <em>Abstract and Concrete Categories: The Joy of Cats</em> + (1990).</li> <!-- Many examples. "It also has drawings of cats, + which is cute" --> + <li class="fragment">Mac Lane, Saunders. <em>Categories for the + Working Mathematician</em> (1971).</li> + <li class="fragment">Riehl, Emily. <em>Category Theory in Context</em> + (2014).</li> + <li class="fragment">Some proofs and examples are mine.</li> + </ul> + </section> + <section lang="en" style="height: 100%;"> + <div class="has-diagrams"> + <h2>Categories</h2> + <ul> + <li class="fragment">Collections $\text{Ob}(\mathcal{C})$ and + $\text{Mor}(\mathcal{C})$.</li> + <li class="fragment">Functions $\text{dom},\text{cod}:\text{Mor}(\mathcal{C})\to\text{Ob}(\mathcal{C})$. + <ul class="fragment"><li>$f:a\to b$ means $\text{dom}\,f=a$ and $\text{cod}\,f=b$.</li></ul> + </li> + <li class="fragment">For $f:a\to b$ and $g:b\to c$, $g\circ f:a\to c$.</li> + <li class="fragment">For every $a\in\text{Ob}(\mathcal{C})$, $1_a:a\to a$.</li> + </ul> + <div class="diagrams"> + <img class="fragment" type="img/svg+xml" src="fig/cat-assoc.svg"> + <img class="fragment" type="img/svg+xml" src="fig/cat-ident.svg"> + </div> + <ul> + <li class="fragment"><strong>Construct:</strong> Category <q>made + up of sets and functions.</q></li> + </ul> + </div> + </section> + <section> + <section> + <h2>Monomorfismos y epimorfismos</h2> + <ul> + <li class="fragment"><strong>Monomorfismo:</strong> + $f:a\rightarrowtail b$ tal que para cada $g,h:k\to a$, $f\circ + g=f\circ h\implies g=h$.</li> + <li class="fragment"><strong>Epimorfismo:</strong> $f:a\twoheadrightarrow + b$ tal que para cada $g,h:b\to q$, $g\circ f=h\circ f\implies + g=h$.</li> + <li class="fragment"><strong>Categoría dual:</strong> la misma pero con + el sentido de las flechas (y la composición) invertido.</li> + <li class="fragment"><strong>Propiedad dual:</strong> La + misma propiedad en la categoría dual.</li> + </ul> + </section> + <section> + <h2>Monomorfismos y epimorfismos</h2> + <ul> + <li>En constructos suelen ser los morfismos inyectivos y suprayectivos.</li> + <li class="fragment">No es el caso, por ejemplo, en $\mathbf{Rng}$. + <div class="fragment" style="text-align:center;width:100%;"> + $\mathbb{Z}\overset{u}{\hookrightarrow}\mathbb{Q}\underset{h}{\overset{g}{\rightrightarrows}}A$ + </div> + <ul> + <li class="fragment">$g(\frac{p}{q})=\frac{g(p)}{g(q)}=\frac{(g\circ u)(p)}{(g\circ u)(q)}$, e igualmente para $h$.</li> + <li class="fragment">Por tanto $g\circ u=h\circ u\implies g=h$ y $u$ es un epimorfismo.</li> + </ul> + </li> + <li class="fragment">Monomorfismo + epimorfismo $\neq$ isomorfismo.</li> + </ul> + </section> + </section> + <section> + <h2>Funtores</h2> + <p><q>Morfismos</q> de categorías.</p> + <ul> + <li class="fragment">Función $T_0:\text{Ob}(\mathcal{C})\to\text{Ob}(\mathcal{D})$.</li> + <li class="fragment">Para $a,b\in\text{Ob}(\mathcal{C})$, \[T_{a,b}:\hom(a,b)\to\hom(T_0a,T_0b).\]</li> + <li class="fragment">$1_{T(a)}=T(1_a)$.</li> + <li class="fragment">$T(g)\circ T(f)=T(g\circ f)$.</li> + <li class="fragment">Categoría $\mathbf{Cat}$ de categorías pequeñas y funtores.</li> + </ul> + </section> + <section style="height:100%;"> + <div class="has-diagrams"> + <h2 style="display:inline-block;max-height:1em;margin-left:-1em;margin-right:-1em;" + >Transformaciones naturales</h2> + <ul> + <li class="fragment" data-fragment-index="1">Sea $V$ un espacio vectorial de dimensión finita. + <ul> + <li class="fragment" data-fragment-index="2">$V\cong V^*$, pero en general no hay un isomorfismo <q>canónico</q>.</li> + <li class="fragment" data-fragment-index="3">$V\cong V^{**}$, isomorfismo <q>natural</q> + $v\mapsto(f\mapsto f(v))$.</li> + </ul> + <li class="fragment" data-fragment-index="4">Morfismos que <q>actúan siempre igual</q>.</li> + <li class="fragment" data-fragment-index="5">Dados dos funtores + $S,T:\mathcal{C}\to\mathcal{D}$, + función + <span style="display:inline-block">$\tau:\text{Ob}(\mathcal{C})\to\text{Mor}(\mathcal{D})$</span> + tal que: + </li> + </ul> + <div class="fragment diagrams" data-fragment-index="5"> + <img src="fig/natural.svg"> + </div> + </div> + </section> + <section style="height:100%;"> + <div class="r-stack" style="height:100%;"> + <div class="has-diagrams fragment fade-out" data-fragment-index="3"> + <h2>Flechas universales</h2> + <p>Sean $U:\mathcal{C}\to\mathcal{B}$ un funtor y + $b\in\text{Ob}(\mathcal{B})$.</p> + <div class="diagrams"> + <img src="fig/universal.svg"> + </div> + <ul> + <li class="fragment" data-fragment-index="1"> + $\mathbf{Mon}\to\mathbf{Set}$: + $c=\left(\bigcup_nb^n,\bullet\right)$, $ux=(x)$. + </li> + <li class="fragment" data-fragment-index="2"> + $R\text{-}\mathbf{Mod}\to\mathbf{Set}$: $c=R^b$, $ux$ en la + base. + </li> + </ul> + </div> + <div class="has-diagrams fragment" data-fragment-index="3"> + <h2>Flechas universales</h2> + <p>Sean $T:\mathcal{B}\to\mathcal{C}$ un funtor y + $c\in\text{Ob}(\mathcal{C})$.</p> + <div class="diagrams"> + <img src="fig/couniversal.svg"> + </div> + <ul style="visibility:hidden;"> + <li> + $\mathbf{Mon}\to\mathbf{Set}$: + $c=\left(\bigcup_nb^n,\bullet\right)$, $ux=(x)$. + </li> + <li> + $R\text{-}\mathbf{Mod}\to\mathbf{Set}$: $c=R^b$, $ux$ en la + base. + </li> + </ul> + </div> + </div> + </section> + <section> + <h2>Adjunciones</h2> + <p>Si todo objeto de $\mathcal{B}$ admite flecha + universal hacia $G$...</p> + <div class="fragment">\[(F,G,\eta,\varepsilon):\mathcal{B}\to\mathcal{C}\]</div> + <ul> + <li class="fragment">$G:\mathcal{C}\to\mathcal{B}$ suele ser un <em>funtor olvidadizo</em>.</li> + <li class="fragment">$F:\mathcal{B}\to\mathcal{C}$ es el <em>funtor libre</em>.</li> + <li class="fragment">$\eta:1_{\mathcal{B}}\to GF$ es la <em>unidad</em>. + <!--<ul><li class="fragment">Cada $\eta_b$ es una flecha universal de $b$ a $G$.</li></ul>--> + </li> + <li class="fragment">$\varepsilon:FG\to 1_{\mathcal{C}}$ es la <em>counidad</em>. + <!--<ul><li class="fragment">Cada $\varepsilon_c$ es una flecha universal de $F$ a $c$.</li></ul>--> + </li> + </ul> + <div class="fragment"> + <ul class="horiz-list"> + <li>$G\varepsilon\cdot\eta G=1_G$</li> + <li>$\varepsilon F\cdot F\eta=1_F$</li> + </ul> + </div> + </section> + <section style="height:90%"> + <div class="has-diagrams" style="width:100%"> + <h2>Mónadas</h2> + <ul class="horiz-list"> + <li>$T:\mathcal{C}\to\mathcal{C}$</li> + <li>$\eta:1_{\mathcal{C}}\to T$</li> + <li>$\mu:T^2\to T$</li> + </ul> + <div class="diagrams" style="width:100%"> + <div class="r-stack" style="width:100%;height:100%;"> + <div class="diagrams fragment" style="height:100%" data-fragment-index="0"> + <div class="diagrams fragment fade-out" style="height:100%" data-fragment-index="2"> + <img src="fig/monad_data.svg"> + <img src="fig/monad_unit.svg"> + </div> + </div> + <div class="diagrams fragment fade-in-then-out" style="height:100%" data-fragment-index="2"> + <img src="fig/monad_data_pow.svg"> + <img src="fig/monad_unita_pow.svg"> + <img src="fig/monad_unitb_pow.svg"> + </div> + <div class="diagrams fragment" style="height:100%" data-fragment-index="3"> + <img src="fig/monad_data_adj.svg"> + <img src="fig/monad_unita_adj.svg"> + </div> + </div> + </div> + <div class="r-stack"> + <div class="fragment" data-fragment-index="1" style="width:100%"> + <ul class="horiz-list fragment fade-out" data-fragment-index="3"> + <li>$T=\mathcal{P}$</li> + <li>$\eta_X(x)=\{x\}$</li> + <li>$\mu_X(\mathcal{X})=\bigcup\mathcal{X}$</li> + </ul> + </div> + <ul class="horiz-list fragment" data-fragment-index="3" style="width:100%"> + <li>$T=GF$</li> + <li>$\eta=\eta$</li> + <li>$\mu=G\varepsilon F$</li> + </ul> + </div> + </div> + </section> + <section> + <h2>Categorías en programación</h2> + <table class="small"> + <colgroup> + <col span="2" style="width: 50%;"> + </colgroup> + <tbody> + <tr> + <th class="fragment" data-fragment-index="1">Programación imperativa</th> + <th class="fragment" data-fragment-index="5">Programación funcional</th> + </tr> + <tr> + <td class="fragment" data-fragment-index="2">Estado accedido por variables. + <pre>List<Item> list = new List<>();<br>int index;</pre> + </td> + <td class="fragment" data-fragment-index="6">Variables que representan valores. + <pre>let list = [item1, item2, ...]</pre> + </td> + </tr> + <tr> + <td class="fragment" data-fragment-index="3">Comandos que modifican el estado. + <pre>list.insert(index, item1);<br>int sum = 0;<br>for (int i = 0; i < list.size(); i++)<br> sum += list[i].price();</pre> + </td> + <td class="fragment" data-fragment-index="7">Expresiones matemáticas. + <span class="small">$\sum_{x\in\text{list}}\text{price}(x)\rightsquigarrow$</span><pre>List.sum(List.map Item.price list)</pre> + </td> + </tr> + <tr> + <td class="fragment" data-fragment-index="4">Procedimientos. + <pre>void printItem(Item item) {<br> System.out.println(item.name().toString());<br>}</pre> + </td> + <td class="fragment" data-fragment-index="8">Funciones puras. + <pre>itemData item =<br> Int.to_string (item.name)</pre> + </td> + </tr> + </tbody> + </table> + </section> + <section> + <h2>Programación funcional</h2> + <ul style="width:90%;"> + <li class="fragment">Cálculo lambda + <ul class="horiz-list fragment" style="padding-bottom:1ex;"> + <li>$x$</li> + <li>$(\lambda x.M)$</li> + <li>$(M\,N)$</li> + </ul> + <ul> + <li class="fragment">$(\lambda x.M[x])\to_\alpha(\lambda y.M[y])$</li> + <li class="fragment">$((\lambda x.M)\,E)\to_\beta(M\{E/x\})$</li> + <li class="fragment">$(\lambda x.M[x])\to_\eta M$</li> + </ul> + </li> + <li class="fragment">Teoría de categorías + <ul> + <li class="fragment">Cada expresión tiene un tipo.</li> + <li class="fragment">Las funciones (computables) de un + tipo $a$ a un tipo $b$ tienen tipo $a\to b$.</li> + <li class="fragment"><strong>Objetos:</strong> Tipos de dato.</li> + <li class="fragment"><strong>Morfismos:</strong> + Elementos de tipo $a\to b$. + </li> + <!--<li class="fragment">Se definen tipos producto, coproducto, etc.</li>--> + </ul> + </li> + </ul> + </section> + <section> + <h2>Mónada IO</h2> + <ul> + <li class="fragment">Las funciones puras no pueden, p. ej., mostrar + datos por pantalla o interactuar con el usuario.</li> + <li class="fragment">Para cada tipo $a$, un tipo $\mathtt{IO}\,a$ de + las acciones que devuelven un elemento de tipo $a$. + </li> + <li class="fragment">Mónada $(\mathtt{IO},\eta,\mu)$. + <ul> + <li class="fragment">Para $f:a\to b$, $(\mathtt{IO}\,f)(x)$ + ejecuta $x$ y aplica $f$ al resultado.</li> + <li class="fragment">$\eta_a(x)$ es una acción que no hace nada + y devuelve $x$.</li> + <li class="fragment">$\mu_a(x)$ ejecuta $x$ y ejecuta el + resultado de $x$.</li> + </li> + </ul> + </section> + <section> + <h2>Mónada de manejo errores</h2> + <ul> + <li class="fragment">Una función $f:a\to b\oplus e$ devuelve un + valor de tipo $b$, o falla con un valor de tipo $e$.</li> + <li class="fragment">Mónada $((\oplus\,e),\eta,\mu)$. + <ul> + <li class="fragment">Para $f:a\to b$, $\,f\oplus + e:x_a\rightsquigarrow f(x_a),x_e\rightsquigarrow x_e$.</li> + <li class="fragment">$\eta_a:a\hookrightarrow a\oplus e$ es la inclusión en la unión disjunta.</li> + <li class="fragment">$\mu_a:(a\oplus e)\oplus e\to a\oplus e$ <q>identifica</q> las dos copias de $e$.</li> + </ul> + </li> + <li class="fragment"><strong>Notación:</strong> Si $x:Ta$ y $f:a\to Tb$, + $$(x\Rightarrow f)\coloneqq \mu_b(Tf(x)).$$</li> + </ul> + </section> + <section> + <h1>Preguntas</h1> + </section> + </div> + </div> + + <script src="dist/reveal.js"></script> + <script src="plugin/notes/notes.js"></script> + <script src="plugin/markdown/markdown.js"></script> + <script src="plugin/highlight/highlight.js"></script> + <script src="plugin/math/math.js"></script> + <script> + // More info about initialization & config: + // - https://revealjs.com/initialization/ + // - https://revealjs.com/config/ + Reveal.initialize({ + hash: true, + + // Learn about plugins: https://revealjs.com/plugins/ + plugins: [ RevealMarkdown, RevealHighlight, RevealNotes, RevealMath.KaTeX ] + }); + </script> + </body> +</html> |
