La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

TPPSFProgramando pruebas - 1 4. Programando Pruebas Isomorfismo de Curry-Howard.

Presentaciones similares


Presentación del tema: "TPPSFProgramando pruebas - 1 4. Programando Pruebas Isomorfismo de Curry-Howard."— Transcripción de la presentación:

1 TPPSFProgramando pruebas - 1 4. Programando Pruebas Isomorfismo de Curry-Howard

2 TPPSFProgramando pruebas - 2 Construcción de Pruebas en Coq ¿Qué estamos haciendo cuando probamos un teorema en Coq? Construimos un objeto que es la prueba del teorema ¿En qué lenguaje está escrita esa prueba? En Cálculo Lambda!!!! Cada enunciado lógico se corresponde con un tipo y su prueba es un objeto de ese tipo.

3 TPPSFProgramando pruebas - 3 Isomorfismo de Curry-Howard Identificación de proposiciones con tipos P : Prop pensamos a P como el tipo cuyos objetos son las pruebas de P Identificación de pruebas con objetos a: P significa que a es una prueba (objeto) de P

4 TPPSFProgramando pruebas - 4 Cálculo Proposicional Minimal Deducción Natural Proposiciones atómicas y de la forma  Juicios de la forma:  |-  “  se deduce a partir del conjunto de hipótesis  ”  =[    n ]  |-  ass  |-   |-  II  |-   |-   |-  EE Reglas:

