En 1936 se introdujeron dos modelos computacionales: Alan Turing inventó la máquina de Turing y la noción de función computable en sus

Tamaño: px
Comenzar la demostración a partir de la página:

Download "En 1936 se introdujeron dos modelos computacionales: Alan Turing inventó la máquina de Turing y la noción de función computable en sus"

Transcripción

1 Capítulo 1 Cálculo-λ En 1936 se introdujeron dos modelos computacionales: Alan Turing inventó la máquina de Turing y la noción de función computable en sus máquinas. Alonzo Church inventó un sistema formal llamado Cálculo-λ y la noción de función computable en su sistema. Los lenguajes imperativos como Pascal, C, etc., así como el lenguaje ensamblador están basados en la máquina de Turing. Los lenguajes funcionales como ML, Miranda, Haskell etc., están basados en el cálculo-λ. Objetivo: Introducir el cálculo-λ y mostrar como este sistema captura todas las funciones computables Sintaxis: donde: x pertenece a un conjunto de variables. M ::= x λx.m MM λx.m representa la función cuyo argumento es x y cuya especificación es M (se les conoce como abstracciones). M 1 M 2 representa la aplicación de M 1 a M 2 (se les conoce como aplicaciones) Términos que corresponde en Java a: λx.x

2 2 Cálculo-λ public int id(int x){return x;} o en C a: int id(int x){return x;} 1.3. Asociaciones LM N se asocia hacía la izquierda λx.λy.m se asocia hacia la derecha λx.λy.xyz una aplicación tiene precedencia sobre una abstracción. si M,N son las expresiones respectivamente entonces y no M λx.x ((LM)N) (λx.(λy.m)) λx.λy.((xy)z) MN = (λx.x)y λx.(xy) Ejemplos: Decidir si son términos bien formados y asociar. Expresiones λ: λx.λy.xyλz.z λx.λy.λz.xzyz λx.λy.λz.xz(yz) λx.λy.λz.x(zy)z N y Más reglas: Para simplificar la notación los siguientes términos se tomarán como equivalentes: Considerando los ejemplos anteriores: λx.λy.xyλz.z λxy.xyλz.z λx.λy.λz.xzyz λxyz.xzyz λx.λy.λz.xz(yz) λxyz.xz(yz) λx.λy.λz.x(zy)z λxyz.x(zy)z λx 1.(λx 2.(...(λx n.m)...)) λx 1 x 2...x n.m

3 1.4 Variables Variables Conjunto de variables libres El conjunto de variables libres se define de manera inductiva como: FV (x) = {x} FV (λx.m) = FV (M) {x} FV (M 1 M 2 ) = FV (M 1 ) FV (M 2 ) Conjunto de variables acotadas El conjunto de variables acotadas se define de manera inductiva como: BV (x) = BV (λx.m) = BV (M) {x} BV (M 1 M 2 ) = BV (M 1 ) BV (M 2 ) 1.5. Término cerrado Un término M se llama cerrado si FV (M) =. En caso contrario el término se conoce como abierto. Note que los conjuntos de variables acotadas y libres no son necesariamente disjuntas; por ejemplo x(λxy.x) Considera el término: λxy.xyz Donde x y y son variables acotadas y z es una variable libre. El término λxy.xxy es cerrado. Subtérminos: Subtérminos de un término Un subtérmino de un término-λ es alguna parte del término que esta bien formada de acuerdo a la gramática. El conjunto de subtérminos se puede definir de la siguiente manera Sub :: T PT Sub(x) = {x} Sub(λx.M) = Sub(M) {(λx.m)} Sub(M 1 M 2 ) = Sub(M 1 ) Sub(M 2 ) {M 1 M 2 } Ejemplos: Calcular el conjunto de variables libres, acotadas y subtérminos de las siguientes expresiones λ λx.λy.xyλz.z

4 4 Cálculo-λ λx.λy.λz.xzyz λx.λy.λz.xz(yz) λx.λy.λz.x(zy)z 1.6. Conversión En esta sección introducimos el cáculo-λ de manera formal Definición El conjunto de términos-λ (notación Λ) se construye a partir de un conjunto infinito de variables V = x 1,x 2,x 3,... usando aplicación y abstracción. Ejemplos: Los siguientes son términos-λ x V x Λ M,N Λ (MN) Λ M Λ,x V (λx.m) Λ y (yx) 1.7. Sustitución Asumiendo que M y N son términos-λ y x una variable, la expresión se lee: M[x := N] sustituir las ocurrencias libres de la variable x por N en M. En algunos libros también se representa mediante {N/x}M. Definición inductiva de M[x := N]: 1. x[x := N] N; 2. y[x := N] y siempre que y x; 3. (PQ)[x := N] (P[x := N])(Q[x := N]);

5 1.8 Cambio de Variable: Axioma α 5 4. (λy.p)[x := N] λy.(p[x := N]), siempre que y x y y FV (N); 5. (λx.p)[x := N] (λx.p). Ejemplos λy.yz[z := λx.wx] λy.yz[z := λx.yx] 1.8. Cambio de Variable: Axioma α Definición Cambio de variables acotadas: M se genera a partir de M por un cambio de las variables acotadas si M λx.n y M λy.(n[x := y]) donde y no ocurre para nada en N. Axioma α M es α-equivalente a N, se escribe como M α N, si N es el resultado de aplicar a M una serie de cambios de variables acotadas. Es decir: λx.m = λy.m[x := y], siempre que y no ocurra en M. Ejemplo: Cuales expresiones son α-equivalentes?: λx.xy? α λz.zy λx.xy? α λy.yy Regla para la sustitución: (λxyz.x(λy.yz)w)? α (λtuv.t(λz.zv))w Si se desea sustituir M[x := N] no importando que términos denotan M y N, verifique que todas las variables acotadas de M sean diferentes de las variables libres de N. Si lo anterior no se cumple, aplique un cambio de variable en N o bien sustituya a M por un término α-equivalente, hasta que se cumpla el criterio anterior. Posteriormente se pueden aplicar las reglas de sustitución. Ejemplos: λy.yz[z := λx.yx] (λxyz.xzy)[x := λxz.x] (λxyz.xzy)(λxz.x) = (λyz.(λxw.x)zy) = (λyz.(λw.z)y) = (λyz.z)

