Modelado algebraico de tipos de datos recursivos
|
|
- Daniel Quintana Gallego
- hace 6 años
- Vistas:
Transcripción
1 Introducción a la Programación Genérica Modelado algebraico de tipos de datos recursivos Modelado algebraico de tipos Tipos de datos recursivos pueden ser definidos en la mayoría de los lenguajes de programación modernos. Ejemplos: Haskell, ML, Java. Veremos como los tipos de datos recursivos son modelados en el lenguaje de categorías. Tal modelado está basado en una visión algebraica de los tipos. Prog. Genérica - InCo 1
2 Declaraciones de tipos de datos La estructura sintáctica de los elementos de un tipo es declarada mediante los constructores del mismo. Los constructores con múltiples argumentos los vamos a considerar en forma no currificada. Es decir, nuestras declaraciones de tipo van a ser de la forma: data T = C 1 (τ 1,1 τ 1,k1 ). C n (τ n,1 τ n,kn ) donde en los τ i,j puede eventualmente ocurrir T. Esto define que, para cada i,. C i : τ i,1 τ i,ki T Prog. Genérica - InCo 2 Ejemplos Naturales data Nat = Zero Succ Nat define que Zero : Nat Succ : Nat Nat Listas data List(A) = Nil Cons (A List(A)) define que Nil : List(A) Cons : A List(A) List(A) Prog. Genérica - InCo 3
3 Σ-álgebras Una forma natural de ver una declaración de tipo es como definiendo un álgebra de términos. Como una primera aproximación al modelado algebraico de tipos, veamos el caso de las álgebras homogeneas con signatura Σ. A través de una signatura Σ se declara un conjunto de símbolos de función. Para cada f Σ, denotaremos por ar(f) la aridad de f (que es un nro. natural). Una Σ-álgebra A está fromada por un conjunto soporte A junto con una función f A : A ar(f) A para cada f Σ. Prog. Genérica - InCo 4 Ejemplos Sea Σ = {e, } tal que ar(e) = 0 y ar( ) = 2. Σ-álgebras concretas: (N, 0, (+)) (Z, 1, ( )) (B, false, ( )) (List(A), Nil, (++)) Sea Σ = {e, i, } tal que ar(e) = 0, ar(i) = 1 y ar( ) = 2. Σ-álgebras concretas: (Z, 0, ( 1), (+)) (N, 1, (+1), ( )) (B, false, ( ), ( )) Prog. Genérica - InCo 5
4 Homomorfismos Homomorfismos son mapeos entre álgebras que preservan la estructura. Un Σ-homomorfismo entre dos Σ-álgebras A y B es una función h : A B entre sus conjuntos soportes tal que, para cada f Σ, h(f A (a 1,..., a ar(f) )) = f B (h(a 1 ),..., h(a ar(f) )) En forma de diagrama: A ar(f) h ar(f) B ar(f) f A A h f B B Prog. Genérica - InCo 6 Ejemplos de homomorfismos Sea Σ = {e, } tal que ar(e) = 0 y ar( ) = 2. La función length : List(A) N, tal que length(nil) = 0 length(l++l ) = length(l) + length(l ) es un homomorfismo entre las álgebras (List(A), Nil, (++)) y (N, 0, (+)). La función ispos : N B, tal que ispos(0) = false ispos(x + y) = ispos(x) ispos(y) es un homomorfismo entre las álgebras (N, 0, (+)) y (B, false, ( )). Prog. Genérica - InCo 7
5 Álgebra de términos Dada una signatura Σ, el conjunto de términos T Σ está definido inductivamente de la siguiente forma: f Σ t 1,..., t n T Σ f(t 1,..., t n ) T Σ donde n = ar(f) T Σ es el conjunto soporte del álgebra de términos T Σ. Funciones del álgebra de términos: para cada f Σ, f T Σ (t 1,..., t ar(f) ) def = f(t 1,..., t ar(f) ) Propiedad universal: Existe un único homomorfismo h : T Σ A entre el álgebra de términos y cualquier otra álgebra A. Prog. Genérica - InCo 8 Signaturas como functores Dada una signatura Σ y un conjunto A cualquiera, podemos considerar la siguiente suma: f Σ Aar(f) la cual resume los dominios de las funciones de cualquier Σ-álgebra con conjunto soporte A. Esta suma puede ser vista como la acción sobre objetos de un functor Σ : Set Set, Σ : A f Σ Aar(f) Prog. Genérica - InCo 9
6 Álgebras y homomorfismos (revistos) Usando el functor Σ es posible empaquetar las funciones de un álgebra A en términos de una sola flecha dada por un análisis de casos. ϕ : ΣA A Un homomorfismo entre dos álgebras ϕ : ΣA A y ψ : ΣB B es una función h : A B tal que ΣA Σh ΣB ϕ ψ A h B Prog. Genérica - InCo 10 F -álgebras y F -homomorfismos Las construcciones anteriores se pueden generalizar para el caso de álgebras heterogeneas (varios conjuntos soportes) y para cualquier functor F : C C sobre una categoría C arbitraria. Una F -álgebra es una flecha h : F A A. Un F -homomorfismo entre dos álgebras h : F A A y h : F B B es una flecha f : A B tal que F A F f F B h A f h B La categoría de F -álgebras, Alg(F ), está formada por F -álgebras como objetos y F -homomorfismos como flechas. Prog. Genérica - InCo 11
7 Ecuaciones de tipo Dada una declaración de tipo data T = C 1 (τ 1,1 τ 1,k1 ). C n (τ n,1 τ n,kn ) es posible derivar un functor F : C C que captura la signatura de dicho tipo: donde τ i,j = τ i,j [A/T ]. F A = n i=1 ( τ i,1 τ i,ki ) El tipo de dato es entonces interpretado como una solución (un punto fijo) de la ecuación de tipo: X = F X. Prog. Genérica - InCo 12 Ejemplo: Naturales data Nat = Zero Succ Nat Signatura: NA = 1 + A, esto es, N = 1 + I. Entonces, Nat = 1 + Nat. Álgebras: h = [h 1, h 2 ] : 1 + A A. Homomorfismos: Para h : NA A y k : NB B, f : A B es tal que 1 id 1 1 A f B k 1 k 2 h 1 A f B h 2 A f B Prog. Genérica - InCo 13
8 Ejemplo: Expresiones aritméticas data Exp = Num Int Add (Exp Exp) Mult (Exp Exp) Signatura: EA = Int + A A + A A, esto es, E = Int + I I + I I. Álgebras: h = [h 1, h 2, h 3 ] : Int + A A + A A A Homomorfismos: Para h : EA A y k : EB B, f : A B es tal que: Int + A 2 + A 2 id Int + f f + f f Int + B 2 + B 2 h A f k B Prog. Genérica - InCo 14 Tipos polimórficos La signatura de tipos de datos polimórficos es capturada por functores F : C C C. El primer argumento corresponde al parámetro del tipo de dato polimórfico. Fijando el primer argumento en un objeto A de C uno obtiene un functor F (A, ) : C C, que denotaremos F A, tal que F A B = F (A, B) F A f = F (id A, f) La ecuación de tipo en este caso es de la forma DA = F (A, DA) donde D es el tipo de dato polimórfico. Prog. Genérica - InCo 15
9 Ejemplo: Listas data List(A) = Nil Cons (A List(A)) Signatura: L A B = 1 + A B, esto es, L A = 1 + A I. Álgebras: h = [h 1, h 2 ] : 1 + A B B Homomorfismos: Para h : L A B B y k : L A C C, f : A B es tal que: 1 + A B id 1 + id A f 1 + A C h B f k C Prog. Genérica - InCo 16 Ejemplo: Árboles binarios data Btree(A) = Leaf A Join (Btree(A) Btree(A)) Signatura: B A C = A + C C, esto es, B A = A + I I. Álgebras: h = [h 1, h 2 ] : A + C C C Homomorfismos: Para h : B A X X y k : B A Y Y, f : X Y es tal que: A + X X id A + f f A + Y Y h X f k Y Prog. Genérica - InCo 17
10 Álgebra inicial Un álgebra es dicha inicial si existe un único homomorfismo entre ella y cualquier otra álgebra. Dada una ecuación de tipo X = F X, denotaremos el álgebra inicial como in F : F µf µf Los constructores son las componentes del álgebra inicial: in F = [C 1,..., C n ] El álgebra inicial corresponde al álgebra de términos. Prog. Genérica - InCo 18 Fold La existencia del álgebra inicial permite asociar un operador recursivo a cada tipo de dato, llamado fold (o catamorfismo). Dada un F -álgebra h : F A A, denotaremos por fold F (h) al único homomorfismo entre in F y h. F T F fold F (h) F A in F T fold F (h) h A Fold sustituye cada constructor por la correspondiente función en el álgebra. Fold corresponde a definiciones por recursión estructural sobre el tipo. Prog. Genérica - InCo 19
11 Ejemplo: Naturales Álgebra inicial: data Nat = Zero Succ Nat in N = [Zero, Succ] : 1 + Nat Nat Para cada h = [h 1, h 2 ] : 1 + A A, fold es la única flecha f = fold N (h) : Nat A tal que f Zero = h 1 f Succ = h 2 f Con elementos, f(zero) = h 1 f(succ(n)) = h 2 (f(n)) Ejemplo: add m = fold N ([λu.m, Succ]) : Nat Nat Prog. Genérica - InCo 20 Ejemplo: Expresiones aritméticas data Exp = Num Int Add (Exp Exp) Mult (Exp Exp) Álgebra inicial: in E = [Num, Add, Mult] : Int+Exp Exp+Exp Exp Exp Para cada h = [h 1, h 2, h 3 ] : Int + A A + A A A, fold es la única flecha f = fold E (h) : Exp A tal que f Num = h 1 f Add = h 2 (f f) f Mult = h 3 (f f) Prog. Genérica - InCo 21
12 Ejemplo: Expresiones aritméticas Con elementos, f(num(n)) = h 1 (n) f(add(e, e )) = h 2 (f(e), f(e )) f(mult(e, e )) = h 3 (f(e), f(e )) Ejemplo: eval = fold E ([id, +, ]) : Exp Int Esto es, eval(num(n)) = n eval(add(e, e )) = eval(e) + eval(e ) eval(mult(e, e )) = eval(e) eval(e ) Prog. Genérica - InCo 22 Ejemplo: Listas Álgebra inicial: in LA = [Nil, Cons] : 1 + A List(A) List(A) Para cada h = [h 1, h 2 ] : 1 + A B B, fold es la única flecha f = fold LA (h) : List(A) B tal que f Nil = h 1 f Cons = h 2 (id A f) Con elementos, f(nil) = h 1 f(cons(a, l)) = h 2 (a, f(l)) Ejemplo: sum = fold LNat ([Zero, add]) : List(Nat) Nat Prog. Genérica - InCo 23
13 Ejemplo: Árboles binarios Álgebra inicial: in BA = [Leaf, Join] : B A Btree(A) Btree(A) Para cada h = [h 1, h 2 ] : A + C C C, fold es la única flecha f = fold BA (h) : Btree(A) C tal que f Leaf = h 1 f Join = h 2 (f f) Con elementos, f(leaf(a)) = h 1 (a) f(join(t, u)) = h 2 (f(t), f(u)) Ejemplo: leaves = fold BA ([wrap, ++]) : Btree(A) List(A) Prog. Genérica - InCo 24 Propiedades del operador fold Ley de identidad: fold F (in F ) = id µf Ley de fusión: f h = h F f f fold F (h) = fold F (h ) En términos de diagramas, F A F f F B µf fold F (h) A h A f h B fold F (h ) f B Prog. Genérica - InCo 25
14 Banana split fold F (h), fold F (k) = fold F ( h F π 1, k F π 2 ) Prog. Genérica - InCo 26 Transformador Un transformador es una función T : (F A A) (GA A) polimórfica en A que construye G-álgebras a partir de F -álgebras. Propiedad: Por ser T polimórfica se cumple que F A F f F B GA Gf GB h h T(h) T(h ) A f B A f B Prog. Genérica - InCo 27
15 Fusión de fold con fold Si T : (F A A) (GA A) es un transformador, entonces fold F (h) fold G (T(in F )) = fold G (T(h)) O sea, fold G (T(h)) = µg fold G(T(in F )) µf fold F (h) A donde h : F A A. Esta propiedad es también conocida como ley de deforestación o ley de la lluvia ácida (acid rain law). Prog. Genérica - InCo 28 Ejemplo Consideremos el tipo de dato data Tree(A) = Empty Node (Tree(A) A Tree(A)) y la función prune : List(A) Tree(A) Tree(A) prune l = p donde p(empty) = Empty p(node(t, a, t )) = if a l then Empty else Node(p(t), a, p(t )) Prog. Genérica - InCo 29
16 Ejemplo (cont.) prune l = fold TA (fprune) donde T A B = 1 + B A B fprune : 1 + Tree(A) A Tree(A) Tree(A) fprune(x) = case x of inl(u) Empty inr(t, a, t ) if a l then Empty else Node(t, a, t ) Prog. Genérica - InCo 30 Ejemplo (cont.) donde fprune = T(in TA ) in TA = [Empty, Node] T : (F A B B) (F A B B) T(h) = λx. case x of inl(u) h 1 inr(b, a, b ) if a l then h 1 else h 2 (b, a, b ) siendo h = [h 1, h 2 ] : 1 + B A B B. T satisface ser un transformador. Prog. Genérica - InCo 31
17 Ejemplo (cont.) size : Tree(A) Int size(empty) = 0 size(node(t, a, t )) = 1 + size(t) + size(t ) size = fold TA (fsize) fsize : 1 + Int A Int Int count : List(A) Tree(A) Int count l = size prune l count l = Tree(A) prune l Tree(A) size Int Prog. Genérica - InCo 32 Ejemplo (cont.) Aplicando fusión de fold con fold se obtiene que count l = fold TA (T(fsize)) o sea, count l Empty = 0 count l (Node(t, a, t )) = if a l then 0 else 1 + count l t + count l t Prog. Genérica - InCo 33
18 Functor de tipo Todo tipo de dato polimórfico D se puede hacer un functor D : C C, llamado functor de tipo, definiendo su acción sobre flechas f : A B, Esto es, Df def = fold FA (in FB F (f, id DB )) : DA DB F A (DA) in FA F A (Df) F A (DB) F (f, id) F B (DB) DA Df DB in FB Prog. Genérica - InCo 34 Ejemplo: Listas Para f : A B, Por lo tanto, List(f) = fold LA ([Nil, Cons (f id)]) List(f)(Nil) = Nil List(f)(Cons(a, l)) = Cons(f(a), List(f)(l)) List corresponde a la popular función map. map :: (a -> b) -> ([a] -> [b]) map f [] = [] map f (x:xs) = f x : map f xs Prog. Genérica - InCo 35
19 Ejemplo: Árboles binarios Para f : A B, Btree(f) = fold BA ([Leaf f, Join]) Esto es, Btree(f)(Leaf(a)) = Leaf(f(a)) Btree(f)(Join(t, u)) = Join(Btree(f)(t), Btree(f)(u)) Prog. Genérica - InCo 36 Rose trees Rose trees son árboles con múltiples ramificaciones: data Rose(A) = Fork(A List(Rose(A))) Signatura: R A B = A List(B), esto es, R A = A List. Álgebras: h : A List(B) B. Álgebra inicial: in RA = Fork : A List(Rose(A)) Rose(A) Para cada h : A List(B) B, fold es la única flecha f = fold RA (h) : Rose(A) B tal que: f(fork(a, l)) = h(a, List(f)(l)) Prog. Genérica - InCo 37
20 unzip genérico gunzip : D(A B) (DA DB) gunzip = D π 1, D π 2 Propiedad: Para toda f : A A y g : B B, D(A B) gunzip DA DB D(f g) D(A B ) Df Dg gunzip DA DB Prog. Genérica - InCo 38 Fusión entre map y fold Para toda f : A B y h : F B C C, fold FB (h) Df = fold FA (h F (f, id C )) Esto es, fold FA (h F (f, id)) = DA Df DB fold F B (h) C Prog. Genérica - InCo 39
21 Ejemplo all : (A Bool) List(A) Bool all p = and List(p) donde and : List(Bool) Bool and = fold LBool ([True, ]) Por la ley de fusión entre map y fold se obtiene que: all p = fold LA ([True, (p id)]) Prog. Genérica - InCo 40 Tipos de datos regulares Un tipo de dato es dicho regular si su declaración no contiene espacios de funciones ( ) y las ocurrencias recursivas del tipo aparecen con los mismos argumentos que en la parte izquierda de la declaración. La signatura de los tipos de datos regulares es modelada por functores regulares: F ::= I A F F F + F D Prog. Genérica - InCo 41
22 Bifunctores regulares La signatura de tipos regulares polimórficos es modelada por bifunctores regulares (functores de tipo C C C): donde F ::= C U Par Rec F F F + F DF C = Nat, Int, Bool, String, etc. U = 1 P ar = Π 1 (extrae el parámetro) Rec = Π 2 (extrae el parámetro recursivo) Prog. Genérica - InCo 42 Ejemplos de bifunctores L(A, X) = 1 + A X L = U + Par Rec B(A, X) = A + X X B = Par + Rec Rec T (A, X) = 1 + X A X T = U + Rec Par Rec R(A, X) = A List(X) R = Par List Rec Prog. Genérica - InCo 43
Tesis de Maestría en Informática
PEDECIBA Informática Instituto de Computación Facultad de Ingeniería Universidad de la República Montevideo, Uruguay Tesis de Maestría en Informática Fusión en presencia de acumuladores Amarante 2010 Martínez
Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos
Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos
Isabelle como un lenguaje funcional
Capítulo 1 Isabelle como un lenguaje funcional 1.1 Introducción Nota 1.1.1. Esta notas son una introducción a la demostración asistida utilizando el sistema Isabelle/HOL/Isar. La versión de Isabelle utilizada
Grupos libres. Presentaciones.
S _ Tema 12.- Grupos libres. Presentaciones. 12.1 Grupos libres. En el grupo Z de los enteros vimos una propiedad (cf. ejemplos.5), que lo caracteriza como grupo libre. Lo enunciamos al modo de una Propiedad
Algoritmos y programas. Algoritmos y Estructuras de Datos I
Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de
Tema 3: Tipos y clases
Tema 3: Tipos y clases Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Tema 3: Tipos y clases
Tema 3: Tipos y clases
Tema 3: Tipos y clases Programación declarativa (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Tema 3: Tipos y clases
data Tree a = Tip Node a (Tree a) (Tree a) deriving Show
Preguntas seleccionadas de pruebas de evaluación Pregunta 1 Dadas las siguientes definiciones: data Tree a = Tip Node a (Tree a) (Tree a) deriving Show cambiar :: [Int] -> Tree [Int] -> Tree [Int] cambiar
Tema 7. El sistema de clases
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 7. El sistema de clases 7.1 Funciones Sobrecargadas Clases e Instancias 7.2 Algunas Clases
GUÍA BÁSICA DE SCHEME v.4
Esta guía básica pretende ser una introducción elemental al lenguaje de programación Scheme. Se presenta como una guía de comienzo rápido de tal forma que permita conocer de una forma muy esquemática los
Proyecto de grado: Implementación de un sistema de fusión. Informe final
Proyecto de grado: Implementación de un sistema de fusión Informe final Facundo Domínguez Tutor: Dr. Alberto Pardo Instituto de Computación Carrera de Ingeniería en Computación Facultad de Ingeniería Universidad
Definición 1 Un semigrupo es un conjunto E provisto de una operación binaria asociativa sobre E, se denota por (E, ).
ALGEBRA La primera parte del presente libro está dedicada a las estructuras algebraicas. En esta parte vamos a iniciar agregándole a los conjuntos operaciones. Cuando las operaciones tienen determinadas
Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR
Estructuras de Datos Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR ...but note that an implementation need not be actualized as code a concrete design is sufficient. Chris Okasaki
Programación Funcional en Haskell
Programación Funcional en Haskell Paradigmas de Lenguajes de Programación 1 cuatrimestre 2006 1. Expresiones, valores y tipos Un programa en lenguaje funcional consiste en definir expresiones que computan
Nota 2. Luis Sierra. Marzo del 2010
Nota 2 Luis Sierra Marzo del 2010 Cada mecanismo de definición de conjuntos que hemos comentado sugiere mecanismos para definir funciones y probar propiedades. Recordemos brevemente qué son las funciones
Guía 2: Funciones, listas, recursión e inducción
Introducción a los Algoritmos - 2do cuatrimestre 2016 Guía 2: Funciones, listas, recursión e inducción El objetivo de los siguientes ejercicios es continuar aprendiendo programación funcional, es decir,
DEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta
DEPARTAMENTO DE MATEMATICAS Y FISICA Matemáticas Discreta SUCESIONES Y RELACIONES DE RECURRENCIA Esta última sección la dedicamos a presentar el concepto de recurrencia, que esta muy ligado al axioma de
Semana03[1/17] Funciones. 16 de marzo de Funciones
Semana03[1/17] 16 de marzo de 2007 Introducción Semana03[2/17] Ya que conocemos el producto cartesiano A B entre dos conjuntos A y B, podemos definir entre ellos algún tipo de correspondencia. Es decir,
Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009
Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier
Definición 1.1 Sea G un conjunto. Una operación binaria en G es una aplicación m: G G G.
1 Definición y propiedades Definición 1.1 Sea G un conjunto. Una operación binaria en G es una aplicación m: G G G. Definición 1.2 Sea G un conjunto i) Si G tiene una operación binaria definida en G, se
Continuidad. 5.1 Continuidad en un punto
Capítulo 5 Continuidad 5.1 Continuidad en un punto Definición 5.1.1 (Aplicación continua en un punto). Sean (X, τ) e (Y, τ ) dos espacios topológicos, y sea f : X Y una aplicación entre ellos. Diremos
Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof.
Árboles Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof. Paula Echenique Una de las estructuras de datos más importantes
Matrices: repaso. Denotaremos con M m n el conjunto de matrices de tamaño m n, o sea, de m filas y n columnas. Una matriz A M m n es de la forma A =
Matrices: repaso Denotaremos con M m n el conjunto de matrices de tamaño m n, o sea, de m filas y n columnas Una matriz A M m n es de la forma a 11 a 1n A = a m1 a mn Denotaremos A ij = a ij el coeficiente
Lógica y Programación
Lógica y Programación Programación funcional con Haskell Antonia M. Chávez, Carmen Graciani, Agustín Riscos Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Programación
LEYES DE COMPOSICIÓN INTERNA Y ELEMENTOS DISTINGUIDOS
LEYES DE COMPOSICIÓN INTERNA Y ELEMENTOS DISTINGUIDOS Sea una estructura formada por un conjunto A, sobre cuyos elementos se ha definido una operación o ley interna, comúnmente denotada por " * ", que
ANEXO XVII DE LA RESOLUCION N
Hoja 1 de 7 UNIVERSIDAD NACIONAL DE CÓRDOBA Facultad de Ciencias Exactas Físicas y Naturales República Argentina Programa de: Código: Informática Carrera: Materia común Res. Nº Plan: Puntos:3.5 Escuela:
Diferenciales de Orden Superior
Capítulo 10 Diferenciales de Orden Superior En este capítulo extenderemos a las funciones definidas sobre espacios normados el concepto de función r-veces diferenciable y de clase C r y obtendremos las
1. (F, +) es un grupo abeliano, denominado el grupo aditivo del campo.
Capítulo 5 Campos finitos 5.1. Introducción Presentaremos algunos conceptos básicos de la teoría de los campos finitos. Para mayor información, consultar el texto de McEliece [61] o el de Lidl y Niederreiter
LOS NUMEROS COMPLEJOS. En cursos previos se ha visto que algunas ecuaciones polinómicas- esto es, ecuaciones de la forma:
LOS NUMEROS COMPLEJOS. INTRODUCCION: En cursos previos se ha visto que algunas ecuaciones polinómicas- esto es, ecuaciones de la forma: n n a 0 + a +... + an + an = 0 () -no tienen soluciones en R. El
CONCEPTOS BASICOS DE LA TRANSFORMADA DE LAPLACE LA TRANSFORMADA DE LAPLACE
LA TRANSFORMADA DE LAPLACE Por cálculo integral sabemos que cuando vamos a determinar una integral impropia de la forma,su desarrollo se obtiene realizando un cambio de variable en el límite superior de
324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2
324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:
Estructuras Algebraicas
Tema 1 Estructuras Algebraicas Definición 1 Sea A un conjunto no vacío Una operación binaria (u operación interna) en A es una aplicación : A A A Es decir, tenemos una regla que a cada par de elementos
Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales
Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales Profesor Federico Peinado Elaboración del material José Luis Sia Federico Peinado Facultad de Informática Universidad Complutense
Construcción Modular de Mónadas con Operaciones
Construcción Modular de Mónadas con Operaciones CIFASIS / Depto de Cs. de la Computación FCEIA - Universidad Nacional de Rosario JCC 2010 En esta charla Estructuración de programas usando mónadas Transformadores
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002
Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Ejercicios Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto
EL42A - Circuitos Electrónicos
ELA - Circuitos Electrónicos Clase No. 24: Amplificadores Operacionales (1) Patricio Parada pparada@ing.uchile.cl Departamento de Ingeniería Eléctrica Universidad de Chile 3 de Noviembre de 2009 ELA -
PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07
PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal
EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL
EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL María Alpuente y María José Ramírez 1 LENGUAJES Y PARADIGMAS: INTRODUCCIÓN 1. Indica cuál de las siguientes
Tema 2: Teorema de estructura de los grupos abelianos finitamente generados.
ESTRUCTURAS ALGEBRAICAS GRADO EN MATEMÁTICAS. CURSO 215/216 Tema 2: Teorema de estructura de los grupos abelianos finitamente generados. 1.1. Grupo abeliano libre. Bases. Definición 1.1. El grupo Z n con
Funciones y Cardinalidad
Funciones y Cardinalidad Definición 1 Llamaremos función f entre dos conjuntos A y B a una relación que verifica las siguientes propiedades: i) Dom(f) = A ii) Si (a, b), (a, c) f entonces b = c Dicho de
Recordemos que utilizaremos, como es habitual, la siguiente notación para algunos conjuntos de números que son básicos.
Capítulo 1 Preliminares Vamos a ver en este primer capítulo de preliminares algunos conceptos, ideas y propiedades que serán muy útiles para el desarrollo de la asignatura. Se trata de resultados sobre
Lenguajes y Compiladores
2015 Estructura de la materia a grandes rasgos: Primera Parte: Lenguaje imperativo Segunda Parte: Lenguaje aplicativo puro, y lenguaje aplicativo con referencias y asignación Ejes de contenidos de la primer
Tema 4: Aplicaciones lineales
Águeda Mata y Miguel Reyes, Dpto de Matemática Aplicada, FI-UPM 1 Tema 4: Aplicaciones lineales Ejercicios 1 Estudia la linealidad de las siguientes aplicaciones: (a) f : R R 3, definida por f(x, y) =
MATRICES. Una matriz es un conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas.
MATRICES Una matriz es un conjunto de números o expresiones dispuestos en forma rectangular, formando filas y columnas. Cada uno de los números de que consta la matriz se denomina elemento. Un elemento
Forma binomial de números complejos (ejercicios)
Forma binomial de números complejos (ejercicios) Objetivos. Mostrar que los números reales x se pueden identificar con números complejos de la forma (x, 0), y cada número complejo (x, y) se puede escribir
Es claro que es una relación de equivalencia. Para ver que tener la misma cardinalidad y la cardinalidad están bien definidas queremos ver que
Capítulo II Cardinalidad Finita II.1. Cardinalidad Definimos I n para n N como I n = {k N : 1 k n}. En particular I 0 =, puesto que 0 < 1. Esto es equivalente a la definición recursiva { si n = 0 I n =
Inducción y recursión
Capítulo 11 Inducción y recursión Índice del Capítulo 11.1. Introducción.................................. 229 11.2. Inducción matemática............................. 230 11.3. Ayudas para pruebas por
Tema 13: Aplicaciones de programación funcional
Tema 13: Aplicaciones de programación funcional Programación declarativa (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de
Tema 3.- Predicados y sentencias condicionales
UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER
Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 9. Árboles 9.1 Árboles generales 9.2 Árboles binarios 9.3 Árboles de búsqueda 9.1 Árboles generales Un árbol es
1 Relaciones de orden
1 Relaciones de orden Sea R una relación binaria en un conjunto A. Si R satisface las propiedades reflexiva, antisimétrica y transitiva se dice que R es una relación de orden. En este caso si a y b son
TEMA 3 ÁLGEBRA DE CONMUTACIÓN
TEMA 3 ÁLGEBRA DE CONMUTACIÓN TEMA 3: Álgebra de Boole ÍNDICE. POSTULADOS DEL ÁLGEBRA DE CONMUTACIÓN 2. ÁLGEBRA DE BOOLE BIVALENTE O ÁLGEBRA DE CONMUTACIÓN 2. Teoremas del álgebra de conmutación 3. VARIABLES
NOCIONES PRELIMINARES (*) 1
CONJUNTOS NOCIONES PRELIMINARES (*) 1 Conjunto no es un término definible, pero da idea de una reunión de cosas ( elementos ) que tienen algo en común. En matemática los conjuntos se designan con letras
INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA
APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto
Tema 3. Tipos de datos simples
Tema 3. Tipos de datos simples Contenido del tema: Concepto de tipo. Tipos simples. Operadores. Expresiones. Semántica. Tipos y expresiones en lenguaje C++ Francisco J. Veredas Dpto. Lenguajes y Ciencias
Funciones. Domf = {x R f(x) B} Ranf = {f(x) x Domf} x (, 4) (4, ) 4y + 1 y. 4y + 1. > 4 = y y. > 0 = y
Funciones Una función real de variable real es una aplicación f : A B donde A,B son conjuntos de números reales. Domf = x R f(x) B Rango: El rango o imagen de la función f es un conjunto que se define
Operadores y Expresiones
Operadores y Expresiones Los programas Java constan de datos, sentencias de programas y expresiones. Una expresión es normalmente, una ecuación matemática, tal como 3 * x + 5 * z. En esta expresión, los
Anillos. a + (b + c) = (a + b) + c. 3) Existe un elemento 0 en R, el cual llamaremos cero, tal que. a + 0 = 0 + a = a para todo a en R.
Capítulo 7 Anillos 7.1 Definiciones Básicas El concepto de Anillo se obtiene como una generalización de los números enteros, en donde están definidas un par de operaciones, la suma y el producto, relacionadas
Base de datos relacional. Diccionario ABAP. Modelo Base de datos. Mundo real
El modelado de datos permite construir un esquema a partir del mundo real y llevarlo a una base de datos, este proceso se lleva a cabo mediante diferentes técnicas, en principio fue utilizado el modelo
4. Operadores Operador asignación
Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre
Estructuras algebraicas
Estructuras algebraicas Natalia Boal María Luisa Sein-Echaluce Universidad de Zaragoza 1 Relaciones binarias 11 Recordatorio Definición Dados dos conjuntos A y B se llama producto cartesiano de A por B
Conjuntos, relaciones y funciones Susana Puddu
Susana Puddu 1. Repaso sobre la teoría de conjuntos. Denotaremos por IN al conjunto de los números naturales y por ZZ al de los enteros. Dados dos conjuntos A y B decimos que A está contenido en B o también
ESTRUCTURA Y TECNOLOGÍA DE LOS COMPUTADORES I. TEMA 4 Algebra booleana y puertas lógicas
ESTRUCTURA Y TECNOLOGÍA DE LOS COMPUTADORES I TEMA 4 Algebra booleana y puertas lógicas TEMA 4. Algebra booleana y puertas lógicas 4.1 Definición de álgebra de Boole 4.2 Teoremas del álgebra de Boole 4.3
Dos matrices son iguales cuando tienen la misma dimensión y los elementos que ocupan el mismo lugar en ambas son iguales
Introducción Las matrices aparecen por primera vez hacia el año 1850, introducidas por J.J. Sylvester. El desarrollo inicial de la teoría se debe al matemático W.R. Hamilton en 1853. En 1858, A. Cayley
Programación Funcional Haskell Clase 21
Programación Funcional Haskell Clase 21 José Raymundo Marcial Romero rmarcial@fi.uaemex.mx BUAP c José Raymundo Marcial Romero. Clase Número 21 p.1/12 Temas de la clase Clase Anterior En Haskell cada expresión
EJERCICIOS del TEMA 3: Lenguajes independientes del contexto
EJERCICIOS del TEMA 3: Lenguajes independientes del contexto Sobre GICs (gramáticas independientes del contexto) 1. Sea G una gramática con las siguientes producciones: S ASB ε A aab ε B bba ba c ) d )
Métodos directos para resolver sistemas de ecuaciones lineales
Métodos directos para resolver sistemas de ecuaciones lineales Problemas para examen Si en algún problema se pide calcular el número de flops (operaciones aritméticas con punto flotante), entonces en el
Teoría de la Computabilidad
Teoría de la Computabilidad Módulo 7: Lenguajes sensibles al contexto 2016 Departamento de Cs. e Ing. de la Computación Universidad Nacional del Sur Bahía Blanca, Argentina Es este programa en Pascal sintácticamente
EL4005 Principios de Comunicaciones Clase No.24: Demodulación Binaria
EL4005 Principios de Comunicaciones Clase No.24: Demodulación Binaria Patricio Parada Departamento de Ingeniería Eléctrica Universidad de Chile 5 de Noviembre de 2010 1 of 34 Contenidos de la Clase (1)
Teoría de anillos. Dominios, cuerpos y cuerpos de fracciones. Característica de un cuerpo.
1 Tema 5.-. Teoría de anillos. Dominios, cuerpos y cuerpos de fracciones. Característica de un cuerpo. 5.1. Anillos y cuerpos Definición 5.1.1. Un anillo es una terna (A, +, ) formada por un conjunto A
Estatutos de Control C# Estatutos de Decisión (Selección)
SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente
SESIÓN 6 INTERPRETACION GEOMETRICA DE LA DERIVADA, REGLA GENERAL PARA DERIVACIÓN, REGLAS PARA DERIVAR FUNCIONES ALGEBRAICAS.
SESIÓN 6 INTERPRETACION GEOMETRICA DE LA DERIVADA, REGLA GENERAL PARA DERIVACIÓN, REGLAS PARA DERIVAR FUNCIONES ALGEBRAICAS. I. CONTENIDOS: 1. Interpretación geométrica de la derivada 2. Regla general
Lógica de Predicados de Primer Orden
Lógica de Predicados: Motivación Todo natural es entero y 2 es un natural. Luego 2 es entero. p q r p, q r es claramente un razonamiento válido pero no es posible demostrarlo desde la Lógica Proposicional
Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S
Tipos de datos en S Lógica y Computabilidad Verano 2011 Departamento de Computación - FCEyN - UBA Computabilidad - clase 5 Codificación de programas, Halting problem, diagonalización, tesis de Church,
Tema 7. Generación de código
Departamento de Tecnologías de la Información Tema 7 Generación de código Ciencias de la Computación e Inteligencia Artificial Índice 7.1 Visión general 7.2 Código de tres direcciones 2 Índice 7.1 Visión
ALGEBRA DE BOOLE George Boole C. E. Shannon E. V. Hungtington [6]
ALGEBRA DE BOOLE El álgebra booleana, como cualquier otro sistema matemático deductivo, puede definirse con un conjunto de elementos, un conjunto de operadores y un número de axiomas no probados o postulados.
Taller: Introducción a las Relaciones de Recurrencia.
Taller: Introducción a las Relaciones de Recurrencia. Déboli Alberto. Departamento de Matemática. F.C.E. y N. Universidad de Buenos Aires. Semana de la Enseñanza de la Ciencia. Buenos Aires 15 de julio
b) Sea una relación de equivalencia en A y una operación en A. Decimos que y son compatibles si a b a c b c y c a c b para todo a, b, c A
APENDICE Relaciones y Operaciones Compatibles 1 Definición: a) Sea A un conjunto y una relación entre elementos de A. Decimos que es una relación de equivalencia si es: i Reflexiva: a A, a a. ii Simétrica:
Guía. Álgebra II. Examen parcial III. Transformaciones lineales. Teoremas los más importantes cuyas demostraciones se pueden incluir en el examen
Guía. Álgebra II. Examen parcial III. Transformaciones lineales. Teoremas los más importantes cuyas demostraciones se pueden incluir en el examen 1. Teorema de la representación matricial de una transformación
Tema 3 - Modelado con HDL a nivel RTL
- Modelado con HDL a nivel RTL Eduardo Rodríguez Martínez Departamento de Electrónica División de Ciencias Básicas e Ingeniería Universidad Autónoma Metropolitana Unidad Azcapotzalco Email: erm@correo.azc.uam.mx
Capitulo VI: Funciones.
Funciones o Aplicaciones: Capitulo VI: Funciones. Ejemplo de función: Sean: A = {, 2, 3 } B = { a, b, c, d, e } F = { (;a) (2;b) (3;e) } es una función de A en B, porque a cada elemento de A, le corresponde
Tema 2: El grupo de las permutaciones
Tema 2: El grupo de las permutaciones Miguel Ángel Olalla Acosta miguelolalla@us.es Departamento de Álgebra Universidad de Sevilla Octubre de 2014 Olalla (Universidad de Sevilla) Tema 2: El grupo de las
Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.
Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Sintaxis Define la estructura del lenguaje Ejemplo: Jerarquía en
Semana05[1/14] Relaciones. 28 de marzo de Relaciones
Semana05[1/14] 28 de marzo de 2007 Introducción Semana05[2/14] Ya en los capítulos anteriores nos acercamos al concepto de relación. Relación Dados un par de conjuntos no vacíos A y B, llamaremos relación
Masa y composición isotópica de los elementos
Masa y composición isotópica de los elementos www.vaxasoftware.com Z Sím A isótopo Abndancia natral Vida Prodcto 1 H 1 1,00782503207(10) 99,9885(70) 1,00794(7) estable D 2 2,0141017780(4) 0,0115(70) estable
El lenguaje C. 1. Identificadores, constantes y variables
Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria
Algebra lineal y conjuntos convexos
Apéndice A Algebra lineal y conjuntos convexos El método simplex que se describirá en el Tema 2 es de naturaleza algebraica y consiste en calcular soluciones de sistemas de ecuaciones lineales y determinar
Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1
Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos
Definición Dados dos números naturales m y n, una matriz de orden o dimensión m n es una tabla numérica rectangular con m filas y n columnas.
Tema 1 Matrices 1.1. Conceptos básicos y ejemplos Definición 1.1.1. Dados dos números naturales m y n, una matriz de orden o dimensión m n es una tabla numérica rectangular con m filas y n columnas. NOTA:
Descripción y Contenido del Curso. Programación C++ Capacity Academy.
Descripción y Contenido del Curso Programación C++ Capacity Academy Educación en Tecnología de la Información Online, Efectiva y Garantizada Qué aprenderá si toma este Curso? En este curso aprenderás todo
Derivadas Parciales (parte 2)
40 Derivadas Parciales (parte 2) Ejercicio: Si donde y. Determinar Solución: Consideraremos ahora la situación en la que, pero cada una de las variables e es función de dos variables y. En este caso tiene
Estructuras de Control. Secuencia y Selección
Estructuras de Control. Secuencia y Selección InCo - FING Programación 1 InCo - FING Estructuras de Control. Secuencia y Selección Programación 1 1 / 35 Estructuras de control InCo - FING Estructuras de
CONTINUIDAD DE FUNCIONES. SECCIONES A. Definición de función continua. B. Propiedades de las funciones continuas. C. Ejercicios propuestos.
CAPÍTULO IV. CONTINUIDAD DE FUNCIONES SECCIONES A. Definición de función continua. B. Propiedades de las funciones continuas. C. Ejercicios propuestos. 121 A. DEFINICIÓN DE FUNCIÓN CONTINUA. Una función
FUNCIONES DE UNA VARIABLE
FUNCIONES DE UNA VARIABLE 1- Definiciones 2- Algunas funciones reales 3- Ecuaciones de curvas planas en coordenadas cartesianas 4- Coordenadas polares 5- Coordenadas paramétricas 6- Funciones hiperbólicas
Álgebras de Boole. Definición 1 Un álgebra de Boole es un conjunto parcialmente ordenado (B, ) que verifica las siguientes condiciones:
Álgebras de Boole Sea (P, ) un conjunto parcialmente ordenado y sea S un subconjunto de P. Una cota superior de S es un elemento c P tal que s c para todo s S. Una cota inferior de S es un elemento d P
Transformaciones lineales
Semana 8 [1/62] 8 de septiembre de 27 Definiciones básicas Semana 8 [2/62] Definición Transformación lineal U, V dos espacios vectoriales sobre el mismo cuerpo Ã. T : U V es una transformación (o función)
1 Ecuaciones diferenciales
1 Ecuaciones diferenciales La solución a una ecuación algebraica es un número, o un conjunto de números que satisfacen la ecuación. Por ejemplo las soluciónes de x 2 4x + 3 = 0 son x 0 = 1 y x 1 = 3. Las
Secuencias. Mauro Jaskelioff 18/05/2015
Secuencias Mauro Jaskelioff 18/05/2015 Secuencias Seq es un TAD para representar secuencias de elementos. A continuación veremos algunas de sus operaciones y las especificaremos en términos de la noción
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan