1 / 27

3. Asistentes de Pruebas para Programadores C álculo de Construcciones

3. Asistentes de Pruebas para Programadores C álculo de Construcciones. 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 G ::= [ ] | G ,x:

Download Presentation

3. Asistentes de Pruebas para Programadores C álculo de Construcciones

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3. Asistentes de Pruebaspara ProgramadoresCálculo de Construcciones TPPSF

  2. 1. Cálculo  simplemente tipadoSintaxis Términos e ::= x | x.e | (e1 e2) | cx Var c Const Tipos ::= t | 12 t TConst Contextos G ::= [ ] | G,x: (o directamenteG ::= x1:1... xn:n (n 0)) TPPSF

  3. Reglas: ctx G, x:a|- x: a G, x:a|- e: b G|- e1:a b G |- e2: a abs app G |- lx.e: a b G |- (e1 e2): b Sistema de tipos Juicios de la forma: G|- e: a “la expresión e tiene tipo a bajo el contextoG” TPPSF

  4. Ejemplos de términos tipados • x.x: ? • x.y. x: ? • x.y.z.((x y) z): ? • x.y.z.((x z) (z y)): ? • ? : () • ? : (())(()) TPPSF

  5. Reducciones • Reducción  ((x.e1) e2)  e1[xe2] -redex • Reducción  x.(f x)  f -redex • Reducción  Si c:= d entonces c d -redex (unfold) TPPSF

  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 TPPSF

  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 a tal que G|- e:a , entonces e es --normalizable (toda cadena de reducciones temina en una forma normal) TPPSF

  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 TPPSF

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

  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 objetode cierto tipo. TPPSF

  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) TPPSF

  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 CC CCI CCI 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) TPPSF

  13. 4. Cálculo de ConstruccionesSintaxis 1. Términos T ::= Set | Prop | Type | x variables | ( T T ) aplicación | [ x : T ]T abstracción | ( x : T) T producto | T  T tipo 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) TPPSF

  14. Sintaxis (cont.) 2. Contextos  ::=[ ]|  , x:T 3. Definiciones def ::= C:= T TPPSF

  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. TPPSF

  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. TPPSF

  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 * TPPSF

  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). TPPSF

  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 = { <Prop,Prop,Prop>, <Set, Prop, Prop>, <Typei, Prop, Prop>, <Set, Set, Set>, <Prop, Set, Set >, <Typei, Set, Set>, <Set,Typei,Typei>, <Prop,Typei,Typei>, <Typei, Typej, Typemax{i,j} > | iN } TPPSF

  20. Juicio de Tipabilidad (cont)Reglas de Buena formación de Contextos [ ] bien formado  |- T:s x  DECLARACION DE VARIABLES , x:T bien formado TPPSF

  21. Juicio de Tipabilidad (cont)Reglas de Tipado AX1 [ ] |- Set:Type AX2 [ ] |- Prop:Type AXi [ ] |- Tipei:Type i+1  , x:T|- U:s2  |- T:s1 <s1,s2,s3>R ( PROD)  |- (x:T)U : s3 TPPSF

  22. Juicio de Tipabilidad (cont)Reglas de Tipado  bien formado x:t  VAR  |- x : t  |- (x:T)U:s  , x:T|- t:U ABSTR  |- [x:T]t : (x:T)U  |- f:(x:T)U  |- t:T APP  |- (f t) : U [xt] TPPSF

  23. Juicio de Tipabilidad (cont)Reglas de Tipado  |- t:T  |- U:s TU (CONV)  |- t: 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. TPPSF

  24. Coq: Tácticas vinculadas a la reducción • Estrategias de reducción • Cbvflag1 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 d a constantes transparentes TPPSF

  25. Propiedades del Cálculo de Construcciones Normalización Si el juicio |-A:B es derivable entonces A tiene forma normal. Confluencia Si |-A:B yA* A1 y A* A2 entonces existe C tal que A1* C y A2* C . TPPSF

  26. 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. TPPSF

  27. Problemas ligados al tipado 1. Chequeo de tipos: |-U:V ? 2. Inferencia de tipos: Dados  yU existe V tal que |-U:V ? 3. Vacuidad de un tipo: Dados  yV existe U tal que |-U:V ? Los problemas 1 y 2 son decidibles en el cálculo de construcciones, 3 no lo es. TPPSF

More Related