6 6 Cálculo-λ 1.9. Teoría ecuacional del cálculo-λ (λx.m)n = M[x := N] regla β Relaciones de equivalencia: Reflexiva M = M Simétrica Transitiva: Otras reglas: M = N N = M M = N N = L M = L M = N MZ = NZ M = N ZM = ZN M = N λx.m = λx.n regla ξ Semántica operacional La evaluaci de una expresió se compone de pasos de reducción donde cada uno de los pasos se obtiene por reescritura: e e Partimos de un estado inicial (e) y mediante un proceso de reescritura (reducción) se obtiene un estado final. Cada reducción de e, reemplaza cierta subexpresión de acuerdo con ciertas reglas; tales subexpresiones se llaman redex (reducible expression). Se considera terminada la reducción cuando ya no hay más redex.

7 1.11 reducciones-λ reducciones-λ Las reglas de reescritura que se utilizan para reescribir un redex son: α-reduccíon β-reduccíon η-reduccíon La η-reducción (también llamada extensionalidad) expresa la idea de que dos funciones son lo mismo si dan el mismo resultado para todos sus argumentos λx.mx η M El λ-término λx.m x es un η-redex, es decir, se puede reducir mediante una η-reducción. También se dice que M se expande o se extiende a λx.mx. Ejemplos: λxy. + yx η λy. + y η + λx.(λy.y)x η λy.y Forma normal Si M = N es demostrable en el cálculo-λ, entonces se denota como λ M = N o sólo como M = N y se dice que M y N son β-reemplazables. M N denota que M y N son el mismo término o que uno se puede obtener a partir del otro a través de renombrar variables acotadas. Ejemplo: (λx.y)z (λx.y)z (λx.x)z (λy.y)z (λx.x)z (λx.y)z Definición: Forma Normal Si M es un término-λ, entonces M está en forma normal si, M no tiene subtérminos de la forma (λx.r)s Si M es un término-λ, entonces M tiene una forma normal si, existe un N tal que N = M y N esta en forma normal. Un λ-término está en forma normal si no contiene ningún redex. Si un λ-término M se reduce a una λ-término N en forma normal, es decir, M N. decimos que N es una forma normal de M. Ejemplo:

8 8 Cálculo-λ λx.x esta en forma normal. (λxy.x)(λx.x) no esta en forma normal, cuál es su forma normal?. (λx.xx)(λy.yy) no tiene una forma normal! Porqué? Teorema (de Church-Rosser) Para todo λ-término M, si M P y M Q, existe un λ-término E, tal que P E y Q E (propiedad del diamante). Si una secuencia M... termina, entonces lo hace en una forma normal. Es decir, M admite forma normal Combinadores estandar Define los combinadores: I λx.x, K λxy.y, K λxy.x, S λxyz.xz(yz), demostrar si las siguientes ecuaciones son válidas en el cálculo lambda: IM = M, KMN = M, K MN = N, SMNL = ML(NL), En el cálculo-λ se pueden representar expresiones booleanas T K λxy.x F K λxy.y if B then P else Q BPQ. T representa true, verdadero y F representa false, falso. Demuestre que if true then P else Q = P if false then P else Q = Q

9 1.14 Operaciones aritmeticas 9 Operadores lógicos not λt.tft and λxy.xyf or λxy.xty Imp λxy.xyt Demuestre: Las tablas de valores de verdad de cada conectivo Proponga el termino-λ para bicondicional y verifique su tabla de valores de verdad Ejercicios en clase En el cálculo-λ se pueden representar pares (a,b) = λx.if x then a else b fst λp.p true snd λp.p false. Demuestre que fst(a,b) = a snd(a,b) = b Operaciones aritmeticas En el cálculo-λ también se pueden representar numerales (de hecho existe más de una forma aquí se presenta la propuesta de Scott): 0 λxy.x 1 λxy.y 0 2 λxy.y 1 i.e n λxy.y(n 1) También se pueden representar funciones entre numerales succ λzxy.yz

10 10 Cálculo-λ pred λz.z 0(λx.x) iszero λz.z true(λx.false) Demostrar que: succ 2 = 3 pred 1 = 0 iszero 1 = F Numerales de Church 0 c 0 λs.λz.z; 1 c 1 λs.λz.sz; 2 c 2 λs.λz.s(sz); 3 c 3 λs.λz.s(s(sz)); etc. Cada número es representado por un combinador c n que toma dos argumentos, s y z (para sucesor y cero), y aplica s, n veces, a z. Sucesor Definiciones: Se define la función sucesor sobre los numerales de Church como sigue: scc λn.λs.λz.s(nsz) El término scc es un combinador que toma un numeral de Church n y regresa otro numeral de Church - es decir, nos da una función que toma argumentos s y z y aplica s repetidamente a z. Obtenemos el numero a la derecha de aplicaciones de s a z por primero pasar s y z como argumentos a n, y entonces explicitamente aplicamos s una vez más al resultado. La función sucesor aplicada a nuestra representación para cero da: scc λw.λy.λx.y(wyx) scc0 (λw.λy.λx.y(wyx))(λs.λz.z) = λy.λx.y((λs.λz.z)yx) = λy.λx.y((λz.z)x) = λy.λx.y(x) 1 Ejercicio: scc1 = 2 Observa que el proposito de aplicar el número λs.λz.s(z) a los argumentos y y x es sólo para renombrar las variables usadas en la definición del numero.

