TPPSFAsistentes para programadores - 1 3. Asistentes de Pruebas para Programadores Cálculo de Construcciones.

Slides:



Advertisements
Presentaciones similares
La aritmetización de la sintaxis
Advertisements

Gramáticas Libres de Contexto
Conceptos básicos Def. Un símbolo es cualquier carácter imprimible.
Tema: Decibilidad Integrantes: Ileana Rdguez Soto
KRIGING CON TENDENCIA.
EL CÁLCULO LAMBDA λ.
DEPARTAMENTO DE MATEMÁTICAS
DERIVADA DE UNA FUNCION REAL
Bivariadas y Multivariadas
INTEGRACIÓN.
Noción de lógica Cuantificacional
Interpretando objetos
PRODUCTO CARTESIANO RELACIONES BINARIAS
Chequeo e inferencia de tipos
Expresiones regulares
Tipo de Dato Abstracto Tipos de datos:
Relaciones de equivalencia
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
Taller matemático (Cálculo)
La transformada de Fourier.
Sistemas de Ecuaciones Diferenciales Lineales
José Alfredo Cervantes Guzmán UMSNH Coautor: Jesús Rivera
CÁLCULO DIFERENCIAL.
UNIDAD 2 CONJUNTOS.
ÍNDICE Conjuntos Partes de un conjunto. Operaciones.
DEFINICIÓN MATEMÁTICA DE UNA FUNCIÓN DE VARIABLE REAL.
DEFINICIONES Y TERMINOLOGÍA
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Tomado de UNIMET Prof. Antonio Syers
La derivada de la función inversa y de funciones especiales
PROGRAMACIÓN LÓGICA.
Teoría de Conjuntos Prof. Carlos Coronel R..
Matemáticas III Tema I FUNCIONES
RECTA EN R3 INTEGRANTES : YENDERSON LOPEZ DAYANA VARGAS JOSE COLMENAREZ FELIPECASTILLO DAVID DAVILA SECCION: 1T2IS BARQUISIMETO 3/7/2012.
Ecuaciones diferenciales Método para resolver una ecuación diferencial
TPPSFProgramando pruebas Programando Pruebas Isomorfismo de Curry-Howard.
CONTENIDO CONJUNTOS RELACIONES FUNCIONES CONJUNTOS.
Expresiones Algebraicas
Fundamentos de Lenguajes de Programación
Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez
Estructura de Datos y Algoritmos
Variables Aleatorias Unidimensionales
Tipos de Datos (Data Types)
ESTRUCTURA DE DATOS ESD-243
Teoría de lenguajes y compiladores Analizadores lexicográficos
2. Asistentes de Pruebas para Lógicos y Matemáticos II
M.C. Jesús Antonio Jashimoto B.
Universidad Nacional de Colombia Curso Análisis de Datos Cuantitativos.
La transformada de Fourier.
Análisis Matemático III
Programación No-Imperativa Modelos: Lenguajes Funcionales y Lógicos.
TPPSFCálculo de Construcciones Inductivas Cálculo de Construcciones Inductivas Parte I: Inducción y Recursión.
INTEGRAL DEFINIDA Prof. Evelyn Davila.
1. Asistentes de Pruebas para Lógicos y Matemáticos I
1 AFDAFN AF Gramáticas lineales derecha Expresiones regulares Tema 2 Método de los AF Método de las derivadas Sistemas de Ecuaciones Tema 1.
INAOE CURSO PROPEDEUTICO PARA LA MAESTRIA EN ELECTRONICA
InCo 2004CFPTT Programación de Pruebas Isomorfismo de Curry-Howard.
I.- ESTUDIO DE LOS LENGUAJES DE PROGRAMACIÓN.
Estimación y contraste de hipótesis
Optimización automática de programas (OAP) Germán Vidal 1 Optimización automática de programas Tema 2: Funciones, tipos y expresiones 2.1. Funciones 2.2.
Operaciones Algebraicas
 Cuando una variable pasa de un valor a otro valor, se dice que dicha variable ha sufrido un INCREMENTO.
LIC. JOSEPH RUITON RICRA
Optimización automática de programas (OAP) Germán Vidal 1 Optimización automática de programas Tema 3: Funciones, tipos y expresiones 3.1. Intérpretes,
MATRICES.
Unidad 2: La derivada Pendiente y razones La derivada.
6. Sistemas de ecuaciones diferenciales lineales
Soluciones en Serie de Ecuaciones Lineales
para Ingenieros Químicos
Nociones Inclusión Igualdad
Transcripción de la presentación:

TPPSFAsistentes para programadores Asistentes de Pruebas para Programadores Cálculo de Construcciones