5 TPPSFProgramando pruebas - 5 Deducción Natural en Coq [    n ] |-  lo vemos escrito H 1 :    H n :  n   |-  ass corresponde a Assumption  |-   |-  II corresponde a Intro  |-   |-   |-  EE corresponde a Apply o Cut (dependiendo de si    está o no en 

6 TPPSFProgramando pruebas - 6 Cálculo simplemente tipado sistema de tipos Juicios de la forma:  |- e:  “la expresión e tiene tipo  bajo el contexto  ”  =[x 1 :    x n :  n ]  x:  |- x:   |- x.e:   x:  |- e:   |- (e 1 e 2 ):   |- e 1 :   |- e 2 :  ctx abs app Reglas:

7 TPPSFProgramando pruebas - 7 comparemos... Deducción Natural  |-   |-   |-   |-   |-   |-  Cálculo  x:  |- x:   |- x.e:   x:  |- e:   |- (e 1 e 2 ):   |- e 1 :   |- e 2 :  ass II EE ctx abs app

8 TPPSFProgramando pruebas - 8 Más similaridades: Reducciones  |-   |-   |-   |-  II EE  |- a:  |- x.e:   x:  |- e:   |- ( x.e a):  abs app Deducción Natural Cálculo  |- a:  x:  |- e:   |- ( x.e a)=e[a/x] :    |-   |-   |-  cut

9 TPPSFProgramando pruebas - 9 Isomorfismo de Curry-Howard Un poco de historia: En 1958 H. B. Curry observó que los axiomas del cálculo proposicional   y  se correspondían con los tipos de los combinadores S,K e I En 1965 W. Tait descubrió una correspondencia entre la eliminación de lemas en pruebas (cut- elimination) y la  -reducción en el cálculo  En 1969 W. A. Howard desarrolla una noción de construcción adecuada para representar las pruebas de la lógica intuicionista.

10 TPPSFProgramando pruebas - 10 Cálculo de Predicados Minimal Deducción Natural Proposiciones atómicas y de la forma  x  A  Juicios de la forma:  |-  “  se deduce a partir del conjunto de hipótesis y objetos  ”  =[x 1  A   x m  A m ]  [    n ]  |-  x  A   x  A |-  II  |-  (a)  |-  x  A   |- a  A EE Reglas: ass,  I,  E más:

11 TPPSFProgramando pruebas - 11 En Coq... [x 1 : A   x m :A m ]  [    n ] |-  lo vemos escrito x 1 :A 1  x m :A m H 1 :    H n :  n  corresponde a Intro x  |-  x  A   x  A |-  II corresponde a Apply  |-  (a)  |-  x  A   |- a  A EE

12 TPPSFProgramando pruebas - 12 Cálculo con tipos dependientes sistema de tipos Juicios de la forma:  |- e:  “la expresión e tiene tipo  bajo el contexto  ”  =[x 1 :    x n :  n ]  |- x .e:  x:   x:  |- e:   |- (e a):  [a/x]  |- e:  x:  |- a:  abs app Reglas: ctx más:

13 TPPSFProgramando pruebas - 13 comparemos otra vez... Deducción Natural Cálculo  |-  x   x  A |-   |-  (a)  |-  x  A   |- a  A II EE  |- x .e:  x:   x:  |- e:   |- (e a):  [a/x]  |- e:  x:  |- a:  abs app

14 TPPSFProgramando pruebas - 14 Observaciones sobre los productos La regla del producto nos sirve para representar tres tipos de funciones  |-  x:  : Set  |-  : Set  x:  |-  : Set prod  |-  x:  : Prop  |-  : Set  x:  |-  : Prop prod  |-  x:  : Prop  |-  : Prop  x:  |-  : Prop prod [x:nat]x: (x:nat)nat (= nat  nat) [n:nat](diag n): (n:nat)(Mat n n) [x:nat](leS x): (x:nat) (Le x(Sx)) Ax: (x:nat) (x=0)  ~(  y.x=Sy) [H:z=0](Ax z H): (H:z=0) ~(  y.z=Sy) (z=0)  ~(  y.z=Sy)

15 TPPSFProgramando pruebas - 15 Isomorfismo en Coq  Cuando constuimos una prueba de un enunciado en Coq, estamos construyendo un término del tipo correspondiente al enunciado.  La situación general es de la forma:  Tácticas: constructoras de términos  1 ? 1 :    n ? n :  n

16 TPPSFProgramando pruebas - 16 Construcción de pruebas en Coq Assumption: corresponde a la prueba H:   H:   ?:   ?:  Intro H: corresponde a la prueba [H:  ] ? 1 donde ? 1 será la prueba de  corresp. a:  H:   ? 1 :  Apply H: corresponde a la prueba (H ? 1 ) donde ? 1 será la prueba de  corresp. a:  H:   ?:   H:   ? 1 : 

17 TPPSFProgramando pruebas - 17 Construcción de pruebas en Coq (cont.) Cut  : corresponde a la prueba (? 1 ? 2 ) donde ? 1 y ? 2 serán las pruebas de  y  correspondientes a:  ?:   ? 1 :   y  ? 2 :   ?: (x:  )  Intro x: corresponde a la prueba [x:  ] ? 1 donde ? 1 será la prueba de  corresp. a:  x:   ? 1 :  ver que es exactamente la misma explicación que para el caso 

18 TPPSFProgramando pruebas - 18 Construcción de pruebas en Coq (cont.) Ejemplo:  H:(x:nat)(y:(P x))(Q x y) ?: (Q 0 a) Apply H (H 0 a): (Q 0 a)  0:nat  a:(P 0)  Apply H: corresponde a la prueba (H x 1  x 2  ) donde  es la sustitución que unifica a  con . x 1  :  1  y x 2  :  2  deberán ser consecuencias de   H :(x 1 :  1 )(x 2 :  2 )  ?:   x 2  :  2   x 1  :  1  y Coq chequea:

19 TPPSFProgramando pruebas - 19 Programando Pruebas Los resultados ya probados y las hipótesis pueden pensarse como objetos de ciertos tipos (en general, son funciones) –H1: A  B –Lema2: A Estas funciones pueden aplicarse a argumentos, que a su vez pueden ser pruebas de resultados o a otras hipótesis De esta forma, podemos utilizar las pruebas como objetos de un lenguaje funcional –(H1 Lema2): B

20 TPPSFProgramando pruebas - 20 Programando Pruebas Ejemplos H1: A  B H2: A B Exact (H1 H2) Probado!! H1: A  B  C H2: A H3: B C Exact ((H1 H2) H3) Probado!! H1: A H2: A  B H3: B  C C Exact (H3 (H2 H1)) Probado!!

21 TPPSFProgramando pruebas - 21 Programando Pruebas Ejemplos (cont.) H1: (x:A)B a: A B Apply (H1 a) Probado!! H1: A  (x:B)C H2: A z: B C Exact ((H1 H2) z) Probado!! H1: (x:A) B  C H2: B z: A C Exact ((H1 z) H2) Probado!!

22 TPPSFProgramando pruebas - 22 Tácticas para ver pruebas  Show Proof: muestra el término correspondiente a la prueba que se está armando  Show Tree: muestra la prueba como en el sistema de Deducción Natural  Print Natural: muestra la prueba hecha en el sistema de Deducción Natural en “lenguaje natural” (se necesita cargar el archivo Natural.vo)


Descargar ppt "TPPSFProgramando pruebas - 1 4. Programando Pruebas Isomorfismo de Curry-Howard."

Presentaciones similares


Anuncios Google