11 1.14 Operaciones aritmeticas 11 Suma Utilizando la definición anterior de scc, definimos la suma de = 5: 2scc3 = scc(scc3) = scc4 = 5 Similarmente, la suma de numerales de Church pude ejecutarse por un termino plus que toma dos numerales Church, m y n, como argumentos, y da otro numeral Church (función) que acepta argumentos s y z, aplica s iterando n veces a z (pasando s y z como argumentos a n), y entonces aplica s iterando m veces mas al resultado: Producto plus λm.λn.λs.λz.ms(nsz) La multiplicación de dos numeros x y y puede computarse usando la siguiente función: Ejemplo: El producto de 2 por 2 es: (λxyz.x(yz))22 = λz,2(2z) =... = 4 Otra forma de representar el producto es: prod λxyz.x(yz) times λm.λn.m(plus n)c 0 Ejercicio: Obtenga el resultado de times 2 1 = 2 Potencia excepto para m = 0 Ejercicio: exp 2 1 = 2 Demostrar que: exp λxy.yx succ 2 = 3 plus 1 0 = 1 times 1 2 = 2

Contenido del curso Fundamentos de Lenguajes de Programación

Contenido del curso Fundamentos de Lenguajes de Programación Contenido del curso Fundamentos de Lenguajes de Programación MC Mireya Tovar Vidal FCC- BUAP Cubículo 5 mtovar@cs.buap.mx Horario de atención: martes 11:00-12:00 Cálculo lambda sin tipos Cálculo lambda

Más detalles

Introducción al Cálculo Lambda

Introducción al Cálculo Lambda Introducción al Cálculo Lambda Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Universidad Veracruzana Facultad de Física e Inteligencia Artificial Sebastián Camacho No 5, Xalapa,

Más detalles

Lambda-Cálculo. Mauro Jaskelioff 6/9/2011

Lambda-Cálculo. Mauro Jaskelioff 6/9/2011 Lambda-Cálculo Mauro Jaskelioff 6/9/2011 Origen del λ-cálculo El λ-cálculo fue inventado por Alonzo Church en la década de 1930. Originalmente fue inventado como parte de un sistema formal para modelar

Más detalles

Introducción al lambda cálculo

Introducción al lambda cálculo Introducción al lambda cálculo Del libro: An Introduction to Lambda Calculi for Computer Scientists, Chris Hankin Diciembre 2007 Algoritmos Qué es un algoritmo? distintos modelos de cómputo: Algoritmos

Más detalles

Lenguajes funcionales: λ-cálculo

Lenguajes funcionales: λ-cálculo Lenguajes funcionales: λ-cálculo λ-cálculo (Church 1933) Cálculo para el estudio formal del comportamiento de las funciones Sintaxis: λ expresiones Reglas de reducción de λ expresiones Método matemático

Más detalles

Lambda cálculo no tipado

Lambda cálculo no tipado Capítulo 1 Lambda cálculo no tipado Vamos a revisar la definición y propiedades básicas del lambda cálculo puro o no tipado. A mediados de los 60s, Peter Landin observó que un lenguaje de programación

Más detalles

PARADIGMAS DE PROGRAMACIÓN CALCULO LAMBDA CALCULO LAMBDA

PARADIGMAS DE PROGRAMACIÓN CALCULO LAMBDA CALCULO LAMBDA PARADIGMAS DE PROGRAMACIÓN 2006 CALCULO LAMBDA CALCULO LAMBDA El cálculo lambda fue desarrollado por Alonso Church en la década del 30 con el objeto de dar una teoría general de las funciones. El cálculo

Más detalles

Facultad de Ciencias de la Computación. Cálculo Lambda Reducción β Transformación:Gelfond-Lifchitz. Dr. Fernando Zacarías Flores

Facultad de Ciencias de la Computación. Cálculo Lambda Reducción β Transformación:Gelfond-Lifchitz. Dr. Fernando Zacarías Flores Facultad de Ciencias de la Computación Cálculo Lambda Reducción β Transformación:Gelfond-Lifchitz Dr. Fernando Zacarías Flores Primavera 2014 Cálculo-λ Antonio Almazán Faura Lidia Quintana Pancorbo Índice

Más detalles

Introducción al Lambda Cálculo (C)

Introducción al Lambda Cálculo (C) Introducción al Lambda Cálculo (C) Francisco Rafael Yépez Pino Programación Declarativa Avanzada Introducción al -Cálculo: 1. δ-reducciones y -reducciones 1.1. Teorías 1.2. Eta-conversión y extensionalidad

Más detalles

El λ cálculo (sin tipos y con tipos)

El λ cálculo (sin tipos y con tipos) El λ cálculo (sin tipos y con tipos) Blas Carlos Ruiz Jiménez Pablo Guerrero García Dpto. de Lenguajes y Ciencias de la Computación Dpto. de Matemática Aplicada Universidad de Málaga Pza. El Ejido s/n,

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

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

Más detalles

Definiciones de computabilidad OTROS MODELOS COMPUTACIONALES. Computabilidad-Turing. Tesis de Church-Turing

Definiciones de computabilidad OTROS MODELOS COMPUTACIONALES. Computabilidad-Turing. Tesis de Church-Turing Definiciones de computabilidad OTROS MODELOS COMPUTACIONALES Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx Página Web: www.matematicas.unam.mx/fhq

Más detalles

Guía 4: Demostraciones en Cálculo Proposicional