TPPSFAsistentes para programadores Cálculo simplemente tipado Sintaxis Términos e ::= x | x.e | (e 1 e 2 ) | c x  Var c  Const Tipos  ::= t |  1  2 t  TConst Contextos  ::= [ ] | ,x:  (o directamente  ::= x 1 :  1... x n :  n (n  0) )

TPPSFAsistentes para programadores - 3 Sistema de tipos Juicios de la forma:  |- e:  “la expresión e tiene tipo  bajo el contexto  ”  x:  |- x:   |- x.e:   x:  |- e:   |- (e 1 e 2 ):   |- e 1 :   |- e 2 :  ctx abs app Reglas:

TPPSFAsistentes para programadores - 4 Ejemplos de términos tipados x.x: ? x. y. x: ? x. y. z.((x y) z): ? x. y. z.((x z) (z y)): ? ? :  (  ) ? : (  (  ))  (  (  ))

TPPSFAsistentes para programadores - 5 Reducciones Reducción  (( x.e 1 ) e 2 )   e 1 [x  e 2 ]  -redex Reducción  x.(f x)   f  -redex Reducción  Si c:= d entonces c   d  -redex (unfold)

TPPSFAsistentes para programadores - 6 Ejemplos de reducciones ((( x. y.(x y)) ( z.z)) w) ((( x. y.(x y)) ( z.z)) w)   (( y.(( z.z) y) w) (( y.(( z.z) y) w)   (( z.z) w) (( z.z) w)   w (( x.(( z.z) x)) y) (( x.(( z.z) x)) y)   (( z.z) y) (( z.z) y)   y

TPPSFAsistentes para programadores - 7 Reducciones infinitas No siempre una cadena de reducciones  y  tiene fin. Ejemplos: –Definimos  = x.(x x) Entonces (   )   (   )   (   )   –Definimos  3 = x.(x x x) Entonces (  3  3 )   (  3  3  3 )   Propiedad importante: tener tipo garantiza que no haya computaciones infinitas Dado un término e, si existe  tal que  |- e: , entonces e es  -  -normalizable (toda cadena de reducciones temina en una forma normal)

TPPSFAsistentes para programadores - 8 Cálculo simplemente tipado en Coq Constantes de tipo: nat, bool, etc. El tipo de las variables aparece en las abstracciones: –[x: nat] x : nat  nat –[x:bool] x : bool  bool –[f:nat  bool][x:nat] (f x) : bool –[g:nat  nat  bool][n:nat] ((g n) n) : bool

TPPSFAsistentes para programadores Polimorfismo Paramétrico En los lenguajes funcionales (ML, Haskell, Gopher) escribimos: x. x :   Variable de tipo!! (X:Set) En Coq, abstraemos el tipo. Los tipos de datos pertenecen a la clase Set: [X:Set][x:X] x : X  X Abstrayendo en la clase Set obtenemos polimorfismo paramétrico

TPPSFAsistentes para programadores Tipos dependientes Polimorfismo paramétrico = abstraer variables de tipo (de Set). En general: podemos abstraer variables de cualquier tipo. Tipos dependientes: un tipo puede depender no solo de otro tipo, sino también de un objeto de cierto tipo.

TPPSFAsistentes para programadores - 11 Ejemplos Array: Set  nat  Set –Array bool 3 –zip: (A:Set)(k:nat)(Array A k)  (Array A k)  (Array A K) Matrix: Set  nat  nat  Set –Matrix nat 5 4 –prod:(n,m,k:nat) (Matrix nat n k)  (Matrix nat k m)  (Matrix nat n m)

TPPSFAsistentes para programadores - 12 Lenguaje de programación de Coq Es un lambda cálculo tipado con las siguientes características: –es de orden superior –permite definir funciones paramétricas –tiene tipos dependientes –permite definir tipos inductivos –permite definir tipos coinductivos Cálculo de Construcciones (CC) Cálculo de Construcciones Inductivas = CC + tipos inductivos (CCI) Cálculo de Construcciones Inductivas y Coinductivos = CCI+tipos coinductivos (CCI  ) CC CCI CCI 

TPPSFAsistentes para programadores Cálculo de Construcciones Sintaxis 1. Términos T ::= Set | Prop | Type | xvariables | ( T T )aplicación | [ x : T ]Tabstracción | ( x : T) Tproducto | T  Ttipo de las funciones* * A  B abrevia (x:A)B cuando x no ocurre libre en B Ejemplos: [A:Set][x:A]x [f: A  A  A][a:A](f a a)

TPPSFAsistentes para programadores - 14 Sintaxis (cont.) 2. Contextos   ::=  |  x:T 3. Definiciones def ::= C:= T

TPPSFAsistentes para programadores - 15 Alcance La lambda abstracción y el producto son operadores que ligan (son cuantificadores) Definición [alcance] - en el término [x:A]B el alcance de la abstracción [x:A] es B. - en el tipo (x:A) B el alcance del cuantificador (x:A) es B. Las nociones de variable libre y ligada son las usuales.

TPPSFAsistentes para programadores - 16 Sustitución Definición [sustitución] sean t y u dos términos y x una variable. t[x  u] denota el término que resulta de sustituir todas las ocurrencias libres de x en t por el término u. Otras notaciones: t[u/x], [u/x]t, t[x:=u], t{x:=u} Asumiremos que la operación de sustitución evita la captura de variables renombrando adecuadamente las variables ligadas.

TPPSFAsistentes para programadores - 17 Reglas de Reducción Definición [reducción beta y eta] ([x:T]f a)   f [x  a] [x:T] (f x)   f Definición Se define como   y   las relaciones correspondientes a la reescritura de un subtérmino utilizando   y  .. Se define   como la unión de ambas relaciones. Se define como   * y   * la clausura reflexiva, transitiva de   y   respectivamente. Idem para   *

TPPSFAsistentes para programadores - 18 Reglas Reducción (cont.) Definición [beta y eta conversión] Se definen   como la clausura reflexiva, transitiva y simétrica de   * Si t   u se dice que t y u son  -convertibles Definición [redex, forma normal] Un término t es un  -redex si t   u y es un  - redex si t   u Un término t está en  -forma normal si ninguno de sus terminos es un  -redex (idem para  -forma normal y  -forma normal).

TPPSFAsistentes para programadores - 19 Juicio de tipabilidad en CC Definición [juicio de tipado] Los juicios t tiene tipo T en el contexto  (  |- t:T ) y  es un contexto bien formado se definen en forma mutuamente recursiva El conjunto S de clases de objetos se define como : S = {Set, Prop, Type, Type1, Type2,...} El conjunto R de reglas de formación de productos es: R = {,,,,,,,, | i  N }

TPPSFAsistentes para programadores - 20 Juicio de Tipabilidad (cont) Reglas de Buena formación de Contextos [ ] bien formado  x:T bien formado DECLARACION DE VARIABLES x   T:s

TPPSFAsistentes para programadores - 21 Juicio de Tipabilidad (cont) Reglas de Tipado  Set:Type AX1  (x:T)U : s 3  R ( PROD) , x:T  U:s 2  Prop:Type AX2  T:s 1  Tipe i :Type i+1 AXi

TPPSFAsistentes para programadores - 22 Juicio de Tipabilidad (cont) Reglas de Tipado  x : t  bien formado x:t  VAR  x:T]t : (x:T)U  (x:T)U:s ABSTR , x:T  t:U  (f t) : U [x  t]  f:(x:T)U APP  t:T

TPPSFAsistentes para programadores - 23 Juicio de Tipabilidad (cont) Reglas de Tipado  t: U (CONV)  U:s  t:TT   U Ejercicio: sabiendo que A  B puede definirse como una abreviación sintáctica del producto (x:A)B en donde x no ocurre en B. Derivar a partir de la regla para el producto, la regla de tipado de la A  B.

TPPSFAsistentes para programadores - 24  -Reducción Definición [regla delta] si C :=E es una definición incorporada al contexto  t   t´ donde t´ es el resultado remplazar una ocurrencia del símbolo de constante C por E en t. Observar que este remplazo no es una sustitución pues C es un símbolo de constante. Las definiciones de forma normal y conversion vistas para  se definen de forma análoga para  Presentación de CC con  en Capitulo 4 del manual y [Paulin-Mohring 96]

TPPSFAsistentes para programadores - 25 Coq: Tácticas vinculadas a la reducción Estrategias de reducción –Cbv flag1 flag2 –Lazy flag1 flag2 donde flagi es el nombre de la reducción (  o  ) Reducción Delta –Unfold id1... Idn –Fold term Estrategias de reducción –Compute calcula la forma normal –Simpl aplica  y luego  a constantes transparentes

TPPSFAsistentes para programadores - 26 Propiedades del Cálculo de Construcciones Normalización Si el juicio  A:B es derivable entonces A tiene forma normal. Confluencia Si  A:B y A   * A 1 y A   * A 2 entonces existe C tal que A 1   * C y A 2   * C.

TPPSFAsistentes para programadores - 27 Más Propiedades del Cálculo de Construcciones Decidibilidad del tipado Existe un algoritmo que dado un término U y un contexto  : devuelve un término V tal que  U:V sea derivable reporta un error si no existe un término V tal que  U:V.

TPPSFAsistentes para programadores - 28 Problemas ligados al tipado 1. Chequeo de tipos:  U:V ? 2. Inferencia de tipos: Dados  y  U existe V tal que  U:V ? 3. Vacuidad de un tipo: Dados  y  V existe U tal que  U:V ? Los problemas 1 y 2 son decidibles en el cálculo de construcciones, 3 no lo es.