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

Documentos relacionados
Trabajo Práctico Final

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

Conjunto R 3 y operaciones lineales en R 3

Isabelle como un lenguaje funcional

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Modelos Estocásticos I Tercer Examen Parcial Respuestas

GUÍA BÁSICA DE SCHEME v.4

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

Expresiones Regulares y Derivadas Formales

Ampliación Matemática Discreta. Justo Peralta López

Lenguajes y Gramáticas

Generación de variables aleatorias continuas Método de rechazo

Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales

MMAF: Espacios normados y espacios de Banach

dt Podemos verificar que la velocidad definida de esta forma no transforma como un vector bajo una T.L. En clases mostramos que el intervalo

13.3. MT para reconocer lenguajes

Instrucciones Si... Entonces y Si... Entonces SiNo (if then else) en pseudocódigo (CU00142A)

Nombre y Apellidos:... EXAMEN ECONOMETRÍA II (Enero 2010)

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.


Problemas de Espacios Vectoriales

Tema 3. Tipos de datos simples

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto

RESOLUCIÓN DE SISTEMAS MEDIANTE DETERMINANTES

Teorema Central del Límite (1)

Estatutos de Control C# Estatutos de Decisión (Selección)

Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS. Números naturales. Inducción matemática

El Autómata con Pila: Transiciones

Sistemas de ecuaciones lineales dependientes de un parámetro

Objetivo: Construir un programa integrando sentencias de decisión MARCO TEÓRICO

(Quinta clase: Ejemplos de producto. Coproducto) Recordemos que se dijo que el diagrama

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Introducción a los Algoritmos Validez, Satisfactibilidad, Tipos y Funciones

Curso de Java Introducción a la Programación III

Ejercicios de Lógica Proposicional *

Lección 5: Ecuaciones con números naturales

Universidad Nacional Abierta y a Distancia UNAD-Lógica Matemática - Georffrey Acevedo G. A que viene la lógica?

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

OPTIMIZACIÓN VECTORIAL

Elección de estructuras

Estructuras de Control. Secuencia y Selección

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Cálculo Diferencial: Enero 2016

Guía práctica de estudio 05: Diagramas de flujo

Espacios Vectoriales

Equivalencia Entre PDA y CFL

Tema 6: Teoría Semántica

El lenguaje C. 1. Identificadores, constantes y variables

Tema 3: Tipos y clases

Tema 3: Tipos y clases

Semana03[1/17] Funciones. 16 de marzo de Funciones

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

Teoría de Lenguajes. Clase Teórica 7 Autómatas de Pila y Lenguajes Independientes del Contexto Primer cuartimestre 2014

Nota 2. Luis Sierra. Marzo del 2010

Ejercicios ejemplo: verificación de algoritmos del valor suma de una sucesión matemática. (CU00238A)

Materia: Matemática de 5to Tema: Método de Cramer. Marco Teórico

Paso 1: Autómata. A 1 sin estados inútiles, que reconoce el lenguaje denotado por a a* b*

Estructuras de control

Terminaremos el capítulo con una breve referencia a la teoría de cardinales.

Práctico 5. Definiciones Inductivas - Segunda Parte -

May 4, 2012 CAPÍTULO 5: OPTIMIZACIÓN

Programación Funcional en Haskell

Herramientas. 1 FormaLex, Departamento de Computación, FCEyN, Universidad de Buenos Aires, Buenos Aires, Argentina

Procesadores de Lenguaje

Diseño de Bloques al azar. Diseño de experimentos p. 1/25

Ejemplo de Diseño. Algoritmos y Estructuras de Datos II. Departamento de Computación FCEyN UBA

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Variables aleatorias múltiples

Tema: Autómata de Pila

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Estudiemos el siguiente problema, propuesto por Wirth y desarrollado por Dijkstra: Una lista de las primeras secuencias que cumplen es:

Índice Proposiciones y Conectores Lógicos Tablas de Verdad Lógica de Predicados Inducción

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Lógica de Predicados de Primer Orden

Operadores lógicos y de comparación en programación. Not, and, or Ejemplos. (CU00132A)

Descomposición en valores singulares de una matriz

Editor de código Visual Basic. Lista de miembros automática, sugerencias de sintaxis, autocompletado y otras opciones. (CU00313A)

Universidad de Buenos Aires Facultad De Ingeniería. Operaciones Lógicas. [75.40] Algoritmos y Programación I. 2do Cuatrimestre 2010

Gráficas de funciones de masa de probabilidad y de función de densidad de probabilidad de Distribuciones especiales. x n

Lección 4: Factorización de Trinomios Cuadráticos de la forma x 2 + bx + c. Dra. Noemí L. Ruiz Limardo 2009

Introduc)on to Programming (in C++) Ejemplos de tratamiento de secuencia de secuencias. Emma Rollón Departament of Computer Science

Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S

A1.- Determina a y b sabiendo que el sistema de ecuaciones. x + 3y +z = 1 -x + y +2z = -1 ax + by + z = 4 tiene, al menos, dos soluciones distintas.

Propiedades de las operaciones lineales con matrices

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Práctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función.

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Econometria con Series Temporales

Matrices, determinantes y sistemas lineales

TADs en C. Matías Bordese Algoritmos y Estructuras de Datos II - Laboratorio 2013

6. Autómatas a Pila. Grado Ingeniería InformáDca Teoría de Autómatas y Lenguajes Formales

Algebra Lineal Tarea No 22: Valores y vectores propios Solución a algunos problemas de la tarea (al 29 de junio de 2014)

Ruby On Rails para Programadores Java

Teoría de la Computabilidad

Retículos y Álgebras de Boole

06 Análisis léxico II

ALGEBRA y ALGEBRA LINEAL. Primer Semestre CAPITULO I LOGICA Y CONJUNTOS.