Guía 4: Demostraciones en Cálculo Proposicional Introducción a los Algoritmos - 2do. cuatrimestre 2014 Guía 4: Demostraciones en Cálculo Proposicional Docentes: Walter Alini y Luciana Benotti. El objetivo principal de esta guía es lograr un buen entrenamiento

Más detalles

Lambda Cálculo Tipado (1/3)

Lambda Cálculo Tipado (1/3) Lambda Cálculo Tipado (1/3) Eduardo Bonelli Departamento de Computación FCEyN UBA There may, indeed, be other applications of the system other than its use as a logic Alonzo Church, 1932 3 de abril, 2007

Más detalles

LAMBDA-CÁLCULO NO TIPADO

LAMBDA-CÁLCULO NO TIPADO SISTEMAS NO TIPADOS LAMBDA-CÁLCULO NO TIPADO Convenciones: 1. La aplicación es asociativa por la izquierda 2. Los cuerpos de las abstracciones son asociativas por la derecha Estrategias de evaluación en

Más detalles

Tecnología de la Programación

Tecnología de la Programación Tecnología de la Programación Semántica Operacional David Cabrero Souto Facultad de Informática Universidade da Coruña Curso 2007/2008 Verificación formal Recordar descriptores BOE: Diseño de algoritmos

Más detalles

Cálculo Lambda - primera parte. Paradigmas de Lenguajes de Programación. Primer cuatrimestre

Cálculo Lambda - primera parte. Paradigmas de Lenguajes de Programación. Primer cuatrimestre Cálculo Lambda - primera parte Paradigmas de Lenguajes de Programación Primer cuatrimestre - 2014 Para qué sirve el cálculo lambda? Provee un modelo de cómputo simple que permite representar todas las

Más detalles

Nociones Básicas de Sémantica: Semántica Denotacional

Nociones Básicas de Sémantica: Semántica Denotacional Nociones Básicas de Sémantica: Semántica Denotacional Análisis de Lenguajes de Programación Mauro Jaskelioff 21/08/2015 Acerca de la Semántica Operacional En la semántica operacional el significado de

Más detalles

Capítulo 2: Asistentes de Pruebas para Programadores 3. Cálculo de Construcciones

Capítulo 2: Asistentes de Pruebas para Programadores 3. Cálculo de Construcciones Capítulo 2: Asistentes de Pruebas para Programadores 3. Cálculo de Construcciones InCo CFPTT - 3.1 1. Cálculo simplemente tipado Sintaxis Términos e ::= x x.e (e 1 e 2 ) c Tipos ::= t 1 2 x Var c Const

Más detalles

Bases Formales de la Computación

Bases Formales de la Computación Bases Formales de la Computación Pontificia Universidad Javeriana 12 de septiembre de 2008 CÁLCULOS DE PROCESOS Contenido 1 2 Sistemas Concurrentes Múltiples agentes (procesos) que interactuan entre ellos.

Más detalles

LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Sintaxis y semántica

LÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Sintaxis y semántica LÓGICA FORMAL TEORIAS DE PRIMER ORDEN Sintaxis y semántica Pedro López Departamento de Inteligencia Artificial Facultad de Informática Universidad Politécnica de Madrid Lenguajes de primer orden 1 La lógica

Más detalles

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional CAPÍTULO IV: Programación Funcional 4.1 Introducción a la Programación Funcional 1 Programación Funcional Paradigma diferente a los imperativos, que se aleja de la máquina de von Neumann Basado en funciones

Más detalles

Ciencias de la Computación I

Ciencias de la Computación I Ciencias de la Computación I Gramáticas Regulares Expresiones Regulares Gramáticas - Intuitivamente una gramática es un conjunto de reglas para formar correctamente las frases de un lenguaje - Por ejemplo,

Más detalles

Cálculo Lambda - primera parte. Paradigmas de Lenguajes de Programación. Segundo cuatrimestre

Cálculo Lambda - primera parte. Paradigmas de Lenguajes de Programación. Segundo cuatrimestre Cálculo Lambda - primera parte Paradigmas de Lenguajes de Programación Segundo cuatrimestre - 2010 Tipos y términos Las expresiones de tipos (o simplemente tipos) de C-λ b son σ ::= Bool σ τ Sea X un conjunto

Más detalles

Ciencias de la Computación I

Ciencias de la Computación I Ciencias de la Computación I Gramáticas Libres del Contexto y Lenguajes Libres del Contexto Gramáticas Formales Una gramática formal es una cuadrupla G = (N, T, P, S) N = conjunto finito de símbolos no

Más detalles

Lógica Proposicional

Lógica Proposicional Proposicional Disciplina matemática Disciplina formal Se razona sobre la estructura de las cosas Se quiere estudiar el razonamiento, y no las verdades contingentes Se quiere estudiar la noción de consecuencia

Más detalles

Práctico 6 Lógica de Predicados

Práctico 6 Lógica de Predicados Práctico 6 Lógica de Predicados Ejercicio 1 Considere un conjunto A de números reales que incluya al 0. Considere un lenguaje de primer orden con un símbolo de relación binario M que denota la relación

Más detalles

CÁLCULO LAMBDA. Motivación: notación para no necesitar nombrar funciones. Por ejemplo, x + y puede ser: f(x) = x + y g(y) = x + y h(x, y) = x + y

CÁLCULO LAMBDA. Motivación: notación para no necesitar nombrar funciones. Por ejemplo, x + y puede ser: f(x) = x + y g(y) = x + y h(x, y) = x + y CÁLCULO LAMBDA Motivación: notación para no necesitar nombrar funciones. Por ejemplo, x + y puede ser: f(x) = x + y g(y) = x + y h(x, y) = x + y La notación lambda permite expresar sin dar nombre: λx.x

