diff options
Diffstat (limited to 'present/script.txt')
| -rw-r--r-- | present/script.txt | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/present/script.txt b/present/script.txt new file mode 100644 index 0000000..a1ce283 --- /dev/null +++ b/present/script.txt @@ -0,0 +1,205 @@ +(1) Buenos días, mi nombre es Juan Marín Noguera y voy a presentar mi +TFG sobre Teoría de Categorías, tutorizado por Alberto del Valle. + +(2) Category theory is the study of mathematical structure. [SPC] It +is also called abstract nonsense because of its very abstract nature +but it has a wide range of application in mathematical practice, [SPC] +such as providing a common vocabulary of terms [SPC] like isomorphism, +product, kernel, or quotient space. [SPC] This facilitates learning +and applying some intuition acquired in one field of mathematics to +another one. [SPC] However, category theory goes beyond that and +provides mechanisms to formally transfer knowledge across fields, like +functors and adjunctions. + +(3) In addition, category theory provides general results applicable +to a wide variety of fields, [SPC] which allow abbreviating routine +parts of proofs by referring to these results [SPC] as well as to +start exploring areas of mathematics, as we will see in the part about +computation theory. [SPC] Category theory also provides proof methods +like diagram chasing which is very common in algebra. + +(4) My work is based primarily on the classical books [SPC] "The Joy +of Cats" and [SPC] "Categories for the Working Mathematician", [SPC] +with some examples taken from this more modern book by Riehl. [SPC] I +have also developed some examples on my own and some proofs of results +that were not given by the bibliography. Finally, the last part about +functional programming is not based on any particular book but rather +on common knowledge in the field and relevant papers. + +(5) The most fundamental concept in category theory is that of a +category. [SPC] Categories are made up of a collection of objects and +one of morphisms, [SPC] each with a domain and a codomain from the +collection of objects [SPC] specified with this notation, [SPC] and +there are also operations of composition of arrows [SPC] and identity +such that [SPC] composition is associative and [SPC] the identities +are identities of the composition. This is expressed by commutative +diagrams like these, which explain that for any two paths with the +same domain and codomain, the composition of the arrows is the +same. [SPC] Typical categories are constructs, where objects are sets +with some structure and morphisms are functions between those +sets. For example, we have the construct of all sets along with all +functions, or that of vector spaces and lineal transformations. + +(6) With this we can define general concepts just in terms of objects +and morphisms. [SPC] For example, a monomorphism is a left-cancellable +arrow [SPC] and an epimorphism is a right-cancellable arrow. [SPC] +These terms are very similar and show a general pattern in category +theory where many concepts come in pairs, one being the dual the +other. [SPC] Formally, the dual of a category is another category with +the same objects and morphisms but with the domain and codomain of +morphisms swapped, and with composition taking the inputs in the +opposite order. [SPC] Then the dual of a property is the same property +in the dual category. + +(7) In constructs, monomorphisms are usually the injective functions +and epimorphisms are the surjective functions, but this need not be +the case. [SPC] For example, in the category of rings and ring +homomorphisms, if we have this inclusion and these two arrows, [SPC] +then g and h are given by their composition with u, [SPC] so u is an +epimorphism despite not being surjective. [SPC] u is also clearly a +monomorphism, which illustrates that a monomorphism that is also an +epimorphism is not always an isomorphism, as u does not have an +inverse. + +(8) Ahora vuelvo al español. Para relacionar distintas categorías +tenemos los funtores, que son como morfismos de categorías. [SPC] +Están formados por una función sobre los objetos y, [SPC] para cada +par de objetos en el dominio, una función que lleva morfismos entre +esos dos objetos a morfismos entre sus imágenes por la función +anterior. [SPC] Además, estas funciones deben respetar la identidad +[SPC] y la composición. [SPC] Los funtores se pueden componer y para +cada categoría existe un funtor identidad, por lo que podemos definir +una categoría de categorías más pequeñas (que no se incluye a sí misma +por la paradoja de Russell) y así los funtores verdaderamente son +morfismos de categorías. + +(9) A partir de aquí podemos definir el concepto de transformación +natural, un concepto fundamental que de hecho fue el que motivó el +desarrollo de la teoría de categorías. Para ilustrarlo vemos que [SPC] +un espacio vectorial de dimensión finita [SPC] es isomorfo a su dual, +formado por las transformaciones lineales del espacio al cuerpo, pero +no hay una forma canónica de tomar el isomorfismo. [SPC] Sin embargo, +para el doble dual sí que la hay. [SPC] Estos "morfismos que se +definen igual" para todos los objetos son muy comunes en matemáticas, +[SPC] y los definimos como una función que lleva cada objeto de una +categoría a un morfismo entre la imagen del objeto por dos funtores de +tal forma que para todo morfismo f el diagrama conmuta. + +(10) Otro concepto importante es el de flecha universal. Una flecha +universal de un objeto b a un funtor U es un morfismo u como el del +diagrama tal que para cada morfismo f de b a un punto en la imagen del +funtor, existe un f gorro tal que el diagrama conmuta. Entonces el +objeto c es el objeto libre sobre b. Normalmente el funtor será un +funtor olvidadizo sobre un constructo, que lleva cada objeto del +constructo a su conjunto subyacente y cada morfismo a sí mismo como +función. [SPC] Entonces si tenemos, por ejemplo, el funtor olvidadizo +del constructo de monoides, el objeto libre de un conjunto está +formado por las listas de elementos del conjunto con la concatenación +de listas, y la flecha universal lleva cada elemento a una lista de +longitud 1. [SPC] Y si tenemos el del constructo de los módulos sobre +un cierto anillo conmutativo, el objeto libre de un conjunto es el +módulo libre con cierta dimensión y la flecha universal lleva cada +elemento a un elemento de la base. [SPC] El concepto dual al de flecha +universal de un objeto a un funtor es el de flecha universal de un +funtor a un objeto. + +(11) Si un funtor G admite una flecha universal desde cada objeto de +su codominio, [SPC] podemos definir una adjunción. [SPC] Esta está +formada por dicho funtor, [SPC] un funtor en sentido inverso llamado +funtor libre que lleva cada objeto a su objeto libre hacia G y [SPC] +dos transformaciones naturales llamadas unidad [SPC] y counidad [SPC] +que cumplen estas dos identidades. Entonces cada eta sub x es una +flecha universal de x a G y cada épsilon sub y es una flecha universal +de F a y. + +(12) A partir de las adjunciones podemos definir el concepto de +mónada. Las mónadas vienen dadas por un endofuntor (un funtor de una +categoría a sí misma) y dos transformaciones naturales eta y mu, donde +la primera va del funtor identidad al endofuntor y la segunda del +endofuntor aplicado dos veces al mismo aplicado una vez, [SPC] y que +cumplen estas dos condiciones de coherencia. [SPC] Un ejemplo sencillo +es la potencia, basada en el endofuntor en la categoría de conjuntos +que lleva cada conjunto a su conjunto potencia y cada función a la +"función potencia" que asocia a cada subconjunto su imagen por la +función original. Entonces eta lleva cada elemento de un conjunto al +conjunto unipuntual y mu da la unión de un conjunto de +conjuntos. [SPC] La primera propiedad muestra que, dado un conjunto de +conjuntos de conjuntos, da lo mismo unir los conjuntos "de fuera" y +luego "los de dentro" que unir primero por dentro y luego por +fuera. Las otras dos propiedades muestran que unir un conjunto +unipuntual o uno formado por conjuntos unipuntuales da el conjunto +original. [SPC] Por otro lado, si tenemos una adjunción podemos +obtener una mónada componiendo el funtor libre y el olvidadizo y +tomando como eta la unidad de la adjunción y como mu esta expresión en +función de la counidad. + +(13) A continuación vamos a ver ahora la utilidad de las mónadas en +ciencias de la computación, para lo que primero explico la +programación funcional. [SPC] La forma tradicional de programar se +conoce como programación imperativa. [SPC] En ella hay un estado +formado por los valores de las variables [SPC] y usamos comandos que +modifican el estado. Por ejemplo este código calcula una suma +modificando sucesivamente los valores de i y sum. [SPC] Además, +podemos agrupar listas de comandos en procedimientos. Esta forma de +programar es intuitiva y concuerda más o menos con cómo funcionan +internamente ordenadores, pero el que los valores de las variables +cambien hace que sea difícil razonar con el código y fácil introducir +fallos, [SPC] por lo que surge la programación funcional. [SPC] En +esta las variables simplemente representan valores descritos mediante +una expresión, [SPC] y las expresiones se asimilan a expresiones +matemáticas. Por ejemplo, esta línea asocia a cada elemento de la +lista su precio y luego suma los precios. [SPC] Finalmente, en vez de +procedimientos se usan funciones puras, que sirven como funciones +matemáticas en que simplemente asocian a cada entrada una salida, sin +modificar variables ni causar otros efectos colaterales. + +(14) La programación funcional se basa en dos fundamentos. [SPC] +Primero tenemos el cálculo lambda, [SPC] que define las variables, la +definición de funciones y la aplicación de una variable a un valor +como las expresiones fundamentales para expresar programas y define +[SPC] una serie [SPC] de reglas [SPC] de reducción sobre +expresiones. [SPC] El otro fundamento es la teoría de +categorías. [SPC] La idea es que para evitar más fallos cada expresión +tiene un tipo, como entero, cadena de caracteres, vector en R^3, +etc. [SPC] Las funciones que llevan elementos de un tipo a a un tipo b +tienen tipo "a a b". [SPC] Entonces podemos definir una categoría +cuyos objetos son los tipos de dato, [SPC] y cuyos morfismos son las +funciones de un tipo a otro que se pueden expresar mediante cálculo +lambda, y la composición y la identidad son las obvias. + +(15) La programación funcional como la hemos descrito tiene un +problema, [SPC] y es que define los programas como funciones puras, +por lo que no se pueden representar programas interactivos. [SPC] Para +representarlos, para cada tipo a definimos un tipo IO de a que +representa las acciones que se comunican con el exterior de alguna +forma y finalmente devuelven un elemento de tipo a. Existen funciones +que devuelven acciones básicas como leer o escribir un caracter, crear +una ventana, etc., [SPC] y para combinarlas usamos una mónada. [SPC] +Para que IO sea un endofuntor, lo definimos sobre morfismos de esta +forma, lo que permite mapear el valor devuelto por una acción. [SPC] +Entonces definimos eta sobre un valor como la acción que simplemente +devuelve el valor tal cual [SPC] y mu como una función que toma una +acción que devuelve otra acción y ejecuta las dos acciones en +secuencia, y con esto se puede definir cualquier programa interactivo +como un valor de tipo IO. + +(16) Aunque la mónada IO es la única "necesaria" en programación +funcional, hay otras mónadas que también son útiles. [SPC] Por +ejemplo, muchas veces una función puede no devolver un valor del tipo +esperado sino dar un error, que representamos como un elemento de tipo +e que contiene errores como división entre 0, o que una cadena de +entrada no tiene el formato correcto, etc. El símbolo de suma directa +es una unión disjunta de tipos. [SPC] Entonces podemos facilitar el +manejo de errores con una mónada. [SPC] El endofuntor actúa sobre una +función devolviendo una función que actúa como la original sobre +elementos del dominio y deja los elementos del tipo de error tal +cual. [SPC] Eta se define como la inclusión en la unión disjunta [SPC] +y mu toma un valor con dos posibles fuentes de error y "se olvida" de +cuál es la fuente del error. [SPC] Finalmente, en la práctica el uso +de mónadas se hace con esta notación. En este caso se toma un valor x +que puede ser un error, en caso de que no lo sea se le aplica una +función f que puede devolver otro error, y se aplica mu para juntar +los dos errores porque bastante tenemos ya con un error. + +(17) Esto concluye la presentación y me parece que ahora los que no +están en el grado se libran de escuchar el turno de preguntas. |
