Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porJuan José Lagos Cruz Modificado hace 9 años
2
TPPSFAsistentes para programadores - 1 3. Asistentes de Pruebas para Programadores Cálculo de Construcciones
3
TPPSFAsistentes para programadores - 2 1. 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) )
4
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:
5
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)): ? ? : ( ) ? : ( ( )) ( ( ))
6
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)
7
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
8
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)
9
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
10
TPPSFAsistentes para programadores - 9 2. 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
11
TPPSFAsistentes para programadores - 10 3. 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.
12
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)
13
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
14
TPPSFAsistentes para programadores - 13 4. 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)
15
TPPSFAsistentes para programadores - 14 Sintaxis (cont.) 2. Contextos ::= | x:T 3. Definiciones def ::= C:= T
16
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.
17
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.
18
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 *
19
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).
20
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 }
21
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
22
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
23
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
24
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.
25
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]
26
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
27
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.
28
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.
29
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.
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.