Más detalles

Guía 4: Demostraciones en Cálculo Proposicional

Guía 4: Demostraciones en Cálculo Proposicional Introducción a los Algoritmos - 1er. cuatrimestre 2015 Guía 4: Demostraciones en Cálculo Proposicional Cálculo Proposicional Tomando ideas de E. W. Dijkstra (EWD-999), proponemos el uso de lo que llamamos

Más detalles

CIENCIAS FORMALES CIENCIAS FÁCTICAS

CIENCIAS FORMALES CIENCIAS FÁCTICAS UNA CLASIFICACIÓN DE LAS CIENCIAS CIENCIAS FORMALES CIENCIAS FÁCTICAS CIENCIAS FORMALES MATEMÁTICA LÓGICA CIENCIAS FÁCTICAS FÍSICA BIOLOGÍA QUÍMICA CIENCIAS SOCIALES OTRAS CIENCIAS FORMALES VOCABULARIO

Más detalles

Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca

Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca Aplicación de la Inducción Matemática Programación Funcional Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca Motivación Programación Imperativa Declarativa Procedimental Ejemplo:

Más detalles

Análisis lógico Cálculo de proposiciones

Análisis lógico Cálculo de proposiciones Sintaxis Semántica Sistemas de demostración Análisis lógico Cálculo de proposiciones Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx Página Web: www.matematicas.unam.mx/fhq

Más detalles

Introducción a Haskell. Cecilia Manzino

Introducción a Haskell. Cecilia Manzino Paradigmas de programación Un paradigma de programación representa un estilo particular o filosofía para la construcción del software. Los más comunes dan lugar a los siguientes tipos de programación:

Más detalles

Lenguajes de Programación Programación funcional

Lenguajes de Programación Programación funcional Lenguajes de Programación Programación funcional Roberto Bonvallet Departamento de Informática Universidad Técnica Federico Santa María Concepto de función En el paradigma imperativo: Una función es una

Más detalles

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28 Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes

Más detalles

ESPECIFICACIÓN DE SÍMBOLOS