Econometría de series de tiempo aplicada a macroeconomía y finanzas

Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR

Conjuntos finitos y conjuntos numerables

Transcripción:

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 infinito enumerable de variables y x X. Los términos de C-λ b están dados por M ::= x true false if M then P else Q λx : σ.m M N

Convenciones Convención de paréntesis Convención de limpieza Poner paréntesis en wzλx : (σ σ) τ τ.xλy : σ.y

Términos con y sin sentido true false es un término, aunque medio sospechoso. Intuitivamente: qué querríamos obtener al evaluarlo? x x también es un término. Intuitivamente: qué tipo debería tener? Moraleja: aun sobre términos válidos caben preguntas como... En nuestro contexto / para nuestros fines, esto tiene sentido? Sería deseable que tenga sentido? Qué tipo debería tener? Debería tener tipo? Podría tener alguno? De este filtro se ocupará nuestro sistema de tipado. ( Entre otras cosas! Más detalles en la próxima teórica, cuando veamos inferencia de tipos.)

Axiomas y reglas de tipado x : σ Γ (T-Var) Γ x : σ (T-True) Γ true : Bool (T-False) Γ false : Bool Γ M : Bool Γ P : σ Γ Q : σ (T-If) Γ if M then P else Q : σ Γ, x : σ M : τ Γ λx : σ.m : σ τ (T-Abs) Γ M : σ τ Γ M N : τ Γ N : σ (T-App)

Ejercicio Demostrar la validez del siguiente juicio de tipado: (λx : Bool.λy : Bool.if x then true else y) false : Bool Bool

Semántica operacional (1/2) Valores V ::= true false λx : σ.m Reglas de evaluación en un paso (1/2) (E-IfTrue) if true then M 2 else M 3 M 2 (E-IfFalse) if false then M 2 else M 3 M 3 M 1 M 1 if M 1 then M 2 else M 3 if M 1 then M 2 else M 3 (E-If)

Semántica operacional (2/2) Reglas de evaluación en un paso (2/2) M 1 M 1 M 1 M 2 M 1 M 2 (E-App1 o µ) M 2 M 2 (E-App2 o ν) V 1 M 2 V 1 M 2 (E-AppAbs o β) (λx : σ.m) V M{x V }

Ejercicios Volvamos al término que vimos antes: (λx : Bool.λy : Bool.if x then true else y) false Cuál es el resultado de evaluarlo? Y este otro? if (λb : Bool.true) false then (λx : Bool.x) true else (λy : Bool.y) false

Un nuevo tipo: los Naturales σ ::= Bool Nat σ ρ M ::=... 0 succ(m) pred(m) iszero(m)

Tipado (T-Zero) Γ 0 : Nat Γ M : Nat Γ M : Nat (T-Succ) (T-Pred) Γ succ(m) : Nat Γ pred(m) : Nat Γ M : Nat (T-IsZero) Γ iszero(m) : Bool

Probemos... pred(succ(0)) : Nat {x : Nat} iszero(pred(succ(x))) : Bool

Semántica operacional (1/2) Valores V ::=... n donde n abrevia succ n (0). Reglas de evaluación en un paso (1/2) M 1 M 1 (E-Succ) succ(m 1 ) succ(m 1) (E-PredZero) pred(0) 0 (E-PredSucc) pred(succ(n)) n M 1 M 1 (E-Pred) pred(m 1 ) pred(m 1)

Semántica operacional (2/2) Reglas de evaluación en un paso (2/2) (E-IsZeroZero) iszero(0) true (E-IsZeroSucc) iszero(succ(n)) false M 1 M 1 (E-IsZero) iszero(m 1 ) iszero(m 1)

...Y ahora evaluemos (λx : Nat. iszero(pred(succ(x)))) 0 Y si en vez de 0 dijera succ(0)? O succ(succ(0))? Cuál es la forma normal de succ(pred(pred(succ(0))))? Y la de succ(pred(pred(succ(x))))?

Recursión y punto fijo Recordemos esta extensión: M ::=... fix M Γ M : σ 1 σ 1 (T-Fix) Γ fix M : σ 1 M 1 M 1 (E-Fix) fix M 1 fix M 1 (E-FixBeta) fix (λx : σ.m) M{x fix (λx : σ.m)} (El conjunto de tipos y el de valores no se modifican.)

Recursión como punto fijo Qué tipo tiene el siguiente término? Qué representa? M = (λx : Nat. fix(λs : Nat Nat.λy : Nat.if iszero(y) then x else succ(s pred(y))))

Recursión como punto fijo Qué tipo tiene el siguiente término? Qué representa? M = (λx : Nat. fix(λs : Nat Nat.λy : Nat.if iszero(y) then x else succ(s pred(y)))) Verifiquemos: M : Nat Nat Nat

Recursión como punto fijo Qué tipo tiene el siguiente término? Qué representa? M = (λx : Nat. fix(λs : Nat Nat.λy : Nat.if iszero(y) then x else succ(s pred(y)))) Verifiquemos: M : Nat Nat Nat...Y ahora evaluemos: M 3 2

Simplificando la escritura Podemos definir macros para expresiones que vayamos a utilizar con frecuencia. Por ejemplo: suma def = (λx : Nat. fix(λs : Nat Nat.λy : Nat.if iszero(y) then x else succ(s pred(y)))) Ejercicio: definir el producto como macro usando suma y fix. Una solución posible: producto def = λx : Nat. fix (λp : Nat Nat.λy : Nat.if iszero(y) then 0 else suma x (p pred(y)))

En la próxima clase... Ejemplos rápidos y sofisticados Cómo definir nuevas extensiones

Continuará...????????????? (λx : clase.fin x) (Cálculo Lambda I )