From 4b30e6ec24b2786d7308e86a42c3c99ad71b3953 Mon Sep 17 00:00:00 2001 From: Juan Marín Noguera Date: Mon, 24 Feb 2020 17:23:53 +0100 Subject: Asignaturas actuales --- README.md | 9 + bd/n.lyx | 166 +++++ bd/n1.lyx | 319 +++++++++ bd/n2.lyx | 594 ++++++++++++++++ cc/n.lyx | 171 +++++ cc/n1.lyx | 1200 +++++++++++++++++++++++++++++++ cc/n2.lyx | 1032 +++++++++++++++++++++++++++ st/n.lyx | 152 ++++ st/n1.lyx | 280 ++++++++ ts/n.lyx | 168 +++++ ts/n1.lyx | 2358 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 6449 insertions(+) create mode 100644 bd/n.lyx create mode 100644 bd/n1.lyx create mode 100644 bd/n2.lyx create mode 100644 cc/n.lyx create mode 100644 cc/n1.lyx create mode 100644 cc/n2.lyx create mode 100644 st/n.lyx create mode 100644 st/n1.lyx create mode 100644 ts/n.lyx create mode 100644 ts/n1.lyx diff --git a/README.md b/README.md index 2f2da39..2da5493 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,15 @@ Las asignaturas de ingeniería informática que se incluyen son las siguientes: * `pcd`: Programación Concurrente y Distribuida (sólo PDF). * `rc`: Redes de Comunicaciones (sólo PDF). +Las siguientes asignaturas están en progreso: + +* `anm`: Análisis Numérico Matricial. +* `bd`: Bases de Datos. +* `cc`: Compiladores. +* `ga`: Grupos y Anillos. +* `st`: Servicios Telemáticos. +* `ts`: Topología de Superficies. + Los apuntes están escritos con [LyX](https://www.lyx.org/). En cada directorio, el fichero `n.lyx` es el fichero principal con los apuntes de la asignatura. En distribuciones basadas en Debian, LyX y todo lo necesario de diff --git a/bd/n.lyx b/bd/n.lyx new file mode 100644 index 0000000..c4b1679 --- /dev/null +++ b/bd/n.lyx @@ -0,0 +1,166 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 10 +\spacing single +\use_hyperref false +\papersize a5paper +\use_geometry true +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 0.2cm +\topmargin 0.7cm +\rightmargin 0.2cm +\bottommargin 0.7cm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style swiss +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle empty +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +Bases de Datos +\end_layout + +\begin_layout Date +\begin_inset Note Note +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +def +\backslash +cryear{2020} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "../license.lyx" + +\end_inset + + +\end_layout + +\begin_layout Standard +Bibliografía: +\end_layout + +\begin_layout Itemize +Diapositivas de clase, Universidad de Murcia. +\end_layout + +\begin_layout Chapter +Introducción +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n1.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Modelo Entidad-Relación +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n2.lyx" + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/bd/n1.lyx b/bd/n1.lyx new file mode 100644 index 0000000..429da5f --- /dev/null +++ b/bd/n1.lyx @@ -0,0 +1,319 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Un +\series bold +dato +\series default + es un hecho conocido que puede registrarse. + Una +\series bold +base de datos +\series default + es un conjunto coherente de datos almacenados con significado inherente + sobre un +\series bold +dominio +\series default + o +\series bold +universo de discurso +\series default + del mundo real, diseñada, creada y cargada con datos para conseguir ciertos + objetivos para ciertos usuarios. +\end_layout + +\begin_layout Standard +Un +\series bold +modelo de datos +\series default + es una herramienta formal para comprender y representar el mundo real para + conseguir una visión abstracta de un dominio, mediante tipos de datos, + relaciones entre ellos y restricciones que deben cumplir, e incluye operaciones + básicas para especificar consultas y modificar tanto los datos como su + estructura. + Tipos de modelos: +\end_layout + +\begin_layout Enumerate + +\series bold +Conceptuales +\series default + o +\series bold +de alto nivel +\series default +: Describe la realidad como entidades que se relacionan entre sí. + +\series bold +Modelo entidad relación +\series default + ( +\series bold +MER +\series default + o +\series bold +ERM +\series default +, +\emph on +Entity-Relationship Model +\emph default +), modelos +\series bold +orientados a objetos +\series default + como +\series bold +UML +\series default + ( +\emph on +Unified Modeling Language +\emph default +). +\end_layout + +\begin_layout Enumerate + +\series bold +Lógicos +\series default + o +\series bold +de representación +\series default +: Los conceptos sean entendibles por usuarios finales, ocultando detalles + de implementación, pero estos son directamente implementables. + Son los más usados. + Distinguimos modelos lógicos +\series bold +basados en registros +\series default +, como el +\series bold +relacional +\series default +, de +\series bold +red +\series default + o +\series bold +jerárquico +\series default +, y +\series bold +orientados a objetos +\series default +, más próximos a los conceptuales. +\end_layout + +\begin_layout Enumerate + +\series bold +Físicos +\series default + o +\series bold +de bajo nivel +\series default +: Dirigidos a especialistas en informática, describen la estructura física, + incluyendo el formato y ordenamiento de los registros, los tamaños de página + y de bloque y los caminos o estructuras de acceso a datos, como ficheros + índice. +\end_layout + +\begin_layout Standard +Un +\series bold +sistema de gestión de bases de datos +\series default + (SGBD) es un software para definir el +\series bold +esquema +\series default + de una base de datos según un modelo; crear la base de datos en un almacenamien +to según el esquema; manipularla consultando, introduciendo, modificando + o eliminando datos para reflejar cambios en el dominio y generar informes + a partir de los datos, y controlar el acceso a la base de datos proporcionando + seguridad, integridad, control de concurrencia y recuperación tras fallos, + y ofreciendo un catálogo de +\series bold +metadatos +\series default +, descripciones de los datos. + +\end_layout + +\begin_layout Standard +Un +\series bold +sistema de bases de datos +\series default + consta de una base de datos, un sistema de gestión y software de aplicación + para usar la base de datos. + El +\series bold +estado +\series default + de una base de datos es el conjunto de datos, +\series bold +instancias +\series default + de los elementos del esquema, que contiene la base de datos en un instante + concreto. +\end_layout + +\begin_layout Standard +Un diagrama de un esquema en un modelo está compuesto de esquemas de tipos + de registro, y generalmente solo muestra algunos aspectos del esquema. + +\end_layout + +\begin_layout Standard +El diseño de una base de datos se hace para satisfacer los requisitos de + contenido de usuarios y aplicaciones, estructurando los datos de forma + natural, fácil de entender y flexible para poder modificar el esquema posterior +mente, y para soportar los requisitos de procesamiento y rendimiento. + Pasos: +\end_layout + +\begin_layout Enumerate +Recopilación de requisitos de usuario. +\end_layout + +\begin_layout Enumerate +Diseño conceptual: Análisis de los requisitos y +\series bold +conceptualización +\series default + o diseño del esquema conceptual, que describe los requisitos de forma independi +ente de usuarios, aplicaciones, SGBD específico o rendimiento. +\end_layout + +\begin_layout Enumerate +Elección del SGBD. +\end_layout + +\begin_layout Enumerate +Diseño lógico. +\end_layout + +\begin_layout Enumerate +Diseño físico: Obtención de un +\series bold +esquema interno +\series default + para conseguir una implementación lo más eficiente posible del esquema + lógico en el SGBD elegido. + Las decisiones en esta fase pueden afectar al esquema lógico, aunque esto + no es conveniente. +\end_layout + +\begin_layout Enumerate +Implementación. +\end_layout + +\begin_layout Standard +Para el diseño usamos herramientas o recursos como diagramas, grafos, teorías, + modelos, lenguajes de datos (como SQL), documentación, adquisición de requisito +s, diccionarios de datos, etc. + Un +\series bold +método +\series default + es un conjunto de herramientas para facilitar la representación de los + datos en cada fase del diseño y de reglas para pasar de una fase a la siguiente. +\end_layout + +\begin_layout Standard +El diseño de bases de datos, guiado por los datos, y el del software, guiado + por los procesos, deben hacerse de forma coordinada para que el modelo + de procesos y el esquema conceptual sean consistentes entre ellos y completos + (todo dato requerido por los procesos debe estar en el esquema y toda operación + requerida por la base de datos debe reflejarse en el modelo de procesos). +\end_layout + +\end_body +\end_document diff --git a/bd/n2.lyx b/bd/n2.lyx new file mode 100644 index 0000000..65f67ab --- /dev/null +++ b/bd/n2.lyx @@ -0,0 +1,594 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Es una familia de modelos propuesta por Peter P. + Chen en 1976 con extensiones y aportaciones de muchos otros autores, muy + extendida y soportada por herramientas +\series bold +CASE +\series default + ( +\emph on +Computer-Aided Software Engineering +\emph default +) de bases de datos. +\end_layout + +\begin_layout Section +Entidades +\end_layout + +\begin_layout Standard +Una +\series bold +entidad +\series default + ( +\emph on +entity +\emph default +) es aquello del mundo real con existencia propia distinguible del resto, + sea esta física o real, y abstracta o conceptual. + Un +\series bold +atributo +\series default + ( +\emph on +attribute +\emph default +) es una propiedad de una entidad, de forma que una entidad particular se + describe por los valores de sus atributos. +\end_layout + +\begin_layout Standard +Un +\series bold +tipo de entidad +\series default + ( +\emph on +entity set +\emph default +) es un conjunto de entidades con los mismos atributos, y describe el +\series bold +esquema +\series default + o +\series bold +intensión +\series default + para un conjunto de entidades, las +\series bold +instancias +\series default + del tipo, con la misma estructura. + Las instancias de un tipo de entidad se agrupan en un +\series bold +conjunto de entidades +\series default + o +\series bold +extensión +\series default +. + Representamos un tipo de entidad con un rectángulo que contiene el nombre + del tipo. +\end_layout + +\begin_layout Section +Atributos +\end_layout + +\begin_layout Standard +Un atributo se representa con una elipse que contiene su nombre, y se une + con una línea al tipo de entidad que lo tiene. + Su +\series bold +dominio +\series default + ( +\emph on +value set +\emph default +) es el conjunto de valores que puede adoptar. +\end_layout + +\begin_layout Standard +Un atributo es +\series bold +simple +\series default + si es indivisible o +\series bold +compuesto +\series default + si puede dividirse en otros con significado propio, lo que representamos + uniendo los subatributos con el atributo compuesto en vez de con el tipo + de entidad. + Es +\series bold +almacenado +\series default + si su valor procede del mundo real o +\series bold +derivado +\series default + si se calcula a partir de otra información ya existente, siendo por tanto + redundante, y en tal caso la elipse se dibuja punteada. +\end_layout + +\begin_layout Standard +Es +\series bold +monovalorado +\series default + o +\series bold +monovaluado +\series default + si solo admite un valor para cada instancia en cada momento, o +\series bold +multivalorado +\series default + o +\series bold +multivaluado +\series default + si puede tener más de un valor a la vez para la misma entidad, en cuyo + caso la elipse es doble. + +\end_layout + +\begin_layout Standard +Un atributo es +\series bold +opcional +\series default + si su valor puede ser +\series bold +nulo +\series default + ( +\emph on +null value +\emph default +), que indica que el valor existe pero no se conoce, no se sabe si existe + o no o la entidad concreta no tiene ningún valor aplicable para el atributo. + +\end_layout + +\begin_layout Standard +La +\series bold +cardinalidad +\series default + de un atributo es un par +\begin_inset Formula $(m,n)$ +\end_inset + + donde +\begin_inset Formula $0\leq m\leq n\leq+\infty$ +\end_inset + +, +\begin_inset Formula $m<+\infty$ +\end_inset + +, que indica que una instancia del padre puede tener un mínimo de +\begin_inset Formula $m$ +\end_inset + + y un máximo de +\begin_inset Formula $n$ +\end_inset + + (o no tener máximo si +\begin_inset Formula $n=+\infty$ +\end_inset + +) para el atributo. + Se indica añadiendo el par a la línea que conecta al atributo con el padre, + cambiando +\begin_inset Formula $+\infty$ +\end_inset + + por una letra, siendo los valores por defecto +\begin_inset Formula $(1,1)$ +\end_inset + + para atributos monovalorados o +\begin_inset Formula $(1,+\infty)$ +\end_inset + + para multivalorados. + +\end_layout + +\begin_layout Standard +Un atributo +\series bold +clave +\series default + o +\series bold +identificador +\series default + es uno con valor distinto para cada entidad, y se indica subrayando el + nombre. + Una +\series bold +clave compuesta +\series default + es un conjunto mínimo de atributos que, juntos, actúan como una clave, + y se indica añadiendo un punto en cada línea que une un elemento del conjunto + con su padre, uniendo estos puntos y haciendo esta unión el padre de un + nuevo atributo con nombre subrayado. + +\end_layout + +\begin_layout Standard +Si hay varias claves, las llamamos +\series bold +identificadores candidatos +\series default + (ICs) y, de entre ellas, elegimos uno como +\series bold +identificador principal +\series default + (IP), que indicamos añadiendo +\begin_inset Quotes cld +\end_inset + +IP +\begin_inset Quotes crd +\end_inset + + a la línea que lo une con el padre, y llamando al resto +\series bold +identificadores alternativos +\series default +. +\end_layout + +\begin_layout Section +Relaciones +\end_layout + +\begin_layout Standard +Un +\series bold +tipo de relación +\series default + es una estructura genérica o abstracción de un conjunto de +\series bold +relaciones +\series default + o +\series bold +interrelaciones +\series default + ( +\emph on +relationship +\emph default +), asociación entre varias entidades representadas por el tipo de relación + y una +\begin_inset Formula $n$ +\end_inset + +-upla de entidades con +\begin_inset Formula $n\geq2$ +\end_inset + +, donde las tuplas del mismo tipo tienen igual tamaño y cada posición de + estas tiene valores de un mismo tipo de entidad y cumple un mismo +\series bold +rol +\series default + o +\series bold +papel +\series default + en la relación. + +\end_layout + +\begin_layout Standard +Un tipo de relación se representa por un rombo que contiene el nombre del + tipo con una línea de unión al tipo de entidad por cada elemento de las + relaciones que contiene. + El rol se puede indicar en esta línea mediante su nombre o se puede inferir + del orden de lectura de arriba a abajo y de izquierda a derecha según dónde + se hayan conectado las líneas. + +\end_layout + +\begin_layout Standard +El +\series bold +grado +\series default + de un tipo de relación es el número de tipos de entidad que participan. + Una relación es +\series bold +binaria +\series default + si su tipo de relación es de grado 2, +\series bold +ternaria +\series default + si es de grado 3, +\series bold +cuaternaria +\series default + si es de grado 4, etc., y +\series bold +reflexiva +\series default + o +\series bold +recursiva +\series default + si es de grado 1. +\end_layout + +\begin_layout Standard +La +\series bold +cardinalidad +\series default + de una posición en un tipo de relación es el número de relaciones que puede + haber del tipo en que la posición de la tupla tiene un mismo elemento. + Se representa igual que la cardinalidad de atributos, en la línea que une + el tipo de relación con el tipo de entidad, y es obligatorio indicarla. +\end_layout + +\begin_layout Standard +Una puede tener atributos, pero no claves, y estos se representan poniendo + el tipo de relación como +\begin_inset Quotes cld +\end_inset + +padre +\begin_inset Quotes crd +\end_inset + + del atributo. +\end_layout + +\begin_layout Standard +Un tipo de entidad es +\series bold +fuerte +\series default + si tiene un atributo identificador o +\series bold +débil +\series default + si no lo tiene, en cuyo caso debe estar en una o varias relaciones de cardinali +dad +\begin_inset Formula $(1,1)$ +\end_inset + + con tipos de entidad fuerte y, si es necesario, incluir una +\series bold +clave parcial +\series default + o +\series bold +discriminante +\series default +, de forma que, dadas dos entidades distintas del tipo, o estas difieren + en la entidad fuerte con la que se relacionan para alguna relación, o difieren + en la clave parcial. + +\end_layout + +\begin_layout Standard +Las claves parciales pueden ser compuestas, puede haber varias y se representan + como los identificadores pero haciendo el subrayado punteado. + Para indicar que un tipo de entidad es débil, se rodea de un doble rectángulo + y se hacen dobles tanto las líneas que las unen con tipos de relación con + entidades fuertes que participan de la identificación como los rombos que + representan estos tipos de relación. +\end_layout + +\begin_layout Standard +A veces una herramienta de diseño solo permite relaciones entre dos entidades, + en cuyo caso podemos representar un tipo de relación entre más entidades + como un tipo de entidad débil con una relación binaria identificadora por + cada posición de las relaciones. +\end_layout + +\begin_layout Section +Tipos de relación excluyentes +\end_layout + +\begin_layout Standard +Dos o más tipos de relación son +\series bold +exclusivos +\series default + respecto a una posición de cada uno con un mismo tipo de entidad si cada + instancia de dicho tipo solo puede participar en uno de los tipos en dicha + posición. + Esto se representa con una curva que corta con todas las uniones entre + el tipo de entidad y los tipos de relación para dichas posiciones. +\end_layout + +\begin_layout Standard +Un tipo de entidad puede ser +\series bold +subtipo +\series default + de otro, creando una +\series bold +jerarquía +\series default + entre tipos de entidad que se puede formar +\series bold +especialización +\series default +, partiendo del tipo general y creando a los específicos, o por +\series bold +generalización +\series default +, partiendo de los específicos y creando el general. + El tipo de entidad general es el +\series bold +supertipo +\series default + de los específicos. +\end_layout + +\begin_layout Standard +En general los subtipos están definidos según una característica distintiva + o +\series bold +discriminante +\series default + de las entidades del supertipo. + Este se representa mediante un círculo sin nombre, que puede tener atributos + y que se une con una línea al supertipo y con una línea cortada por una + curva a cada subtipo. + Un subtipo puede tener atributos propios específicos y participar en relaciones +, y +\series bold +hereda +\series default + todos los atributos del supertipo y relaciones en las que participa. +\end_layout + +\begin_layout Standard +Para un cierto discriminante, los subtipos son +\series bold +solapados +\series default + ( +\emph on +overlapped +\emph default +) si una instancia del supertipo puede serlo de más de un subtipo, opción + por defecto que puede representarse si se quiere con una +\begin_inset Quotes cld +\end_inset + +o +\begin_inset Quotes crd +\end_inset + + dentro del círculo, o +\series bold +disjuntos +\series default + si una instancia del supertipo puede serlo de un solo subtipo como máximo, + lo que se representa con una +\begin_inset Quotes cld +\end_inset + +d +\begin_inset Quotes crd +\end_inset + + dentro del círculo. +\end_layout + +\begin_layout Standard +La especialización puede ser +\series bold +parcial +\series default + si puede haber instancias que no pertenecen a ninguno de los subtipos, + la opción por defecto, o +\series bold +total +\series default + o +\series bold +completa +\series default + si toda instancia del supertipo debe serlo también de uno de los subtipos, + lo que se representa haciendo doble la línea que une el supertipo con el + discriminante. +\end_layout + +\end_body +\end_document diff --git a/cc/n.lyx b/cc/n.lyx new file mode 100644 index 0000000..7ffc706 --- /dev/null +++ b/cc/n.lyx @@ -0,0 +1,171 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\begin_preamble +\usepackage{tikz} +\end_preamble +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 10 +\spacing single +\use_hyperref false +\papersize a5paper +\use_geometry true +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 0.2cm +\topmargin 0.7cm +\rightmargin 0.2cm +\bottommargin 0.7cm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style swiss +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle empty +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +Compiladores +\end_layout + +\begin_layout Date +\begin_inset Note Note +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +def +\backslash +cryear{2020} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "../license.lyx" + +\end_inset + + +\end_layout + +\begin_layout Standard +Bibliografía: +\end_layout + +\begin_layout Itemize +Apuntes de Compiladores, María Antonia Cárdenas Viedma, Eduardo Martínez + Graciá y María Antonia Martínez Carreras (2018), Grado en Ingeniería Informátic +a, Universidad de Murcia. +\end_layout + +\begin_layout Chapter +Traductores e intérpretes +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n1.lyx" + +\end_inset + + +\end_layout + +\begin_layout Chapter +Análisis léxico +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n2.lyx" + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/cc/n1.lyx b/cc/n1.lyx new file mode 100644 index 0000000..602e833 --- /dev/null +++ b/cc/n1.lyx @@ -0,0 +1,1200 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\begin_preamble +\usepackage{tikz} +\end_preamble +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +def +\backslash +program#1#2{-- ++(1.5,0) -- ++(0,1) arc(-90:90:0.5) -- ++(-1.5,0) arc(90:270:0.5) + -- ++(0,-1) ++(0.75,0.5) node{#2} ++(0,1) node{#1} ++(-0.75,-1.5)} +\end_layout + +\begin_layout Plain Layout + + +\backslash +def +\backslash +translator#1#2#3{-- ++(1.5,0) -- ++(0,1) -- ++(0.7,0) -- ++(0,1) -- ++(-2.9,0) + -- ++(0,-1) -- ++(0.7,0) -- ++(0,-1) ++(0,1.5) node{#1} ++(0.75,0) node{$ +\backslash +longrightarrow$} ++(0.75,0) node{#2} ++(-0.75,-1) node{#3} ++(-0.75,-0.5)} +\end_layout + +\begin_layout Plain Layout + + +\backslash +def +\backslash +machine#1{-- ++(0.75,-0.5) -- ++(0.75,0.5) -- ++(0,1) -- ++(-1.5,0) -- ++(0,-1) + ++(0.75,0.5) node{#1} ++(-0.75,-0.5)} +\end_layout + +\begin_layout Plain Layout + + +\backslash +def +\backslash +run#1{++(0,1) #1 ++(0,-1)} +\end_layout + +\begin_layout Plain Layout + + +\backslash +def +\backslash +source#1{++(-2.2,1) #1 ++(2.2,-1)} +\end_layout + +\begin_layout Plain Layout + + +\backslash +def +\backslash +object#1{++(2.2,1) #1 ++(-2.2,-1)} +\end_layout + +\begin_layout Plain Layout + + +\backslash +def +\backslash +interpreter#1#2{-- ++(1.5,0) -- ++(0,2) -- ++(-1.5,0) -- ++(0,-2) ++(0.75,0.5) + node{#2} ++(0,1) node{#1} ++(-0.75,-1.5)} +\end_layout + +\begin_layout Plain Layout + + +\backslash +def +\backslash +interpret#1{++(0,2) #1 ++(0,-2)} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Un +\series bold +lenguaje de programación +\series default + es una notación formal para expresar algoritmo. + Distinguimos lenguajes: +\end_layout + +\begin_layout Enumerate + +\series bold +De primera generación +\series default + o +\series bold +lenguajes máquina +\series default +, código binario entendible directamente por un procesador y dependiente + de la máquina. + Los programas son difíciles de leer, escribir, modificar y corregir, por + lo que el desarrollo es lento y propenso a fallos. + +\end_layout + +\begin_layout Enumerate + +\series bold +De segunda generación +\series default + o +\series bold +ensambladores +\series default +, creados al comienzo de los años 50, y que permiten usar abreviaturas mnemotécn +icas para representar las instrucciones de la máquina y códigos octales + o hexadecimales para valores. + También permiten crear macros, secuencias de instrucciones parametrizadas + para uso frecuente. +\end_layout + +\begin_layout Enumerate + +\series bold +De tercera generación +\series default + o +\series bold +de alto nivel +\series default +, que permiten usar estructuras de control basadas en objetos lógicos y + especificar los datos, funciones o procesos de forma independiente de la + máquina. + Fortran, Cobol, C, C++, Java. +\end_layout + +\begin_layout Enumerate + +\series bold +De cuarta generación +\series default +, para problemas específicos, como SQL para bases de datos o PostScript + para dar formato a texto. +\end_layout + +\begin_layout Enumerate + +\series bold +De quinta generación +\series default + o +\series bold +declarativos +\series default +, como Prolog o Haskell, con los que se especifica el cálculo que se quiere + realizar más que cómo debe realizarse. +\end_layout + +\begin_layout Section +Traductores +\end_layout + +\begin_layout Standard +Un +\series bold +traductor +\series default + es un programa que acepta textos en un lenguaje de programación +\series bold +fuente +\series default + ( +\series bold +programa fuente +\series default +) y genera otro semánticamente equivalente en un lenguaje de programación + +\series bold +destino +\series default + ( +\series bold +programa objeto +\series default +). + Tipos: +\end_layout + +\begin_layout Itemize + +\series bold +Preprocesador +\series default +: traductor de una forma extendida de un lenguaje de alto nivel a su forma + estándar. + Reúne el programa fuente, a menudo dividido en módulos en ficheros distintos. +\end_layout + +\begin_layout Itemize + +\series bold +Compilador +\series default +: de un lenguaje de alto nivel a otro de bajo nivel, informando también + de cualquier error detectado en el programa fuente. +\end_layout + +\begin_deeper +\begin_layout Itemize + +\series bold +Cruzado +\series default + ( +\emph on +cross-compiler +\emph default +): se ejecuta sobre una +\series bold +máquina huésped +\series default + pero genera código para una +\series bold +máquina destino +\series default + distinta. +\end_layout + +\begin_layout Itemize + +\series bold +\emph on +Just-in-time +\series default +\emph default + ( +\series bold +JIT +\series default +): Traduce código de una máquina abstracta a código de una máquina real + según se necesite durante la ejecución de dicho código. +\end_layout + +\begin_layout Itemize + +\series bold +Optimizador +\series default +: modifica el código intermedio o el código objeto para mejorar su eficiencia, + sin alterar la funcionalidad del programa original. +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Ensamblador +\series default +: de un lenguaje ensamblador a su correspondiente código máquina. +\end_layout + +\begin_layout Itemize + +\series bold +Traductor de alto nivel +\series default +: la fuente y el destino son lenguajes de alto nivel. +\end_layout + +\begin_layout Itemize + +\series bold +Desensamblador +\series default +: de un código máquina a su correspondiente lenguaje ensamblador. +\end_layout + +\begin_layout Itemize + +\series bold +Descompilador +\series default +: de un lenguaje de bajo nivel a otro de alto nivel. +\end_layout + +\begin_layout Standard +Un +\series bold +traductor de +\begin_inset Formula $n$ +\end_inset + + etapas +\series default + es el traductor resultante de componer +\begin_inset Formula $n$ +\end_inset + + traductores, manejando +\begin_inset Formula $n-1$ +\end_inset + + lenguajes intermedios. + Un traductor es +\series bold +de una pasada +\series default + si genera el código objeto realizando una única lectura del código fuente, + o +\series bold +de múltiples pasadas +\series default + si procesa varias veces el código fuente o alguna representación intermedia + de este. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{center} +\end_layout + +\begin_layout Plain Layout + + +\backslash +begin{tikzpicture} +\backslash +draw (0,0) +\backslash +program{$P$}{$L$}; +\backslash +end{tikzpicture} +\end_layout + +\begin_layout Plain Layout + + +\backslash +hfil +\end_layout + +\begin_layout Plain Layout + + +\backslash +begin{tikzpicture} +\backslash +draw (0,0) +\backslash +translator{$S$}{$D$}{$I$}; +\backslash +end{tikzpicture} +\end_layout + +\begin_layout Plain Layout + + +\backslash +hfil +\end_layout + +\begin_layout Plain Layout + + +\backslash +begin{tikzpicture} +\backslash +draw (0,0) +\backslash +machine{$M$}; +\backslash +end{tikzpicture} +\end_layout + +\begin_layout Plain Layout + + +\backslash +end{center} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "fig:diag" + +\end_inset + +De izquierda a derecha, diagrama de un programa común, de un traductor y + de una máquina. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Representamos programas, traductores (que también son programas) y máquinas + como se muestra en la figura +\begin_inset CommandInset ref +LatexCommand ref +reference "fig:diag" +plural "false" +caps "false" +noprefix "false" + +\end_inset + +, donde +\begin_inset Formula $P$ +\end_inset + + es el nombre del programa, +\begin_inset Formula $L$ +\end_inset + + es el lenguaje en que está representado, +\begin_inset Formula $S$ +\end_inset + + es el lenguaje fuente del traductor, +\begin_inset Formula $D$ +\end_inset + + es el lenguaje destino, +\begin_inset Formula $I$ +\end_inset + + es el +\series bold +lenguaje de implementación +\series default +, en el que está representado el traductor, y +\begin_inset Formula $M$ +\end_inset + + es el lenguaje máquina aceptado. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{center} +\backslash +begin{tikzpicture} +\end_layout + +\begin_layout Plain Layout + + +\backslash +draw (0,0) +\backslash +machine{$M$} +\backslash +run{ +\backslash +translator{$S$}{$D$}{$M$} +\backslash +source{ +\backslash +program{$P$}{$S$}} +\backslash +object{ +\backslash +program{$P$}{$D$}}}; +\end_layout + +\begin_layout Plain Layout + + +\backslash +end{tikzpicture} +\backslash +end{center} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "fig:trans" + +\end_inset + +Proceso de traducción. +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Para indicar que un programa se ejecuta sobre una cierta máquina, lo situamos + encima, y para indicar que un traductor traduce un programa de un lenguaje + fuente a uno destino, situamos el programa fuente, cuyo lenguaje es el + lenguaje fuente del traductor, a la izquierda del mismo, y el destino, + de mismo nombre pero lenguaje el de destino del traductor, a la derecha. + Así, un proceso traductor se representa como en la figura +\begin_inset CommandInset ref +LatexCommand ref +reference "fig:trans" +plural "false" +caps "false" +noprefix "false" + +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Newpage newpage +\end_inset + + +\end_layout + +\begin_layout Section +Compiladores +\end_layout + +\begin_layout Standard +Un compilador se divide en fases: +\end_layout + +\begin_layout Enumerate +Fase de +\series bold +análisis +\series default + o +\series bold +\emph on +front-end +\series default +\emph default +: Se determina la estructura y el significado de un código fuente creando + una representación intermedia. +\end_layout + +\begin_deeper +\begin_layout Enumerate + +\series bold +Análisis léxico +\series default +: Se transforma un flujo de caracteres en un flujo de +\series bold +\emph on +tokens +\series default +\emph default +, que son identificadores de variables o funciones, palabras clave, constantes, + operadores, etc. +\end_layout + +\begin_layout Enumerate + +\series bold +Análisis sintáctico +\series default +: Se crea un árbol sintáctico que refleja la estructura gramatical del programa. + Si se parte del axioma de la gramática y se va construyendo el árbol de + análisis hacia abajo por derivaciones por la izquierda, se habla de análisis + +\series bold +descendente +\series default +, y si se parte de la entrada y se va generando el árbol hacia arriba por + reducciones por la izquierda, se habla de análisis +\series bold +ascendente +\series default +. + Se usan autómatas con pila para reconocer una gramática libre de contexto + normalmente recursiva, si bien la mayoría de lenguajes de programación + son dependientes del contexto. +\end_layout + +\begin_layout Enumerate + +\series bold +Análisis semántico +\series default +: Se verifican construcciones sintácticas que no se pueden tratar con gramáticas + libres de contexto y se calculan valores semánticos para garantizar la + generación de código correcto, creando un +\series bold +árbol semántico +\series default +. + La semántica se especifica con métodos formales. +\end_layout + +\begin_layout Enumerate + +\series bold +Generación de código intermedio +\series default + en un lenguaje de bajo nivel, que debe ser fácil de producir y de traducir + a código objeto. +\end_layout + +\end_deeper +\begin_layout Enumerate + +\series bold +Optimización de código intermedio +\series default +, resultando en un código semánticamente equivalente pero con menor consumo + de memoria o tiempo de ejecución. + No se suele producir código óptimo, pues este es un problema NP-completo. + Como esta fase requiere tiempo, el compilador suele ofrecer la opción de + desactivarla para el desarrollo o la depuración de programas. +\end_layout + +\begin_layout Enumerate +Fase de +\series bold +síntesis +\series default + o +\series bold +\emph on +back-end +\series default +\emph default +: Convierte el código intermedio en un programa objeto semánticamente equivalent +e. +\end_layout + +\begin_deeper +\begin_layout Enumerate + +\series bold +Generación de código +\series default +: Traducción dirigida por la sintaxis, basada en la gramática del lenguaje + intermedio. +\end_layout + +\begin_layout Enumerate + +\series bold +Optimización +\series default + de código dependiente de la máquina. +\end_layout + +\end_deeper +\begin_layout Standard +En la práctica, algunas de estas fases se agrupan, sin construir los datos + intermedios de forma explícita. + +\end_layout + +\begin_layout Standard +Cuando el lenguaje de implementación y el lenguaje fuente del compilador + coinciden, el compilador puede compilarse a sí mismo, y hablamos de +\series bold +arranque +\series default + o +\emph on +bootstrapping +\emph default +. + El primer compilador capaz de compilarse a sí mismo fue credo para Lisp + por Hart y Levin en el MIT en 1962, y desde 1970 esto es habitual, aunque + Pascal y C son alternativas muy usadas. +\end_layout + +\begin_layout Standard +Cuando un programa se divide en varios ficheros fuentes, la compilación + de cada uno produce un fichero objeto con código reubicable. + El +\series bold +enlazador +\series default + une todos estos ficheros, así como el de las bibliotecas estáticas usadas, + y el +\series bold +cargador +\series default +, parte del sistema operativo, carga en memoria el ejecutable resultante + con las bibliotecas dinámicas usadas, uniéndolos, y salta al punto de entrada + del programa. +\end_layout + +\begin_layout Section +Jerarquía de lenguajes de Chomsky +\end_layout + +\begin_layout Itemize + +\series bold +Tipo 0 +\series default +, gramáticas +\series bold +sin restricciones +\series default + o +\series bold +con estructura de frase +\series default +, con reglas +\begin_inset Formula $\alpha X\beta\to\gamma$ +\end_inset + +, siendo +\begin_inset Formula $X$ +\end_inset + + cualquier símbolo, terminal o no. + Reconocidos por máquinas de Turing. +\end_layout + +\begin_layout Itemize + +\series bold +Tipo 1 +\series default +, gramáticas +\series bold +dependientes del contexto +\series default +, con reglas +\begin_inset Formula $\alpha A\beta\to\alpha\gamma\beta$ +\end_inset + +, siendo +\begin_inset Formula $A$ +\end_inset + + no terminal. + Reconocidos por autómatas linealmente acotados. +\end_layout + +\begin_layout Itemize + +\series bold +Tipo 2 +\series default +, gramáticas +\series bold +libres de contexto +\series default +, con reglas +\begin_inset Formula $A\to\alpha$ +\end_inset + + siendo +\begin_inset Formula $A$ +\end_inset + + no terminal. + Reconocidos por autómatas con pila. +\end_layout + +\begin_layout Itemize + +\series bold +Tipo 3 +\series default +, gramáticas +\series bold +regulares +\series default +, con reglas +\begin_inset Formula $A\to a$ +\end_inset + +, +\begin_inset Formula $A\to aB$ +\end_inset + + o +\begin_inset Formula $A\to\lambda$ +\end_inset + +, siendo +\begin_inset Formula $A$ +\end_inset + + y +\begin_inset Formula $B$ +\end_inset + + no terminales y +\begin_inset Formula $a$ +\end_inset + + terminal. + Reconocidos por autómatas finitos. +\end_layout + +\begin_layout Standard +Los lenguajes de un tipo también son de todos los tipos anteriores, aunque + muchos lenguajes no son de tipo 0. + La mayoría de lenguajes de programación son de tipo 1, aunque muchas de + sus reglas gramaticales pueden reducirse al tipo 2 y, para los símbolos + básicos del lenguaje, al tipo 3. +\end_layout + +\begin_layout Section +Intérpretes +\end_layout + +\begin_layout Standard +Un +\series bold +intérprete +\series default + es un programa que acepta un +\series bold +programa fuente +\series default + en un +\series bold +lenguaje fuente +\series default + y lo ejecuta inmediatamente, sin traducirlo a un código objeto. + Es un buen método cuando el programador está trabajando de forma interactiva; + el programa se va a utilizar pocas veces, con lo que el rendimiento no + es importante; se espera que cada instrucción se ejecuta una sola vez, + y las instrucciones tienen un formato simple. + +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{center} +\end_layout + +\begin_layout Plain Layout + + +\backslash +begin{tikzpicture} +\end_layout + +\begin_layout Plain Layout + + +\backslash +draw (0,0) +\backslash +interpreter{$S$}{$M$}; +\end_layout + +\begin_layout Plain Layout + + +\backslash +end{tikzpicture} +\end_layout + +\begin_layout Plain Layout + + +\backslash +hfil +\end_layout + +\begin_layout Plain Layout + + +\backslash +begin{tikzpicture} +\end_layout + +\begin_layout Plain Layout + + +\backslash +draw (0,0) +\backslash +machine{$M$} +\backslash +run{ +\backslash +interpreter{$S$}{$M$} +\backslash +interpret{ +\backslash +program{$P$}{$S$}}}; +\end_layout + +\begin_layout Plain Layout + + +\backslash +end{tikzpicture} +\end_layout + +\begin_layout Plain Layout + + +\backslash +end{center} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "fig:interpreter" + +\end_inset + +Intérprete (izquierda) e interpretación de un programa (derecha). +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Un intérprete muy usado es el intérprete de comandos de Unix, la +\emph on +shell +\emph default +. + Los intérpretes los representamos como en la figura +\begin_inset CommandInset ref +LatexCommand ref +reference "fig:interpreter" +plural "false" +caps "false" +noprefix "false" + +\end_inset + +, donde +\begin_inset Formula $S$ +\end_inset + + es el lenguaje fuente y +\begin_inset Formula $M$ +\end_inset + + es la máquina sobre la que se ejecuta el intérprete. +\end_layout + +\begin_layout Standard +La interpretación de un programa en un lenguaje de alto nivel es unas 100 + veces más lenta que la ejecución de un programa equivalente en código máquina, + por lo que esto no interesa cuando el programa se va a ejecutar en producción, + las instrucciones se van a ejecutar frecuentemente o las instrucciones + tienen formatos complicados. +\end_layout + +\begin_layout Standard +Un +\series bold +emulador +\series default + es un intérprete cuyo lenguaje fuente es de bajo nivel, útil para verificar + un diseño hardware. + Así, podemos ver una máquina como un intérprete implementado en hardware, + un intérprete como una máquina implementada en software y un código máquina + como un lenguaje para el que existe un intérprete hardware. + A veces llamamos +\series bold +máquinas abstractas +\series default + a los intérpretes para diferenciarlos de las máquinas reales. +\end_layout + +\begin_layout Standard +Un +\series bold +compilador interpretado +\series default + es un traductor de un lenguaje fuente a un lenguaje intermedio diseñado + para que la traducción sea rápida, el nivel de abstracción sea intermedio + entre el lenguaje fuente y el código maquina y las instrucciones tengan + un formato simple, facilitando su interpretación. + +\end_layout + +\begin_layout Standard +El código de la máquina virtual de Java ( +\series bold +JVM +\series default +) es un lenguaje de este tipo, pues proporciona instrucciones que corresponden + directamente a operaciones como creación de objetos, llamadas a métodos + e indexado de matrices, facilitando la traducción de Java a código intermedio, + pero las instrucciones tienen un formato sencillo como las instrucciones + máquina, con campos de operación y operandos, facilitando la interpretación. + El kit de desarrollo de Java ( +\series bold +JDK +\series default +) contiene un traductor de Java a código JVM, un intérprete de código JVM + y un compilador JIT que complementa al intérprete. +\end_layout + +\begin_layout Section +Portabilidad +\end_layout + +\begin_layout Standard +Un programa es +\series bold +portable +\series default + si puede ser compilado y ejecutado en cualquier máquina en el código fuente. + La +\series bold +portabilidad +\series default + de un programa es la porción de código que no haría falta cambiar cuando + el programa se mueve entre máquinas diferentes. +\end_layout + +\begin_layout Standard +Para el código ensamblador, la portabilidad es, en general, del +\begin_inset Formula $\unit[0]{\%}$ +\end_inset + +, mientras que para un lenguaje de alto nivel, es del +\begin_inset Formula $\unit[\text{95--100}]{\%}$ +\end_inset + +. + Los procesadores de lenguajes se escriben en lenguajes de alto nivel, aunque + los compiladores no pueden ser totalmente portables si queremos que compilen + al lenguaje de la implementación. +\end_layout + +\end_body +\end_document diff --git a/cc/n2.lyx b/cc/n2.lyx new file mode 100644 index 0000000..88c2801 --- /dev/null +++ b/cc/n2.lyx @@ -0,0 +1,1032 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\begin_preamble +\usepackage{tikz} +\end_preamble +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Un +\series bold +\emph on +token +\series default +\emph default + es un par formado por un +\series bold +nombre de +\emph on +token +\series default +\emph default +, que representa un tipo de unidad léxica, y un atributo opcional, cuyo + tipo depende del nombre de +\emph on +token +\emph default +. + Todo nombre de +\emph on +token +\emph default + lleva asociado un +\series bold +patrón +\series default +, un lenguaje regular que describe las secuencias de caracteres que deben + ser convertidas a un +\emph on +token +\emph default + con dicho nombre, llamadas +\series bold +lexemas +\series default +. + +\end_layout + +\begin_layout Standard +Un +\series bold +analizador léxico +\series default + es un programa que separa una secuencia de caracteres de entrada en lexemas + y genera una lista ordenada de +\emph on +tokens +\emph default +, informando de errores y pudiendo hacer otras tareas como ignorar comentarios + y caracteres de espaciado. + +\end_layout + +\begin_layout Standard +El analizador sintáctico usa los nombres de +\emph on +token +\emph default + como símbolos terminales de una gramática libre de contexto, pues aunque + esta gramática podría incluir la definición de los +\emph on +tokens +\emph default +, dividir el análisis en dos fases simplifica el diseño, y mejora la portabilida +d al no tener que preocuparse el analizador sintáctico de la codificación + de caracteres. + En general el analizador léxico está subordinado al sintáctico, ofreciéndole + una interfaz de llamadas. +\end_layout + +\begin_layout Section +Fundamentos teóricos +\end_layout + +\begin_layout Standard +Dado un alfabeto +\begin_inset Formula $V$ +\end_inset + +, los símbolos +\begin_inset Formula $\lambda$ +\end_inset + + y +\begin_inset Formula $\emptyset$ +\end_inset + + y los elementos de +\begin_inset Formula $V$ +\end_inset + + son +\series bold +expresiones regulares +\series default +; también lo son +\begin_inset Formula $(\alpha|\beta)$ +\end_inset + +, +\begin_inset Formula $(\alpha\circ\beta)$ +\end_inset + + y +\begin_inset Formula $(\alpha^{*})$ +\end_inset + + si +\begin_inset Formula $\alpha$ +\end_inset + + y +\begin_inset Formula $\beta$ +\end_inset + + son expresiones regulares, y solo son expresiones regulares las expresiones + que se obtienen aplicando estas reglas. + Se pueden omitir los paréntesis si no causa ambigüedad, entendiendo que + +\begin_inset Formula $*$ +\end_inset + + tiene más precedencia que +\begin_inset Formula $\circ$ +\end_inset + + y +\begin_inset Formula $\circ$ +\end_inset + + más que +\begin_inset Formula $|$ +\end_inset + + y que los tres operadores son asociativos por la izquierda, y se puede + escribir +\begin_inset Formula $\alpha\beta:=\alpha\circ\beta$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Toda expresión regular +\begin_inset Formula $\alpha$ +\end_inset + + lleva asociado un lenguaje +\begin_inset Formula $L(\alpha)$ +\end_inset + +, dado por +\begin_inset Formula $L(\emptyset):=\emptyset$ +\end_inset + +; +\begin_inset Formula $L(\lambda):=\{\lambda\}$ +\end_inset + +; si +\begin_inset Formula $a\in V$ +\end_inset + +, +\begin_inset Formula $L(a):=\{a\}$ +\end_inset + +, y si +\begin_inset Formula $\alpha$ +\end_inset + + y +\begin_inset Formula $\beta$ +\end_inset + + son expresiones regulares, +\begin_inset Formula $L(\alpha|\beta):=L(\alpha)\cup L(\beta)$ +\end_inset + +, +\begin_inset Formula $L(\alpha\beta):=L(\alpha)L(\beta)$ +\end_inset + + y +\begin_inset Formula $L(\alpha^{*}):=L(\alpha)^{*}$ +\end_inset + +. + Un lenguaje es +\series bold +regular +\series default + si es el lenguaje asociado alguna expresión regular. + Dos expresiones regulares son +\series bold +equivalentes +\series default +, +\begin_inset Formula $\alpha=\beta$ +\end_inset + +, si +\begin_inset Formula $L(\alpha)=L(\beta)$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Un +\series bold +AFD +\series default + es una tupla +\begin_inset Formula $(Q,V,\delta,q_{0},F)$ +\end_inset + + donde +\begin_inset Formula $Q$ +\end_inset + + es un conjunto finito de +\series bold +estados +\series default +, +\begin_inset Formula $V$ +\end_inset + + es un alfabeto, +\begin_inset Formula $q_{0}\in Q$ +\end_inset + + es el +\series bold +estado inicial +\series default +, +\begin_inset Formula $F\subseteq Q$ +\end_inset + + es el conjunto de +\series bold +estados finales +\series default + y +\begin_inset Formula $\delta:D\subseteq(Q\times V)\to Q$ +\end_inset + + es la +\series bold +función de transición +\series default +. +\end_layout + +\begin_layout Standard +Un +\series bold +AFND +\series default + es una tupla +\begin_inset Formula $(Q,V,\delta,q_{0},F)$ +\end_inset + +, definida como un AFD salvo que +\begin_inset Formula $\delta:Q\times(V\dot{\cup}\{\lambda\})\to{\cal P}(Q)$ +\end_inset + +. +\end_layout + +\begin_layout Section +Diseño +\end_layout + +\begin_layout Standard +Para diseñar un analizador léxico usamos +\emph on +Flex +\emph default +, una herramienta multiplataforma que genera código en C basándose en un + fichero de especificación de expresiones regulares, sucesora de +\emph on +Lex +\emph default + para Unix. + Los ficheros de especificación suelen tener extensión +\family typewriter +.l +\family default + y constan de 3 partes separadas por una línea +\family typewriter +%% +\family default +: +\end_layout + +\begin_layout Enumerate +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + + +\series bold +Definiciones +\series default +: Macros para expresiones regulares auxiliares con formato +\family typewriter +\emph on +nombre expresión +\family default +\emph default + en una línea. + Código C, entre una línea +\family typewriter +%{ +\family default + y una +\family typewriter +}% +\family default +. + Opciones con +\family typewriter +%option +\emph on +opción +\family default +\emph default +. + Condiciones de contexto, tablas, etc. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Enumerate + +\series bold +Reglas +\series default +: Con forma +\family typewriter +\emph on +expresión código +\family default +\emph default +, donde +\family typewriter +\emph on +expresión +\family default +\emph default + es una expresión regular que puede incluir macros con formato +\family typewriter +{ +\emph on +nombre +\emph default +} +\family default + y +\family typewriter +\emph on +código +\family default +\emph default + es una línea de C o un bloque código entre llaves que se ejecuta cuando + se reconoce un lexema asociado a la expresión regular. + Si en el código hay una sentencia +\family typewriter +return +\family default +, esta sale del analizador léxico devolviendo el entero indicado, normalmente + el código de +\emph on +token +\emph default +. + De lo contrario sigue leyendo, por lo que es habitual usar reglas para + espacios y comentarios con la sentencia vacía ( +\family typewriter +; +\family default +). +\end_layout + +\begin_layout Enumerate + +\series bold +Subrutinas de usuario +\series default +: Código C auxiliar que se añade al final del fichero generado. +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{sloppypar} +\end_layout + +\end_inset + +La orden +\family typewriter +flex [-o +\emph on +SALIDA +\emph default +] +\emph on +FICHERO +\family default +\emph default + genera un analizador léxico +\family typewriter +\emph on +SALIDA +\family default +\emph default + (por defecto, +\family typewriter +lex.yy.c +\family default +) desde la especificación +\family typewriter +\emph on +FICHERO +\family default +\emph default +. + Este debe enlazarse a la biblioteca +\family typewriter +fl +\family default +, por ejemplo mediante la opción +\family typewriter +-lfl +\family default + de +\family typewriter +gcc +\family default +. +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +end{sloppypar} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +Identificar los +\emph on +tokens +\emph default + y definir los patrones +\end_layout + +\begin_layout Standard +Se suelen considerar +\emph on +tokens +\emph default +: +\end_layout + +\begin_layout Itemize +Los identificadores. +\end_layout + +\begin_layout Itemize +Las +\series bold +palabras clave +\series default +, que pueden estar +\series bold +reservadas +\series default +, en cuyo caso el usuario no puede modificar su significado y el analizador + léxico puede reconocerlas directamente, o no estarlo, en cuyo caso el analizado +r léxico debe reconocerlas como identificadores para que una fase posterior + las distinga. +\end_layout + +\begin_layout Itemize +Los operadores y signos de puntuación. +\end_layout + +\begin_layout Itemize +Las constantes simples, como reales, enteros, caracteres o cadenas de caracteres. +\end_layout + +\begin_layout Itemize +Los espacios en blanco y comentarios, aunque en general en analizador léxico + los ignora y no los devuelve. +\end_layout + +\begin_layout Standard +Las expresiones regulares en +\emph on +Flex +\emph default + se forman combinando símbolos y operadores. + Los operadores son, en orden de prioridad: +\end_layout + +\begin_layout Enumerate + +\family typewriter +? +\family default +, +\family typewriter +* +\family default + y +\family typewriter ++ +\family default +, respectivamente, de 0–1, 0 o más y 1 o más repeticiones de lo anterior. + +\end_layout + +\begin_layout Enumerate +Concatenación de símbolos. +\end_layout + +\begin_layout Enumerate + +\family typewriter +{ +\family default +... +\family typewriter +} +\family default +, de repetición. +\end_layout + +\begin_layout Enumerate + +\family typewriter +^ +\family default +, de comienzo de línea, y +\family typewriter +$ +\family default +, de final. +\end_layout + +\begin_layout Enumerate + +\family typewriter +| +\family default + de disyunción entre los elementos a izquierda y derecha. +\end_layout + +\begin_layout Enumerate + +\family typewriter +/ +\family default +, para reconocer la expresión regular de la izquierda solo si va seguida + de la de la derecha ( +\emph on +look-ahead +\emph default +). +\end_layout + +\begin_layout Standard +También se puede agrupar con paréntesis +\family typewriter +( +\family default +... +\family typewriter +) +\family default +, preceder un símbolo de +\family typewriter + +\backslash + +\family default + para evitar que se trate como un operador o indicar una cadena de caracteres + literal con +\family typewriter +" +\family default +... +\family typewriter +" +\family default +. + Otros operadores: +\end_layout + +\begin_layout Enumerate + +\family typewriter +[ +\family default +... +\family typewriter +] +\family default + indica disyunción entre los caracteres del conjunto indicado. + +\family typewriter +\emph on +a +\emph default +- +\emph on +b +\family default +\emph default + indica todos los caracteres entre +\family typewriter +\emph on +a +\family default +\emph default + y +\family typewriter +\emph on +b +\family default +\emph default +, inclusive; +\family typewriter +^ +\family default + al principio complementa el conjunto; +\family typewriter + +\backslash + +\family default + indica caracteres de escape; +\family typewriter +[: +\family default +... +\family typewriter +:] +\family default + indica una clase de caracteres como +\family typewriter +[:digit:] +\family default + o +\family typewriter +[:alnum:] +\family default +, y cualquier otro caracter dentro de los corchetes se indica a sí mismo. +\end_layout + +\begin_layout Enumerate + +\family typewriter +. + +\family default + indica cualquier caracter salvo salto de línea. +\end_layout + +\begin_layout Enumerate + +\family typewriter +<> +\family default + indica final de fichero. +\end_layout + +\begin_layout Standard +Llamamos +\series bold +caracteres de anticipación +\series default + a los que se leen al hacer +\emph on +look-ahead +\emph default + para determinar el final de un +\emph on +token +\emph default +, lo que hace falta cuando hay reglas que acaban en +\family typewriter ++ +\family default +, +\family typewriter +* +\family default +, +\family typewriter +? +\family default +, +\family typewriter +$ +\family default + y +\family typewriter +/ +\family default +, y cuando un lexema de una expresión regular puede ser prefijo de uno de + otra. + +\emph on +Flex +\emph default + maneja esto de forma automática, devolviendo a la entrada los caracteres + no usados ( +\emph on +push back +\emph default +). + +\end_layout + +\begin_layout Standard +En caso de ambigüedad en las reglas, +\emph on +Flex +\emph default + reconoce el lexema más largo posible que pueda estar asociado a una expresión + regular, y si este puede corresponder a varias, se asocia a la que aparezca + antes. + Así, las palabras reservadas deben estar antes que la expresión regular + que reconoce los identificadores. +\end_layout + +\begin_layout Subsection +Construcción e implementación del autómata +\end_layout + +\begin_layout Standard +Se podría obtener un AFD correspondiente a las expresiones regulares directament +e, pero esto es difícil, por lo que se obtiene un AFND y, como su simulación + es costosa, se construye entonces un AFD equivalente y se minimiza. + Podemos simular directamente la tabla de transiciones con los estados o + simular el diagrama de transiciones mediante código específico. + De esto se encarga +\emph on +Flex +\emph default +. +\end_layout + +\begin_layout Subsection +Diseño de la interfaz de entrada y salida +\end_layout + +\begin_layout Standard +Para la entrada, es muy ineficiente leer el código de caracter a caracter, + por lo que se lee en bloques que se guardan en +\emph on +buffers +\emph default +, que deben diseñarse permitiendo secuencias largas de caracteres de anticipació +n. + La salida suele ser una o varias funciones que el analizador sintáctico + llama para obtener el siguiente +\emph on +token +\emph default +. + +\emph on +Flex +\emph default + proporciona la siguiente interfaz: +\end_layout + +\begin_layout Description + +\family typewriter +yytext +\family default + Último lexema leído. +\end_layout + +\begin_layout Description + +\family typewriter +yyleng +\family default + Longitud de +\family typewriter +yytext +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +yylineno +\family default + Activando la opción +\family typewriter +yylineno +\family default +, número de línea actual. +\end_layout + +\begin_layout Description + +\family typewriter +yymore() +\family default + Indica que, la próxima vez que se lea un lexema, este se debería concatenar + al de +\family typewriter +yytext +\family default + en vez de reemplazarlo. +\end_layout + +\begin_layout Description + +\family typewriter +yyless(int) +\family default + Retrasa el puntero de lectura para que apunte al caracter de +\family typewriter +yytext +\family default + con el índice dado. +\end_layout + +\begin_layout Description + +\family typewriter +yywrap() +\family default + Se ejecuta al alcanzarse el final del fichero. +\end_layout + +\begin_layout Description + +\family typewriter +yyin +\family default + Descriptor de fichero de donde se lee. +\end_layout + +\begin_layout Description + +\family typewriter +yyout +\family default + Descriptor de fichero al que se escribe al usar la opción +\family typewriter +echo +\family default +. +\end_layout + +\begin_layout Description + +\family typewriter +input() +\family default + Lee el siguiente caracter del flujo de entrada. +\end_layout + +\begin_layout Description + +\family typewriter +output(char) +\family default + Escribe el caracter dado en la salida. +\end_layout + +\begin_layout Description + +\family typewriter +unput(char) +\family default + Coloca el caracter dado en el flujo de entrada, para que sea el primero + leído en la próxima ocasión. +\end_layout + +\begin_layout Subsection +Manejo de errores +\end_layout + +\begin_layout Standard +Una forma sencilla es la +\series bold +recuperación en modo pánico +\series default +: ignorar caracteres hasta encontrar un caracter válido para un nuevo +\emph on +token +\emph default +. + Para implementarlo es necesaria una expresión regular capaz de reconocer + un conjunto de caracteres erróneos antes del comienzo de un nuevo lexema. + Otras técnicas permiten borrar un caracter extraño, insertar uno que falta, + reemplazar un caracter incorrecto por otro correcto o intercambiar caracteres + adyacentes. +\end_layout + +\end_body +\end_document diff --git a/st/n.lyx b/st/n.lyx new file mode 100644 index 0000000..ee38f3d --- /dev/null +++ b/st/n.lyx @@ -0,0 +1,152 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 10 +\spacing single +\use_hyperref false +\papersize a5paper +\use_geometry true +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 0.2cm +\topmargin 0.7cm +\rightmargin 0.2cm +\bottommargin 0.7cm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style swiss +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle empty +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +Servicios Telemáticos +\end_layout + +\begin_layout Date +\begin_inset Note Note +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +def +\backslash +cryear{2020} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "../license.lyx" + +\end_inset + + +\end_layout + +\begin_layout Standard +Bibliografía: +\end_layout + +\begin_layout Itemize +Diapositivas de clase, Universidad de Murcia. +\end_layout + +\begin_layout Chapter +Introducción +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n1.lyx" + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/st/n1.lyx b/st/n1.lyx new file mode 100644 index 0000000..e34cfb4 --- /dev/null +++ b/st/n1.lyx @@ -0,0 +1,280 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Internet es una red de redes formada por ISPs que, mediante enlaces de comunicac +ión (fibra, cobre, ondas de radio, etc.) con un cierto ancho de banda y dispositi +vos de conmutación como +\emph on +routers +\emph default + y +\emph on +switches +\emph default + que reenvían paquetes (bloques de datos), interconectan +\emph on +hosts +\emph default + o dispositivos anfitriones que ejecutan aplicaciones de red en el extremo + de la red a través de accesos residenciales, institucionales (centros educativo +s, empresas, etc.) o móviles, e interconectan sus distintas zonas entre sí + y con el resto de ISPs en el núcleo de la red, una malla ( +\emph on +mesh +\emph default +) de +\emph on +routers +\emph default + interconectados que enrutan paquetes de uno al siguiente entre la fuente + y el destino ( +\emph on +forwarding +\emph default +) usando algoritmos de encaminamiento para determinar el siguiente salto + ( +\emph on +routing +\emph default +). + Se puede ver como una infraestructura que ofrece servicios a aplicaciones, + como las de acceso a la web, voz sobre IP, correo electrónico, juegos multiusua +rio, comercio electrónico, redes sociales, chat, compartición de ficheros, + +\emph on +streaming +\emph default + de vídeo, motores de búsqueda, etc., para conectarse entre sí mediante una + interfaz. +\end_layout + +\begin_layout Standard +Internet es muy complejo y ha evolucionado según temas económicos y políticas + nacionales. + Conectar cada ISP con cada uno de los demás no escala, y conectarlos todos + a uno global tampoco, y además habrá competidores que se deben interconectar. + El resultado es que los proveedores se interconectan mediante +\emph on +internet exchange points +\emph default + y +\emph on +peering links +\emph default +, con conexiones entre redes regionales cercanas, con redes de proveedores + de contenido ( +\emph on +content provider networks +\emph default +) que conectan centros de datos para ofrecer servicios y contenidos cerca + del usuario final, e ISPs comerciales +\emph on +tier-I +\emph default + (Level 3, Sprint, AT&T, NTT, etc.) con cobertura nacional e internacional. + +\end_layout + +\begin_layout Standard +Otra alternativa sería la conmutación de circuitos, usada en la red telefónica, + en que se dedican recursos de extremo a extremo para una llamada entre + la fuente y el destino. + Esto da un rendimiento garantizado y evita los retardos en los paquetes + y las pérdidas debidas a la posibilidad de congestión, pero es más complejo + y evita la compartición de recursos. + El suministro de un ancho de banda garantizado para aplicaciones de audio + y vídeo en conmutación de paquetes está sin resolver. +\end_layout + +\begin_layout Standard +La comunicación se hace siguiendo protocolos para el envío y recepción de + mensajes, bien abiertos, muchos recogidos en +\series bold +RFCs +\series default + ( +\emph on +Requests for Comments +\emph default +) de la +\series bold +IETF +\series default + ( +\emph on +Internet Engineering Task Force +\emph default +), o privativos, y divididos en niveles: +\end_layout + +\begin_layout Enumerate +Aplicación: Aplicaciones de red. + FTP, SMTP, HTTP. + Los protocolos definen los tipos de mensajes intercambiados, su sintaxis + (qué campos hay y cómo se delimitan), su semántica y las reglas de cuándo + y cómo los procesos envían y reciben mensajes. + Tipos: +\end_layout + +\begin_deeper +\begin_layout Enumerate + +\series bold +Cliente-servidor +\series default +: Los clientes, que pueden estar intermitentemente conectados y tener una + IP dinámica, solo se comunican con el servidor, siempre activo y en línea + con IP fija y muchas veces en un centro de datos por escalabilidad. +\end_layout + +\begin_layout Enumerate + +\series bold +P2P +\series default +: No hay un servidor siempre en línea, sino que los sistemas finales se + comunican directamente, solicitando y ofreciendo servicios a otros equipos. + Esto es escalable, pues nuevos equipos añaden demanda pero también capacidad, + pero su gestión es compleja porque los equipos están intermitentemente + conectados y cambian de IP. +\end_layout + +\end_deeper +\begin_layout Enumerate +Transporte: Transferencia de datos entre procesos de distintos +\emph on +hosts +\emph default +. + TCP y UDP. +\end_layout + +\begin_deeper +\begin_layout Standard +Dos procesos en un mismo +\emph on +host +\emph default + se comunican por el sistema operativo. + Hay procesos clientes, que inician una comunicación, y servidores, que + esperan a ser conectados, y las aplicaciones P2P tienen de ambos tipos. + Los procesos envían y reciben mensajes por un +\emph on +socket +\emph default +, para lo cual llevan asociados un identificador, formado por la dirección + IP del +\emph on +host +\emph default + y números de puerto asociados con el proceso en el +\emph on +host +\emph default +. + Por ejemplo, los servidores HTTP usan en general el puerto 80, y los SMTP, + el 25. +\end_layout + +\end_deeper +\begin_layout Enumerate +Red: Enrutamiento de paquetes de la fuente al destino. + IP, protocolos de enrutamiento. +\end_layout + +\begin_layout Enumerate +Enlace: Transferencia de datos entre elementos de red vecinos. + Ethernet, 802.11 (WiFi), PPP. +\end_layout + +\begin_layout Enumerate +Físico: Bits en el cable. +\end_layout + +\begin_layout Standard +Internet se diseño pensando en usuarios que confiaban los unos con los otros, + pero hoy en día en necesaria seguridad para proteger las comunicaciones. + TCP y UDP no ofrecen cifrado, sino que este se hace a nivel de aplicación, + como con SSL, que ofrece cifrado, integridad de los datos y autenticación + de los extremos sobre TCP. +\end_layout + +\end_body +\end_document diff --git a/ts/n.lyx b/ts/n.lyx new file mode 100644 index 0000000..5c56ecf --- /dev/null +++ b/ts/n.lyx @@ -0,0 +1,168 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 10 +\spacing single +\use_hyperref false +\papersize a5paper +\use_geometry true +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 0.2cm +\topmargin 0.7cm +\rightmargin 0.2cm +\bottommargin 0.7cm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style swiss +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle empty +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +Topología de superficies +\end_layout + +\begin_layout Date +\begin_inset Note Note +status open + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +def +\backslash +cryear{2020} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "../license.lyx" + +\end_inset + + +\end_layout + +\begin_layout Standard +Bibliografía: +\end_layout + +\begin_layout Itemize +Diapositivas de clase, Pascual Lucas (2019–20), Departamento de Matemáticas, + Universidad de Murcia. +\end_layout + +\begin_layout Itemize +Modelling CPV, Ian Richard Cole (2015), +\begin_inset Flex URL +status collapsed + +\begin_layout Plain Layout + +https://repository.lboro.ac.uk/articles/Modelling_CPV/9523520 +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout Chapter +Espacios topológicos +\end_layout + +\begin_layout Standard +\begin_inset CommandInset include +LatexCommand input +filename "n1.lyx" + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/ts/n1.lyx b/ts/n1.lyx new file mode 100644 index 0000000..910f51e --- /dev/null +++ b/ts/n1.lyx @@ -0,0 +1,2358 @@ +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 +\begin_document +\begin_header +\save_transient_properties true +\origin unavailable +\textclass book +\use_default_options true +\maintain_unincluded_children false +\language spanish +\language_package default +\inputencoding auto +\fontencoding global +\font_roman "default" "default" +\font_sans "default" "default" +\font_typewriter "default" "default" +\font_math "auto" "auto" +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 100 +\font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_package amsmath 1 +\use_package amssymb 1 +\use_package cancel 1 +\use_package esint 1 +\use_package mathdots 1 +\use_package mathtools 1 +\use_package mhchem 1 +\use_package stackrel 1 +\use_package stmaryrd 1 +\use_package undertilde 1 +\cite_engine basic +\cite_engine_type default +\biblio_style plain +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\justification true +\use_refstyle 1 +\use_minted 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\is_math_indent 0 +\math_numbering_side default +\quotes_style french +\dynamic_quotes 0 +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +Dado un conjunto +\begin_inset Formula $X$ +\end_inset + +, +\begin_inset Formula ${\cal T}\subseteq{\cal P}(X)$ +\end_inset + + es una +\series bold +topología +\series default + si +\begin_inset Formula $\emptyset,X\in{\cal T}$ +\end_inset + +, +\begin_inset Formula $\forall{\cal A}\subseteq{\cal T},\bigcup{\cal A}\in{\cal T}$ +\end_inset + + y +\begin_inset Formula $\forall A_{1},\dots,A_{n}\in{\cal T},\bigcap\{A_{1},\dots,A_{n}\}\in{\cal T}$ +\end_inset + +. + Entonces llamamos +\series bold +espacio topológico +\series default + al par +\begin_inset Formula $(X,{\cal T})$ +\end_inset + +, ( +\series bold +conjuntos +\series default +) +\series bold +abiertos +\series default + a los elementos de +\begin_inset Formula ${\cal T}$ +\end_inset + + y ( +\series bold +conjuntos +\series default +) +\series bold +cerrados +\series default + a sus complementarios. + Así, +\begin_inset Formula $\emptyset$ +\end_inset + + y +\begin_inset Formula $X$ +\end_inset + + son cerrados, la intersección arbitraria de cerrados es un cerrado y la + unión finita de cerrados es un cerrado. +\end_layout + +\begin_layout Standard +Dado +\begin_inset Formula $X\neq\emptyset$ +\end_inset + +, llamamos +\series bold +topología trivial +\series default + o +\series bold +indiscreta +\series default + a +\begin_inset Formula ${\cal T}_{\text{ind}}:=\{\emptyset,X\}$ +\end_inset + + y +\series bold +topología discreta +\series default + a +\begin_inset Formula ${\cal T}_{\text{dis}}:={\cal P}(X)$ +\end_inset + +. + Llamamos +\series bold +espacio indiscreto +\series default + a +\begin_inset Formula $(X,{\cal T}_{\text{ind}})$ +\end_inset + + y +\series bold +espacio discreto +\series default + a +\begin_inset Formula $(X,{\cal T}_{\text{dis}})$ +\end_inset + +. +\end_layout + +\begin_layout Section +Interior y clausura +\end_layout + +\begin_layout Standard +Sean +\begin_inset Formula $(X,{\cal T})$ +\end_inset + + un espacio topológico y +\begin_inset Formula $S\subseteq X$ +\end_inset + +, llamamos +\series bold +interior +\series default + de +\begin_inset Formula $S$ +\end_inset + +, +\begin_inset Formula $\text{int}S$ +\end_inset + + o +\begin_inset Formula $\mathring{S}$ +\end_inset + + al mayor abierto contenido en +\begin_inset Formula $S$ +\end_inset + +, que es la unión de todos ellos, y +\series bold +clausura +\series default + de +\begin_inset Formula $S$ +\end_inset + +, +\begin_inset Formula $\text{cl}S$ +\end_inset + + o +\begin_inset Formula $\overline{S}$ +\end_inset + + al menor cerrado que lo contiene, que es la intersección de todos ellos. + Así, +\begin_inset Formula $\mathring{S}\subseteq S\subseteq\overline{S}$ +\end_inset + +, y +\begin_inset Formula $S$ +\end_inset + + es abierto si y sólo si +\begin_inset Formula $S=\mathring{S}$ +\end_inset + + y cerrado si y sólo si +\begin_inset Formula $S=\overline{S}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Un +\series bold +entorno +\series default + de +\begin_inset Formula $x\in X$ +\end_inset + + es un elemento de +\begin_inset Formula ${\cal E}(x):=\{U\in{\cal T}:x\in{\cal U}\}$ +\end_inset + +. + Entonces +\begin_inset Formula $x\in\mathring{S}$ +\end_inset + + si y sólo si existe un entorno de +\begin_inset Formula $x$ +\end_inset + + contenido en +\begin_inset Formula $S$ +\end_inset + +, y +\begin_inset Formula $x\in\overline{S}$ +\end_inset + + si y sólo si todo entorno de +\begin_inset Formula $x$ +\end_inset + + interseca con +\begin_inset Formula $S$ +\end_inset + +. +\end_layout + +\begin_layout Section +Espacios métricos +\end_layout + +\begin_layout Standard +Una +\series bold +distancia +\series default + en un conjunto +\begin_inset Formula $X$ +\end_inset + + es una función +\begin_inset Formula $d:X\times X\to\mathbb{R}$ +\end_inset + + tal que para cada +\begin_inset Formula $x,y,z\in X$ +\end_inset + +, +\begin_inset Formula $0\leq d(x,y)=d(y,x)\leq d(x,z)+d(z,y)$ +\end_inset + +. + Decimos entonces que +\begin_inset Formula $(X,d)$ +\end_inset + + es un +\series bold +espacio métrico +\series default +. + +\end_layout + +\begin_layout Standard +En +\begin_inset Formula $\mathbb{R}$ +\end_inset + + tenemos la distancia usual +\begin_inset Formula $d_{u}(x,y):=|x-y|$ +\end_inset + +. + Dado un espacio métrico en +\begin_inset Formula $(X,d)$ +\end_inset + +, definimos en +\begin_inset Formula $X^{n}$ +\end_inset + + la distancia +\begin_inset Formula +\[ +d_{p}(x,y):=\left(\sum_{k=1}^{n}d(x_{k},y_{k})^{p}\right)^{\frac{1}{p}} +\] + +\end_inset + + para +\begin_inset Formula $p\in\mathbb{N}^{*}$ +\end_inset + +, y +\begin_inset Formula $d_{\infty}(x,y):=\max_{k=1}^{n}d(x_{k},y_{k})$ +\end_inset + +. + Llamamos +\series bold +distancia Manhattan +\series default + o +\series bold +del taxi +\series default + a +\begin_inset Formula $d_{1}$ +\end_inset + +, +\series bold +distancia euclídea +\series default + a +\begin_inset Formula $d_{2}$ +\end_inset + + y +\series bold +distancia del ajedrez +\series default + a +\begin_inset Formula $d_{\infty}$ +\end_inset + +. + Además, en un conjunto +\begin_inset Formula $X$ +\end_inset + + definimos la +\series bold +distancia discreta +\series default + como +\begin_inset Formula +\[ +d_{D}(x,y):=\left\{ \begin{aligned}1 & \text{si }x\neq y,\\ +0 & \text{si }x=y. +\end{aligned} +\right. +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Sean +\begin_inset Formula $(X,d)$ +\end_inset + + un espacio métrico, +\begin_inset Formula $x\in X$ +\end_inset + + y +\begin_inset Formula $\delta>0$ +\end_inset + +, llamamos +\series bold +bola +\series default + ( +\series bold +abierta +\series default +) en la distancia +\begin_inset Formula $d$ +\end_inset + + de centro +\begin_inset Formula $x$ +\end_inset + + y radio +\begin_inset Formula $\delta$ +\end_inset + + a +\begin_inset Formula +\[ +B_{d}(x,\delta):=\{y\in X:d(x,y)<\varepsilon\}. +\] + +\end_inset + +Llamamos +\series bold +topología +\series default + ( +\series bold +métrica +\series default +) +\series bold +inducida +\series default + por +\begin_inset Formula $d$ +\end_inset + + en +\begin_inset Formula $X$ +\end_inset + + a la topología +\begin_inset Formula ${\cal T}_{d}:=\{A\in X:\forall x\in A,\exists\delta>0:B_{d}(x,\delta)\subseteq A\}$ +\end_inset + +. + Las bolas son abiertas en la topología inducida, por lo que en esta los + abiertos son uniones de bolas. +\end_layout + +\begin_layout Standard +La distancia discreta induce la topología discreta, y las distancias del + taxi, euclídea y del ajedrez sobre +\begin_inset Formula $\mathbb{R}^{n}$ +\end_inset + + con la distancia usual en +\begin_inset Formula $\mathbb{R}$ +\end_inset + + inducen una misma topología que llamamos +\series bold +topología usual +\series default + en +\begin_inset Formula $\mathbb{R}^{n}$ +\end_inset + + ( +\begin_inset Formula $n\geq1$ +\end_inset + +). + En +\begin_inset Formula $\mathbb{R}$ +\end_inset + +, los abiertos de esta topología son las uniones de intervalos abiertos. +\end_layout + +\begin_layout Section +Subespacios topológicos +\end_layout + +\begin_layout Standard +Dados un espacio topológico +\begin_inset Formula $(X,{\cal T})$ +\end_inset + + e +\begin_inset Formula $Y\subseteq X$ +\end_inset + +, +\begin_inset Formula ${\cal T}_{Y}:=\{U\cap Y\}_{U\in{\cal T}}$ +\end_inset + + es una topología sobre +\begin_inset Formula $Y$ +\end_inset + +, la +\series bold +topología del subespacio +\series default + o +\series bold +inducida +\series default + sobre +\begin_inset Formula $Y$ +\end_inset + +. + Algunos subespacios topológicos importantes: +\end_layout + +\begin_layout Enumerate +\begin_inset Formula $\mathbb{Z}\subseteq\mathbb{R}$ +\end_inset + +. + En este caso, la topología inducida por la usual es la discreta. +\end_layout + +\begin_layout Enumerate +La +\series bold + +\begin_inset Formula $n$ +\end_inset + +-esfera +\series default +, +\begin_inset Formula $\mathbb{S}^{n}(r):=\{(x_{1},\dots,x_{n+1})\in\mathbb{R}^{n+1}:x_{1}^{2}+\dots+x_{n+1}^{2}=r^{2}\}$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +El +\series bold +plano agujereado +\series default + +\begin_inset Formula $\mathbb{R}^{2}\setminus\{0\}\subseteq\mathbb{R}^{2}$ +\end_inset + + y el +\series bold +espacio agujereado +\series default + +\begin_inset Formula $\mathbb{R}^{n}\setminus\{0\}\subseteq\mathbb{R}^{n}$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +El +\series bold +intervalo cerrado +\series default + +\begin_inset Formula $I:=[0,1]\subseteq\mathbb{R}$ +\end_inset + + o el +\series bold +cuadrado unidad +\series default + +\begin_inset Formula $I\times I\subseteq\mathbb{R}^{2}$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +El +\series bold +cilindro +\series default +, +\begin_inset Formula $C:=\{(x,y,z)\in\mathbb{R}^{3}:x^{2}+y^{2}=1,0\leq z\leq1\}$ +\end_inset + +, cono de rotación sobre el eje +\begin_inset Formula $z$ +\end_inset + + de +\begin_inset Formula $\{(1,0,s)\}_{s\in[0,1]}$ +\end_inset + +, esto es, +\begin_inset Formula $C=\{R_{\theta}(1,0,s)\}_{\theta\in[0,2\pi],s\in[0,1]}$ +\end_inset + + con +\begin_inset Formula +\[ +R_{\theta}:=\left(\begin{array}{ccc} +\cos\theta & -\sin\theta & 0\\ +\sin\theta & \cos\theta & 0\\ +0 & 0 & 1 +\end{array}\right). +\] + +\end_inset + + +\end_layout + +\begin_layout Enumerate +El +\series bold +toro +\series default +, +\begin_inset Formula $\mathbb{T}:=\{(x,y,z)\in\mathbb{R}^{3}:x^{2}+y^{2}+z^{2}-4\sqrt{x^{2}+y^{2}}+3=0\}$ +\end_inset + +, cono de rotación sobre el eje +\begin_inset Formula $z$ +\end_inset + + de +\begin_inset Formula $\{(x,0,z):(x-2)^{2}+z^{2}=1\}$ +\end_inset + +. +\end_layout + +\begin_deeper +\begin_layout Enumerate +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\supseteq]$ +\end_inset + + +\end_layout + +\end_inset + +Tenemos +\begin_inset Formula $\{(x,0,z):(x-2)^{2}+z^{2}=1\}=\{\alpha(s):=(\cos s+2,0,\sin s)\}_{s\in[0,2\pi]}$ +\end_inset + +, luego el cono de rotación es +\begin_inset Formula $\{(\cos\theta(\cos s+2),\sin\theta(\cos s+2),\sin s)\}_{s,\theta\in[0,2\pi]}$ +\end_inset + +. + Sustituyendo en la ecuación implícita y teniendo en cuenta que +\begin_inset Formula $x^{2}+y^{2}=(\cos s+2)^{2}$ +\end_inset + +, tenemos +\begin_inset Formula +\begin{multline*} +(\cos s+2)^{2}+\sin^{2}s-4(\cos s+2)+3=\\ +=\cos^{2}s+4\cos s+4+\sin^{2}s-4\cos s-8+3=0. +\end{multline*} + +\end_inset + + +\end_layout + +\begin_layout Enumerate +\begin_inset Argument item:1 +status open + +\begin_layout Plain Layout +\begin_inset Formula $\subseteq]$ +\end_inset + + +\end_layout + +\end_inset + +Dado +\begin_inset Formula $(x,y,z)\in\mathbb{T}$ +\end_inset + +, sea +\begin_inset Formula $s$ +\end_inset + + tal que +\begin_inset Formula $\sin s=z$ +\end_inset + +, concretamente, +\begin_inset Formula $s\in[0,\frac{\pi}{2}]\cup[\frac{3\pi}{2},2\pi]$ +\end_inset + + si +\begin_inset Formula $x^{2}+y^{2}\geq4$ +\end_inset + + o +\begin_inset Formula $s\in[\frac{\pi}{2},\frac{3\pi}{2}]$ +\end_inset + + en caso contrario. + Esto es válido porque, si +\begin_inset Formula $z^{2}>1$ +\end_inset + +, entonces +\begin_inset Formula $x^{2}+y^{2}-4\sqrt{x^{2}+y^{2}}+4<0$ +\end_inset + +, pero +\begin_inset Formula $x^{2}+y^{2}-4\sqrt{x^{2}+y^{2}}+4=(x^{2}+y^{2}-2)^{2}\geq0\#$ +\end_inset + +. + Entonces +\begin_inset Formula $x^{2}+y^{2}+\sin^{2}s-4\sqrt{x^{2}+y^{2}}+3=0\iff\sqrt{x^{2}+y^{2}}=\frac{4\pm\sqrt{16-4\sin^{2}s-12}}{2}=2\pm\sqrt{1-\sin^{2}s}=2\pm\cos s$ +\end_inset + +, luego +\begin_inset Formula $x^{2}+y^{2}=(2\pm\cos s)^{2}$ +\end_inset + +, y por cómo hemos elegido +\begin_inset Formula $s$ +\end_inset + +, es +\begin_inset Formula $x^{2}+y^{2}=(2+\cos s)^{2}$ +\end_inset + +. + Entonces basta tomar +\begin_inset Formula $\theta$ +\end_inset + + tal que +\begin_inset Formula $\cos\theta=\frac{x}{\sqrt{x^{2}+y^{2}}}=\frac{x}{\cos s+2}$ +\end_inset + + (es claro que +\begin_inset Formula $\cos s+2\neq0$ +\end_inset + +) y +\begin_inset Formula $\sin\theta=\frac{y}{\sqrt{x^{2}+y^{2}}}=\frac{y}{\cos s+2}$ +\end_inset + +. + +\end_layout + +\end_deeper +\begin_layout Enumerate +La +\series bold +cinta de Möbius +\series default +, +\begin_inset Formula $M:=\{(\cos\theta(3-t\sin\frac{\theta}{2}),\sin\theta(3-t\sin\frac{\theta}{2}),t\cos\frac{\theta}{2})\}_{\theta\in[0,2\pi],t\in[-1,1]}$ +\end_inset + +. + La idea es tener una varilla inicialmente paralela al eje +\begin_inset Formula $Z$ +\end_inset + + a longitud 3 que va girando alrededor del eje a la vez que gira alrededor + de su punto medio a la mitad de velocidad angular de forma perpendicular + al eje. +\end_layout + +\begin_layout Enumerate +El +\series bold +grupo lineal general +\series default + +\begin_inset Formula ${\cal GL}(n,\mathbb{R})\subseteq{\cal M}_{n}(\mathbb{R})$ +\end_inset + +, compuesto por las matrices invertibles, con la topología para +\begin_inset Formula ${\cal M}_{n}(\mathbb{R})$ +\end_inset + + dada por isomorfismo lineal con +\begin_inset Formula $\mathbb{R}^{n^{2}}$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +El +\series bold +grupo ortogonal +\series default + +\begin_inset Formula ${\cal O}(n)\subseteq{\cal GL}(n,\mathbb{R})$ +\end_inset + +, formado por las matrices cuya inversa es su traspuesta. +\end_layout + +\begin_layout Enumerate +El +\series bold +grupo ortogonal especial +\series default + +\begin_inset Formula ${\cal SO}(n)\subseteq{\cal O}(n)$ +\end_inset + +, formado por las matrices ortogonales con determinante 1. +\end_layout + +\begin_layout Section +Continuidad +\end_layout + +\begin_layout Standard +Dados dos espacios topológicos +\begin_inset Formula $(X,{\cal T}_{X})$ +\end_inset + + e +\begin_inset Formula $(Y,{\cal T}_{Y})$ +\end_inset + +, +\begin_inset Formula $f:X\to Y$ +\end_inset + +, o +\begin_inset Formula $f:(X,{\cal T}_{X})\to(Y,{\cal T}_{Y})$ +\end_inset + + si queremos resaltar la dependencia de las topologías, es +\series bold +continua +\series default + si +\begin_inset Formula $\forall V\in{\cal T}_{Y},f^{-1}(V)\in{\cal T}_{X}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Dados dos espacios topológicos +\begin_inset Formula $X_{1}$ +\end_inset + + y +\begin_inset Formula $X_{2}$ +\end_inset + + y +\begin_inset Formula $f:X_{1}\to X_{2}$ +\end_inset + + continua, si +\begin_inset Formula $Y_{1}\subseteq X_{1}$ +\end_inset + +, +\begin_inset Formula $f|_{Y_{1}}:Y_{1}\to X_{2}$ +\end_inset + + es continua, por lo que en particular la inclusión +\begin_inset Formula $i:Y_{1}\to X_{1}$ +\end_inset + + es continua, y si +\begin_inset Formula $f(X_{1})\subseteq Y_{2}\subseteq X_{2}$ +\end_inset + +, la +\series bold +restricción del rango +\series default + +\begin_inset Formula $f':X_{1}\to Y_{2}$ +\end_inset + +, dada por +\begin_inset Formula $f'(x):=f(x)$ +\end_inset + +, es continua. + Además, si +\begin_inset Formula $X_{2}$ +\end_inset + + es un subespacio topológico de +\begin_inset Formula $X'$ +\end_inset + +, la +\series bold +extensión de la imagen +\series default + +\begin_inset Formula $f':X_{1}\to X'$ +\end_inset + + es continua. +\end_layout + +\begin_layout Standard +Son funciones continuas: +\end_layout + +\begin_layout Enumerate +Las de forma +\begin_inset Formula $f:(X,{\cal T}_{\text{dis}})\to Y$ +\end_inset + + o +\begin_inset Formula $f:X\to(Y,{\cal T}_{\text{ind}})$ +\end_inset + +. + +\end_layout + +\begin_layout Enumerate +Las constantes. +\end_layout + +\begin_layout Enumerate +La composición de aplicaciones continuas. + No obstante, dadas +\begin_inset Formula $f:X\to Y$ +\end_inset + + y +\begin_inset Formula $g:Y\to Z$ +\end_inset + +, que +\begin_inset Formula $g\circ f$ +\end_inset + + sea continua no significa que lo sean +\begin_inset Formula $f$ +\end_inset + + y +\begin_inset Formula $g$ +\end_inset + +, pues por ejemplo, si tomamos +\begin_inset Formula $g$ +\end_inset + + constante, +\begin_inset Formula $g\circ f$ +\end_inset + + es continua aun si +\begin_inset Formula $f$ +\end_inset + + es discontinua. + +\end_layout + +\begin_layout Enumerate +La +\series bold +suma +\series default + +\begin_inset Formula $s:\mathbb{R}^{2}\to\mathbb{R}$ +\end_inset + +, +\begin_inset Formula $s(x,y):=x+y$ +\end_inset + +, con la topología usual. +\end_layout + +\begin_deeper +\begin_layout Enumerate +Como los abiertos en +\begin_inset Formula $\mathbb{R}$ +\end_inset + + son uniones de intervalos abiertos, basta ver que, dado +\begin_inset Formula $(a,b)\subseteq\mathbb{R}$ +\end_inset + +, +\begin_inset Formula $s^{-1}((a,b))=\{(x,y):a0$ +\end_inset + + tal que +\begin_inset Formula $B(t,\delta)\subseteq(a,b)$ +\end_inset + +, para +\begin_inset Formula $(x,y)\in B_{d_{1}}((x_{0},y_{0}),\delta)$ +\end_inset + +, +\begin_inset Formula +\[ +d(s(x,y),s(x_{0},y_{0}))=|x+y-x_{0}-y_{0}|=|(x-x_{0})-(y-y_{0})|\leq\delta +\] + +\end_inset + +y por tanto +\begin_inset Formula $s(x,y)\in(a,b)$ +\end_inset + + y +\begin_inset Formula $(x,y)\in s^{-1}((a,b))$ +\end_inset + +, con lo que +\begin_inset Formula $B_{d_{1}}((x_{0},y_{0}),\delta)\subseteq s^{-1}((a,b))$ +\end_inset + + y +\begin_inset Formula $s^{-1}((a,b))$ +\end_inset + + es abierto. +\end_layout + +\end_deeper +\begin_layout Enumerate +El +\series bold +producto +\series default + +\begin_inset Formula $p:\mathbb{R}^{2}\to\mathbb{R}$ +\end_inset + +, +\begin_inset Formula $p(x,y):=xy$ +\end_inset + +, con la topología usual. +\end_layout + +\begin_deeper +\begin_layout Enumerate +Dado +\begin_inset Formula $(a,b)\subseteq\mathbb{R}$ +\end_inset + +, queremos ver que +\begin_inset Formula $p^{-1}((a,b))=\{(x,y):a0$ +\end_inset + + tal que +\begin_inset Formula $B(t,\delta)\subseteq(a,b)$ +\end_inset + + y +\begin_inset Formula $\delta:=\min\{1,\frac{r}{|x_{0}|+|y_{0}|+1}\}$ +\end_inset + +, para +\begin_inset Formula $(x,y)\in B_{d_{\infty}}((x_{0},y_{0}),\delta)$ +\end_inset + +, +\begin_inset Formula +\begin{multline*} +|p(x,y)-p(x_{0},y_{0})|=|xy-x_{0}y_{0}|=|xy-xy_{0}+xy_{0}-x_{0}y_{0}|\leq\\ +\leq|x||y-y_{0}|+|x-x_{0}||y_{0}|\leq(|x_{0}|+\delta)\delta+|y_{0}|\delta=\delta(|x_{0}|+|y_{0}|+\delta)\leq\\ +\leq\delta(|x_{0}|+|y_{0}|+1)\leq r, +\end{multline*} + +\end_inset + +con lo que +\begin_inset Formula $B_{d_{\infty}}((x_{0},y_{0}),\delta)\subseteq p^{-1}((a,b))$ +\end_inset + + y +\begin_inset Formula $p^{-1}((a,b))$ +\end_inset + + es abierto. +\end_layout + +\end_deeper +\begin_layout Enumerate +La +\series bold +diagonal +\series default + +\begin_inset Formula $d:\mathbb{R}\to\mathbb{R}^{n}$ +\end_inset + +, +\begin_inset Formula $d(x):=(x,\dots,x)$ +\end_inset + +, con la topología usual. +\end_layout + +\begin_deeper +\begin_layout Enumerate +Basta ver que, dada una bola +\begin_inset Formula $B_{\infty}(y,r)$ +\end_inset + + con +\begin_inset Formula $y\in\mathbb{R}^{n}$ +\end_inset + +, su inversa es un abierto. + Tenemos +\begin_inset Formula $d^{-1}(B_{d_{\infty}}(y,r))=\{x:d_{\infty}((x,\dots,x),y)0$ +\end_inset + +, +\begin_inset Formula $\sin\alpha=-\frac{y}{\sqrt{x^{2}+y^{2}}}$ +\end_inset + + y la rotación es +\begin_inset Formula +\[ +A:=\left(\begin{array}{ccc} +\frac{x}{\sqrt{x^{2}+y^{2}}} & \frac{y}{\sqrt{x^{2}+y^{2}}}\\ +-\frac{y}{\sqrt{x^{2}+y^{2}}} & \frac{x}{\sqrt{x^{2}+y^{2}}}\\ + & & 1 +\end{array}\right). +\] + +\end_inset + +Para +\begin_inset Formula $(x,y)=(0,0)$ +\end_inset + +, esta matriz no está definida, pero entonces no es necesaria la rotación. + Tras la transformación, +\begin_inset Formula $x\geq0$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Rotamos sobre el eje +\begin_inset Formula $Y$ +\end_inset + + para situar a +\begin_inset Formula $u$ +\end_inset + + en el eje +\begin_inset Formula $Z$ +\end_inset + +. + El ángulo es aquel entre el nuevo valor de +\begin_inset Formula $u$ +\end_inset + + y el eje +\begin_inset Formula $Z$ +\end_inset + +, un +\begin_inset Formula $\alpha$ +\end_inset + + tal que +\begin_inset Formula $(0,0,1)\cdot Au=|(0,0,1)||Av|\cos\alpha=|v|\cos\alpha\iff z=n\cos\alpha\iff\cos\alpha=\frac{z}{n}$ +\end_inset + +. + Tenemos +\begin_inset Formula +\[ +\sin\alpha=\pm\sqrt{1-\cos^{2}\alpha}=\pm\sqrt{\frac{n^{2}-z^{2}}{n^{2}}}=\pm\frac{\sqrt{x^{2}+y^{2}}}{n}, +\] + +\end_inset + + pero como +\begin_inset Formula $\alpha<0$ +\end_inset + +, +\begin_inset Formula $\sin\alpha=-\frac{\sqrt{x^{2}+y^{2}}}{n}$ +\end_inset + +, y la rotación es +\begin_inset Formula +\[ +B:=\left(\begin{array}{ccc} +\frac{z}{n} & & -\frac{\sqrt{x^{2}+y^{2}}}{n}\\ + & 1\\ +\frac{\sqrt{x^{2}+y^{2}}}{n} & & \frac{z}{n} +\end{array}\right). +\] + +\end_inset + + +\end_layout + +\begin_layout Enumerate +Hacemos la rotación de ángulo +\begin_inset Formula $2\theta$ +\end_inset + + sobre el eje +\begin_inset Formula $Z$ +\end_inset + +. + Tenemos +\begin_inset Formula +\begin{eqnarray*} +\cos(2\theta) & = & \cos^{2}\theta-\sin^{2}\theta=2\cos^{2}\theta-1=2w^{2}-1,\\ +\sin(2\theta) & = & 2\sin\theta\cos\theta=2w\sqrt{1-w^{2}}=2w\sqrt{x^{2}+y^{2}+z^{2}}=2wn, +\end{eqnarray*} + +\end_inset + +luego la rotación es +\begin_inset Formula +\[ +C:=\left(\begin{array}{ccc} +2w^{2}-1 & -2wn\\ +2wn & 2w^{2}-1\\ + & & 1 +\end{array}\right). +\] + +\end_inset + + +\end_layout + +\begin_layout Enumerate +Revertimos las dos rotaciones anteriores. + Sea +\begin_inset Formula $t:=\sqrt{x^{2}+y^{2}}$ +\end_inset + +, +\begin_inset Formula +\[ +BA=\left(\begin{array}{ccc} +\frac{z}{n} & & -\frac{t}{n}\\ + & 1\\ +\frac{t}{n} & & \frac{z}{n} +\end{array}\right)\left(\begin{array}{ccc} +\frac{x}{t} & \frac{y}{t}\\ +-\frac{y}{t} & \frac{x}{t}\\ + & & 1 +\end{array}\right)=\left(\begin{array}{ccc} +\frac{xz}{nt} & \frac{yz}{nt} & -\frac{t}{n}\\ +-\frac{y}{t} & \frac{x}{t}\\ +\frac{x}{n} & \frac{y}{n} & \frac{z}{n} +\end{array}\right). +\] + +\end_inset + +Ahora bien, como todas estas matrices son rotaciones y por tanto son ortonormale +s especiales, su inversa es su traspuesta, +\begin_inset Formula +\[ +D:=(BA)^{-1}=(BA)^{t}=\left(\begin{array}{ccc} +\frac{xz}{nt} & -\frac{y}{t} & \frac{x}{n}\\ +\frac{yz}{nt} & \frac{x}{t} & \frac{y}{n}\\ +-\frac{t}{n} & & \frac{z}{n} +\end{array}\right). +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Multiplicando todo, la matriz es +\begin_inset Formula +\begin{eqnarray*} +DCBA & = & \left(\begin{array}{ccc} +\frac{xz}{nt} & -\frac{y}{t} & \frac{x}{n}\\ +\frac{yz}{nt} & \frac{x}{t} & \frac{y}{n}\\ +-\frac{t}{n} & & \frac{z}{n} +\end{array}\right)\left(\begin{array}{ccc} +2w^{2}-1 & -2wn\\ +2wn & 2w^{2}-1\\ + & & 1 +\end{array}\right)\left(\begin{array}{ccc} +\frac{xz}{nt} & \frac{yz}{nt} & -\frac{t}{n}\\ +-\frac{y}{t} & \frac{x}{t}\\ +\frac{x}{n} & \frac{y}{n} & \frac{z}{n} +\end{array}\right)\\ + & \overset{\text{Maxima}}{=} & \left(\begin{array}{ccc} +1-2y^{2}-2z^{2} & 2(xy-wz) & 2(wy+xz)\\ +2(xy+wz) & 1-2x^{2}-2z^{2} & 2(yz-wx)\\ +2(xz-wy) & 2(yz-wx) & 1-2x^{2}-2y^{2} +\end{array}\right)\\ + & = & \left(\begin{array}{ccc} +w^{2}+x^{2}-y^{2}-z^{2} & 2(xy-wz) & 2(wy+xz)\\ +2(xy+wz) & w^{2}-x^{2}+y^{2}-z^{2} & 2(yz-wx)\\ +2(xz-wy) & 2(yz-wx) & w^{2}-x^{2}-y^{2}+z^{2} +\end{array}\right). +\end{eqnarray*} + +\end_inset + +Claramente esta matriz es ortogonal especial por ser producto de matrices + ortogonales especiales. + Vemos que, cuando +\begin_inset Formula $(x,y)=(0,0)$ +\end_inset + +, +\begin_inset Formula $z^{2}=n^{2}$ +\end_inset + + y tenemos la matriz +\begin_inset Formula $C$ +\end_inset + +, que también es ortogonal especial. +\end_layout + +\end_deeper +\begin_layout Enumerate +La aplicación +\begin_inset Formula $f:\mathbb{S}^{2}\to{\cal SO}(3)$ +\end_inset + + dada por +\begin_inset Formula +\[ +f(x,y,z):=\left(\begin{array}{ccc} +2x^{2}-1 & 2xy & 2xz\\ +2xy & 2y^{2}-1 & 2yz\\ +2xz & 2yz & 2z^{2}-1 +\end{array}\right), +\] + +\end_inset + +que asocia a cada punto de la esfera la rotación de +\begin_inset Formula $180^{\text{o}}$ +\end_inset + + alrededor de la recta que genera. +\end_layout + +\begin_deeper +\begin_layout Standard +Se obtiene tomando +\begin_inset Formula $w=0$ +\end_inset + + en el punto +\begin_inset CommandInset ref +LatexCommand ref +reference "enu:angle" +plural "false" +caps "false" +noprefix "false" + +\end_inset + + y simplificando. +\end_layout + +\end_deeper +\begin_layout Section +Base de una topología +\end_layout + +\begin_layout Standard +Dado un espacio topológico +\begin_inset Formula $(X,{\cal T})$ +\end_inset + +, +\begin_inset Formula ${\cal B}\subseteq{\cal T}$ +\end_inset + + es una +\series bold +base +\series default + para +\begin_inset Formula ${\cal T}$ +\end_inset + + si +\begin_inset Formula $\forall A\in{\cal T},\exists{\cal A}\subseteq{\cal B}:A=\bigcup{\cal A}$ +\end_inset + +, en cuyo caso llamamos +\series bold +elementos básicos +\series default + a los elementos de +\begin_inset Formula ${\cal B}$ +\end_inset + +. + Vemos que +\begin_inset Formula ${\cal B}$ +\end_inset + + es una base para +\begin_inset Formula ${\cal T}$ +\end_inset + + si y sólo si +\begin_inset Formula $\forall U\in{\cal T},\forall x\in U,\exists B\in{\cal B}:x\in B\subseteq U$ +\end_inset + +, y entonces, si +\begin_inset Formula ${\cal B}_{Y}$ +\end_inset + + es base de +\begin_inset Formula ${\cal T}_{Y}$ +\end_inset + +, +\begin_inset Formula $f:(X,{\cal T}_{X})\to(Y,{\cal T}_{Y})$ +\end_inset + + es continua si y solo si +\begin_inset Formula $\forall B\in{\cal B}_{Y},f^{-1}(B)\in{\cal T}_{X}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Dadas dos topologías +\begin_inset Formula ${\cal T}$ +\end_inset + + y +\begin_inset Formula ${\cal T}'$ +\end_inset + + sobre +\begin_inset Formula $X$ +\end_inset + +, decimos que +\begin_inset Formula ${\cal T}'$ +\end_inset + + es +\series bold +más fina +\series default + o +\series bold +más grande +\series default + que +\begin_inset Formula ${\cal T}$ +\end_inset + +, y que +\begin_inset Formula ${\cal T}$ +\end_inset + + es +\series bold +más gruesa +\series default + o +\series bold +más pequeña +\series default + que +\begin_inset Formula ${\cal T}'$ +\end_inset + +, si +\begin_inset Formula ${\cal T}\subseteq{\cal T}'$ +\end_inset + +. + Si la inclusión es estricta, decimos que +\begin_inset Formula ${\cal T}'$ +\end_inset + + es +\series bold +estrictamente más fina +\series default + o +\series bold +estrictamente más grande +\series default + que +\begin_inset Formula ${\cal T}$ +\end_inset + + y que +\begin_inset Formula ${\cal T}$ +\end_inset + + es +\series bold +estrictamente más gruesa +\series default + o +\series bold +estrictamente más pequeña +\series default + que +\begin_inset Formula ${\cal T}'$ +\end_inset + +. + +\begin_inset Formula ${\cal T}$ +\end_inset + + y +\begin_inset Formula ${\cal T}'$ +\end_inset + + son +\series bold +comparables +\series default + si +\begin_inset Formula ${\cal T}\subseteq{\cal T}'$ +\end_inset + + o +\begin_inset Formula ${\cal T}'\subseteq{\cal T}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Sean +\begin_inset Formula ${\cal B}$ +\end_inset + + y +\begin_inset Formula ${\cal B}'$ +\end_inset + + bases respectivas para las topologías +\begin_inset Formula ${\cal T}$ +\end_inset + + y +\begin_inset Formula ${\cal T}'$ +\end_inset + + sobre +\begin_inset Formula $X$ +\end_inset + +, +\begin_inset Formula ${\cal T}\subseteq{\cal T}'$ +\end_inset + + si y sólo si +\begin_inset Formula ${\cal B}\subseteq{\cal T}'$ +\end_inset + +, si y sólo si +\begin_inset Formula $\forall B\in{\cal B},\forall x\in B,\exists B'\in{\cal B}':x\in B'\subseteq B$ +\end_inset + +. +\end_layout + +\begin_layout Description +\begin_inset Formula $[1\implies2]$ +\end_inset + + Obvio. +\end_layout + +\begin_layout Description +\begin_inset Formula $[2\implies3]$ +\end_inset + + Como +\begin_inset Formula $B\in{\cal T}'$ +\end_inset + +, +\begin_inset Formula $B$ +\end_inset + + se puede expresar como unión de elementos de +\begin_inset Formula ${\cal B}'$ +\end_inset + +. +\end_layout + +\begin_layout Description +\begin_inset Formula $[3\implies1]$ +\end_inset + + Todo +\begin_inset Formula $A\in{\cal T}$ +\end_inset + + se puede expresar como unión de elementos +\begin_inset Formula $B\in{\cal B}$ +\end_inset + +. + Si para +\begin_inset Formula $x\in B$ +\end_inset + + llamamos +\begin_inset Formula $B_{x}$ +\end_inset + + a un elemento +\begin_inset Formula $B'\in{\cal B}'$ +\end_inset + + con +\begin_inset Formula $x\in B'\subseteq B$ +\end_inset + +, entonces +\begin_inset Formula +\[ +A=\bigcup_{\begin{subarray}{c} +B\in{\cal B}\\ +B\subseteq A +\end{subarray}}\bigcup_{x\in B}B_{x}, +\] + +\end_inset + +una unión de elementos de +\begin_inset Formula ${\cal B}'\subseteq{\cal T}'$ +\end_inset + +, luego +\begin_inset Formula $A\in{\cal T}'$ +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Formula ${\cal B}\subseteq{\cal P}(X)$ +\end_inset + + es una +\series bold +base +\series default + para una topología sobre +\begin_inset Formula $X$ +\end_inset + + si +\begin_inset Formula $\forall x\in X,\exists B\in{\cal B}:x\in B$ +\end_inset + + y +\begin_inset Formula $\forall B_{1},B_{2}\in{\cal B},\forall x\in B_{1}\cap B_{2},\exists B_{3}\in{\cal B}:x\in B_{3}\subseteq B_{1}\cap B_{2}$ +\end_inset + +. + En tal caso, llamamos +\series bold +topología generada +\series default + por +\begin_inset Formula ${\cal B}$ +\end_inset + + a +\begin_inset Formula ${\cal T}_{{\cal B}}:=\{U\subseteq X:\forall x\in U,\exists B\in{\cal B}:x\in B\subseteq U\}$ +\end_inset + +, y se tiene que +\begin_inset Formula ${\cal T}_{{\cal B}}$ +\end_inset + + es una topología y +\begin_inset Formula ${\cal B}$ +\end_inset + + es base para +\begin_inset Formula ${\cal T}_{{\cal B}}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Llamamos +\series bold +topología del límite inferior +\series default +, +\begin_inset Formula ${\cal T}_{\ell i}$ +\end_inset + +, a la topología +\begin_inset Formula ${\cal T}_{\ell i}$ +\end_inset + + generada por la base +\begin_inset Formula ${\cal B}_{\ell i}:=\{[a,b)\}_{a,b\in\mathbb{R};a\frac{2}{n_{0}}$ +\end_inset + +, +\begin_inset Formula $(p_{n}:=\frac{\lceil an\rceil}{n})_{n\geq n_{0}}$ +\end_inset + + y +\begin_inset Formula $(q_{n}:=\frac{\lfloor bn\rfloor}{n})_{n\geq n_{0}}$ +\end_inset + +, +\begin_inset Formula $p_{n}