ESPECIFICACIÓN DE SÍMBOLOS 1 UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE COMPUTACIÓN ESPECIFICACIÓN DE SÍMBOLOS Elaborado el Sábado 24 de Julio de 2004 I.- COMPONENTES LÉXICOS, PATRONES Y LEXEMAS (extraído de

Más detalles

Algoritmos en teoría de números

Algoritmos en teoría de números Algoritmos en teoría de números IIC2283 IIC2283 Algoritmos en teoría de números 1 / 92 Para recordar: aritmética modular Dados dos números a, b Z, si b > 0 entonces existen α, β Z tales que 0 β < b y a

Más detalles

Teoría de Autómatas y Lenguajes Formales.

Teoría de Autómatas y Lenguajes Formales. Teoría de Autómatas y Lenguajes Formales Prueba de Evaluación de Lenguajes Regulares, Autómatas a Pila y Máquinas de Turing. Autores: Araceli Sanchis de Miguel Agapito Ledezma Espino Jose A. Iglesias Martínez

Más detalles

Tema II: Introducción al Lenguaje Funcional

Tema II: Introducción al Lenguaje Funcional Tema II: Introducción al Lenguaje Funcional Características de Haskell Lenguaje funcional de o. superior fuertemente tipificado. Clasifica los entes de un programa en: objetos (constantes y funciones)

Más detalles

Introducción a la Lógica

Introducción a la Lógica Tema 0 Introducción a la Lógica En cualquier disciplina científica se necesita distinguir entre argumentos válidos y no válidos. Para ello, se utilizan, a menudo sin saberlo, las reglas de la lógica. Aquí

Más detalles

Isabelle como un lenguaje funcional

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

Más detalles

Práctica 1 Lambda Cálculo Tipado

Práctica 1 Lambda Cálculo Tipado Práctica 1 Lambda Cálculo Tipado Eduardo Bonelli TP para LP 2012C1 Ejercicio 1 Probar que el conjunto de las β-formas normales se pueden describir como sigue N ::= λx 1... λx n.y N 1... N m. Ejercicio

Más detalles

Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES. Funciones boolenas. Semántica

Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES. Funciones boolenas. Semántica Proposiciones atómicas y compuestas Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@cienciasunammx Página

Más detalles

Conjuntos, relaciones de equivalencia y aplicaciones

Conjuntos, relaciones de equivalencia y aplicaciones CAPíTULO 1 Conjuntos, relaciones de equivalencia y aplicaciones 1. Conjuntos La idea de conjunto es una de las más significativas en Matemáticas. La mayor parte de los conceptos matemáticos están construidos

Más detalles

Álgebra Lineal y Estructuras Matemáticas. J. C. Rosales y P. A. García Sánchez. Departamento de Álgebra, Universidad de Granada

Álgebra Lineal y Estructuras Matemáticas. J. C. Rosales y P. A. García Sánchez. Departamento de Álgebra, Universidad de Granada Álgebra Lineal y Estructuras Matemáticas J. C. Rosales y P. A. García Sánchez Departamento de Álgebra, Universidad de Granada Capítulo 1 Conjuntos, relaciones y aplicaciones 1. Conjuntos La idea de conjunto

Más detalles

Tema 4. Funciones de orden superior

Tema 4. Funciones de orden superior Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 4. Funciones de orden superior 4.1 Funciones de orden superior 4.2 Expresiones lambda 4.3

Más detalles

Lógica Proposicional IIC1253. IIC1253 Lógica Proposicional 1/64

Lógica Proposicional IIC1253. IIC1253 Lógica Proposicional 1/64 Lógica Proposicional IIC1253 IIC1253 Lógica Proposicional 1/64 Inicio de la Lógica Originalmente, la Lógica trataba con argumentos en el lenguaje natural. Ejemplo Es el siguiente argumento válido? Todos

Más detalles

12 OTRO MUNDO ES POSIBLE: AL

12 OTRO MUNDO ES POSIBLE: AL 12 OTRO MUNDO ES POSIBLE: AL En este capítulo presentaremos AL [12], un lenguaje tipificado para expresar algoritmos Este lenguaje tiene como objetivo expresar de manera precisa problemas computacionales,

Más detalles

Conjuntos, Aplicaciones y Relaciones

Conjuntos, Aplicaciones y Relaciones Conjuntos, Aplicaciones y Relaciones Curso 2017-2018 1. Conjuntos Un conjunto será una colección de objetos; a cada uno de estos objetos lo llamaremos elemento del conjunto. Si x es un elemento del conjunto

Más detalles

Lógica Proposicional IIC2213. IIC2213 Lógica Proposicional 1/42

Lógica Proposicional IIC2213. IIC2213 Lógica Proposicional 1/42 Lógica Proposicional IIC2213 IIC2213 Lógica Proposicional 1/42 Por qué necesitamos la lógica? Necesitamos un lenguaje con una sintaxis precisa y una semántica bien definida. Queremos usar este lenguaje

Más detalles

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx Página Web: www.matematicas.unam.mx/fhq

Más detalles

Guía N 1 Introducción a las Matemáticas

Guía N 1 Introducción a las Matemáticas Glosario: Guía N 1 Introducción a las Matemáticas - Aritmética: Es la rama de las matemáticas que se dedica al estudio de los números y sus propiedades bajo las operaciones de suma, resta, multiplicación

Más detalles

Lógica Proposicional IIC2213. IIC2213 Lógica Proposicional 1/42

Lógica Proposicional IIC2213. IIC2213 Lógica Proposicional 1/42 Lógica Proposicional IIC2213 IIC2213 Lógica Proposicional 1/42 Por qué necesitamos la lógica? Necesitamos un lenguaje con una sintaxis precisa y una semántica bien definida. Queremos usar este lenguaje

Más detalles

DETERMINACIÓN DE UN CONJUNTO

DETERMINACIÓN DE UN CONJUNTO CONJUNTO UNIVERSAL U A Gráficamente, al conjunto universal se lo representa mediante un rectángulo. Cualquier otro conjunto A es representado por una región cerrada, dentro del rectángulo, A este tipo

Más detalles

Teorema de incompletitud de Gödel

Teorema de incompletitud de Gödel Teorema de incompletitud de Gödel Theorem (Gödel) Th(N) es una teoría indecidible. IIC2213 Teorías 79 / 109 Teorema de incompletitud de Gödel Theorem (Gödel) Th(N) es una teoría indecidible. Corolario

Más detalles

Demostraciones. Demostraciones básicas. José de Jesús Angel Angel

Demostraciones.  Demostraciones básicas. José de Jesús Angel Angel Demostraciones Demostraciones básicas www.math.com.mx José de Jesús Angel Angel jjaa@math.com.mx MathCon c 2007-2017 Contenido 0.1. Demostraciones..................................... 2 0.1.1. Negación

Más detalles

Multiplicación de matrices simétricas

Multiplicación de matrices simétricas Multiplicación de matrices simétricas La traspuesta de una matriz A n n es definida como una matriz A T n n tal que A T [i, j] =A[j, i] paracadai, j 2{1,...,n} Además, una matriz A es simétrica si A =

Más detalles

La lógica de segundo orden: Sintaxis

La lógica de segundo orden: Sintaxis La lógica de segundo orden: Sintaxis Dado: Vocabulario L Definición La lógica de segundo orden (LSO) sobre L es definida como la extensión de LPO que incluye las siguientes reglas: Si t 1,..., t k son

Más detalles

Introducción. Tema 1. Fundamentos de informática. Universidad de Oviedo. Fundamentos de Informática. Departamento de Informática Universidad de Oviedo

Introducción. Tema 1. Fundamentos de informática. Universidad de Oviedo. Fundamentos de Informática. Departamento de Informática Universidad de Oviedo Tema 1 Introducción. Fundamentos de informática Departamento de Informática Universidad de Oviedo 1-1 1.1 Visión general de la informática 1.2 Estructura y funcionamiento de un ordenador 1.3 Representación

Más detalles

Inducción, Recursión y Alcance. Inducción, Recursión y alcance. Inducción, Recursión y Alcance. Inducción, Recursión y Alcance

Inducción, Recursión y Alcance. Inducción, Recursión y alcance. Inducción, Recursión y Alcance. Inducción, Recursión y Alcance Inducción, Recursión y alcance Especificación inductiva de tipos de datos Tipo de datos: Conjunto de valores Conjunto de operaciones sobre dichos valores ejemplo: Sea S el conjunto más pequeño tal que:

Más detalles

Tema 4: Definición de funciones

Tema 4: Definición de funciones 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 Constantes como patrones Variables como

Más detalles

Otras formas gramaticales de una disyunción serán: Otras formas gramaticales de la conjunción serán: p así mismo q

Otras formas gramaticales de una disyunción serán: Otras formas gramaticales de la conjunción serán: p así mismo q Otras formas gramaticales de una disyunción serán: p a menos que q p excepto q p o en tal sentido q p salvo que q p o de lo contrario q p y/o q Otras formas gramaticales de la conjunción serán: p y q p

Más detalles

Tema 4: Definición de funciones

Tema 4: Definición de funciones Tema 4: Definición de funciones Informática (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 2 / 30 Tema 4: Definición

Más detalles

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica

Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN. Lógica Introducción TEORÍA DE LA COMPUTACIÓN INTRODUCCIÓN Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx Página Web: www.matematicas.unam.mx/fhq

Más detalles

Una manera de describir un conjunto es por extensión y consiste en enumerar sus elementos entre llaves

Una manera de describir un conjunto es por extensión y consiste en enumerar sus elementos entre llaves CONJUNTOS: DEFINICIÓN Y CARDINAL DE UN CONJUNTO : Un conjunto es una colección bien definida de objetos en la que el orden es irrelevante. Dichos objetos pueden ser reales o conceptuales y se llaman elementos

Más detalles

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Temario

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Temario Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Temario 1 Introducción y semántica operacional 2 Tipos predefinidos 3 Patrones y Definiciones de Funciones 4 Funciones

Más detalles

Tema 6: Teoría Semántica

Tema 6: Teoría Semántica Tema 6: Teoría Semántica Sintáxis Lenguaje de de las las proposiciones Lenguaje de de los los predicados Semántica Valores Valores de de verdad verdad Tablas Tablas de de verdad verdad Tautologías Satisfacibilidad

Más detalles

El lenguaje C. 1. Identificadores, constantes y variables

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

Más detalles

Ciencias de la Computación I

Ciencias de la Computación I Ciencias de la Computación I Nociones básicas de Computabilidad Problemas y Lenguajes Un problema se describe con un lenguaje Cuanto más formal el lenguaje, más precisa la formulación del problema Los

Más detalles

Lógica Proposicional. Significado de una Fórmula Proposicional

Lógica Proposicional. Significado de una Fórmula Proposicional Proposicional Semántica Semántica Proposicional - Significado de una Fórmula Proposicional El significado de una proposición está dado por su valor de verdad (o sea, si es Verdadera o Falsa) que se obtiene

Más detalles

Lenguaje de programación S (Davis/Sigal/Weyuker) Lógica y Computabilidad. Ejemplo 1. Ejemplo 2

Lenguaje de programación S (Davis/Sigal/Weyuker) Lógica y Computabilidad. Ejemplo 1. Ejemplo 2 Lógica y Computabilidad Verano 2011 Departamento de Computación - FCEyN - UBA Computabilidad - clase 4 Lenguaje S, estado, descripción instantánea, cómputo, funciones parciales computables, minimización

Más detalles

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

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

Más detalles

Ejemplo 8 Los niños nacidos en un país del continente americano.

Ejemplo 8 Los niños nacidos en un país del continente americano. UNIDAD 1: CONJUNTOS La teoría de conjuntos juega un papel muy importante en campos de la matemática como el cálculo, el análisis, el álgebra y la probabilidad. Gracias a los conjuntos se pueden construir

Más detalles

Arquitectura de Computadoras Algebra de Boole Basadas en las Notas de Teórico Versión 1.0 del Dpto. de Arquitectura-InCo-FIng

Arquitectura de Computadoras Algebra de Boole Basadas en las Notas de Teórico Versión 1.0 del Dpto. de Arquitectura-InCo-FIng Basadas en las Versión.0 del Dpto. de Arquitectura-InCo-FIng ALGEBRA DE BOOLE Introducción. El álgebra de Boole es una herramienta de fundamental importancia en el mundo de la computación. Las propiedades

Más detalles

Lógica Proposicional

Lógica Proposicional Proposicional Semántica Semántica Proposicional - Significado de una Fórmula Proposicional El significado de una proposición está dado por su valor de verdad (o sea, si es Verdadera o Falsa) que se obtiene

Más detalles

Introducción a la programación. Cecilia Manzino

Introducción a la programación. Cecilia Manzino Paradigmas Un paradigma es un modelo o patrón en cualquier disciplina científica. Un paradigma de programación representa un estilo de programación en cual se escriben soluciones a problemas en términos

Más detalles

Funciones Segunda parte

Funciones Segunda parte Expresiones condicionales Matemática Discreta usando el computador 2011 Funciones Segunda parte Una expresión condicional utiliza una expresión de tipo Bool para decidir entre dos opciones Estructura if...then...

Más detalles

Análisis semántico: Comprobación de tipos

Análisis semántico: Comprobación de tipos Análisis semántico: Comprobación de tipos Expresiones de tipos, sistemas de comprobación de tipos, equivalencia, resolución de sobrecargas y unificación. Introducción Objetivo de comprobación estática:

Más detalles

GRAMÁTICAS LIBRES DE CONTEXTO

GRAMÁTICAS LIBRES DE CONTEXTO GRAMÁTICAS LIBRES DE CONTEXTO Definición Una gramática libre de contexto (GLC) es una descripción estructural precisa de un lenguaje. Formalmente es una tupla G=, donde Vn es el conjunto

Más detalles

Introducción. El uso de los símbolos en matemáticas.

Introducción. El uso de los símbolos en matemáticas. Introducción El uso de los símbolos en matemáticas. En el estudio de las matemáticas lo primero que necesitamos es conocer su lenguaje y, en particular, sus símbolos. Algunos símbolos, que reciben el nombre

Más detalles

Tema 5. Series de Potencias

Tema 5. Series de Potencias Tema 5. Series de Potencias Prof. William La Cruz Bastidas 21 de noviembre de 2002 Tema 5 Series de Potencias Definición 5.1 La sucesión de números complejos {z n } tiene un límite o converge a un número

Más detalles

Introducción a la complejidad computacional

Introducción a la complejidad computacional Introducción a la complejidad computacional definida sobre anillos arbitrarios 18 de junio de 2016 Fuente: http://www.utmmcss.com/ Por qué otro modelo? Continuo vs discreto. Intuición interiorizada del

Más detalles

Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 2: Lógica de Predicados y Métodos de Demostración

Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 2: Lógica de Predicados y Métodos de Demostración Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 2: Lógica de Predicados y Métodos de Demostración Matemática Discreta - CC3101 Profesor: Pablo Barceló P. Barceló Matemática Discreta - Cap. 1: Fundamentos:

Más detalles

Alejandro Díaz-Caro. 16 de diciembre de 2007

Alejandro Díaz-Caro. 16 de diciembre de 2007 (de André van Tonder [vt04]) Departamento de Ciencias de la Computación Facultad de Ciencias Exactas, Ingeniería y Agrimensura Universidad Nacional de Rosario 16 de diciembre de 2007 Contenido de la presentación

Más detalles

Lógica Clásica de Predicados

Lógica Clásica de Predicados Lógica Clásica de Predicados Lógica Computacional Departamento de Matemática Aplicada Universidad de Málaga 10 de enero de 2008 Contenido 1 Sintaxis 2 Variables y Sustituciones 3 Significado y verdad 4

Más detalles

Ejercicios de Lógica Proposicional *

Ejercicios de Lógica Proposicional * Ejercicios de Lógica Proposicional * FernandoRVelazquezQ@gmail.com Notación. El lenguaje proposicional que hemos definido, aquel que utiliza los cinco conectivos,,, y, se denota como L {,,,, }. Los términos

Más detalles

Sistemas de Reescritura Cristóbal Domínguez González Jorge García de la Nava Ruiz Michel Piliougine Rocha Miguel Ángel Rico Blanco

Sistemas de Reescritura Cristóbal Domínguez González Jorge García de la Nava Ruiz Michel Piliougine Rocha Miguel Ángel Rico Blanco Sistemas de Reescritura Cristóbal Domínguez González Jorge García de la Nava Ruiz Michel Piliougine Rocha Miguel Ángel Rico Blanco 13 de Marzo del 2001 PROGRAMACIÓN DECLARATIVA II Introducción Comenzamos

Más detalles

Matemáticas Discretas

Matemáticas Discretas Matemáticas Discretas Lógica Luis Dominguez Septiembre 2012 1 / 34 Luis Dominguez Matemáticas Discretas Abstract La lógica en ciencias computacionales proporciona herramientas para deliberar si un problema

Más detalles

Álgebra Booleana. Suma Booleana. El término suma es 1 si al menos uno de sus literales son 1. El término suma es 0 solamente si cada literal es 0.

Álgebra Booleana. Suma Booleana. El término suma es 1 si al menos uno de sus literales son 1. El término suma es 0 solamente si cada literal es 0. Álgebra Booleana El álgebra de Boole son las matemáticas de los sistemas digitales. En el nivel de lógica digital de una computadora, lo que comúnmente se llama hardware y que está formado por los componentes

Más detalles

Tema 4. Funciones de orden superior

Tema 4. Funciones de orden superior Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 4. Funciones de orden superior 4.1 Funciones de orden superior 4.2 Expresiones lambda 4.3 Aplicación parcial Secciones

Más detalles

3.3. TEORÍA BÁSICA DE CONJUNTOS Utilizar tablas de verdad para comprobar la equivalencia lógica p q p q.

3.3. TEORÍA BÁSICA DE CONJUNTOS Utilizar tablas de verdad para comprobar la equivalencia lógica p q p q. 3.3. TEORÍA BÁSICA DE CONJUNTOS 83 a) p q b) p q c) q p 7. Sabiendo que la proposición compuesta ( q) (q p) es falsa, indicar cuál es el valor de verdad de las proposiciones p y q. 8. Utilizar tablas de

Más detalles

Tema 1: Fundamentos.

Tema 1: Fundamentos. Tema 1: Fundamentos. 1. Nociones básicas de la Teoría de Conjuntos. Definición. Un conjunto es una colección de objetos. A los objetos de un conjunto se les llama elementos del conjunto. Se denominará

Más detalles

Clase Práctica 1 - Inducción estructural, conectivos adecuados y consecuencia - Viernes 23 de marzo de 2012

Clase Práctica 1 - Inducción estructural, conectivos adecuados y consecuencia - Viernes 23 de marzo de 2012 Lógica y Computabilidad Primer Cuatrimestre 2012 Clase Práctica 1 - Inducción estructural, conectivos adecuados y consecuencia - Viernes 23 de marzo de 2012 Definición 1. Notaremos con Form al conjunto

Más detalles

Capítulo 4. Lógica matemática. Continuar

Capítulo 4. Lógica matemática. Continuar Capítulo 4. Lógica matemática Continuar Introducción La lógica estudia la forma del razonamiento, es una disciplina que por medio de reglas y técnicas determina si un teorema es falso o verdadero, además

Más detalles

Álgebra Lineal. Departamento de Matemáticas Universidad de Los Andes. Primer Semestre de 2007

Álgebra Lineal. Departamento de Matemáticas Universidad de Los Andes. Primer Semestre de 2007 Álgebra Lineal Departamento de Matemáticas Universidad de Los Andes Primer Semestre de 2007 Universidad de Los Andes () Álgebra Lineal Primer Semestre de 2007 1 / 50 Texto guía: Universidad de Los Andes

Más detalles

Listas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015

Listas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015 Listas y Recursión Taller de Álgebra I Primer Cuatrimestre de 2015 Un nuevo tipo: Listas Tipo Lista Las listas pueden contener elementos de cualquier tipo (incluso listas) [1] :: [Integer] [1, 2] :: [Integer]

Más detalles

Examen. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003.

Examen. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación Examen IIC 2222 Teoría de Autómatas y Lenguajes Formales Segundo Semestre, 2003 Este examen tiene

Más detalles