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

22
TPPSF Programando pruebas - 1 4. Programando Pruebas Isomorfismo de Curry-Howard

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

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

TPPSF Programando pruebas - 1

4. Programando PruebasIsomorfismo de Curry-Howard

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

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

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

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

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

TPPSF Programando pruebas - 4

Cálculo Proposicional MinimalDeducció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|-

|- |-

E

Reglas:

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

TPPSF Programando pruebas - 5

Deducción Natural en Coq

[n] |- lo vemos escrito H1:

Hn:n

|-

asscorresponde a Assumption

|- |-

I corresponde a Intro

|- |- |-

E corresponde a Apply o Cut (dependiendo de si está o no en

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

TPPSF Programando pruebas - 6

Cálculo simplemente tipadosistema de tipos

Juicios de la forma: |- e: “la expresión e tiene tipo bajo el contexto ”

=[x1:xn:n]

x: |- x:

|- x.e:x: |- e:

|- (e1 e2): |- e1: |- e2:

ctx

abs app

Reglas:

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

TPPSF Programando pruebas - 7

comparemos...

Deducción Natural

|-

|- |-

|- |- |-

Cálculo

x: |- x:

|- x.e:x: |- e:

|- (e1 e2): |- e1: |- e2:

ass

I

E

ctx

abs

app

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

TPPSF Programando pruebas - 8

Más similaridades: Reducciones

|- |-

|-

|-

I

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

cut

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

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

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

TPPSF Programando pruebas - 10

Cálculo de Predicados MinimalDeducción Natural

• Proposiciones atómicas y de la forma xA• Juicios de la forma: |-

“ se deduce a partir del conjunto de hipótesis y objetos ”=[x1AxmAm] [n]

|- xAxA |-

I|- (a)

|- xA |- aA E

Reglas: ass, I,E más:

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

TPPSF Programando pruebas - 11

En Coq...

[x1: Axm:Am] [n] |- lo vemos escrito

x1:A1

xm:Am

H1:

Hn:n

corresponde a Intro x

|- xAxA |-

I

corresponde a Apply|- (a)

|- xA |- aA E

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

TPPSF Programando pruebas - 12

Cálculo con tipos dependientessistema de tipos

• Juicios de la forma: |- e: “la expresión e tiene tipo bajo el contexto ”=[x1:xn:n]

|- x.e:x:

x: |- e: |- (e a): [a/x]

|- e: x:|- a:

abs app

Reglas: ctx más:

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

TPPSF Programando pruebas - 13

comparemos otra vez...

Deducción Natural Cálculo

|- xxA |-

|- (a)

|- xA |- aA

I

E

|- x.e:x:

x: |- e:

|- (e a): [a/x]

|- e: x:|- a:

abs

app

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

TPPSF Programando 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 (= natnat)

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

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

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

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

TPPSF Programando 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:

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

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

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

TPPSF Programando 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 x1 x2)

donde es la sustitución que unifica a con . x1 :1 y x2:2 deberán ser consecuencias de

H :(x1:1)(x2:2) ?:

x2:2

x1:1

yCoq chequea:

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

TPPSF Programando pruebas - 19

Programando Pruebas

• Los resultados ya probados y las hipótesis pueden pensarse como objetos de ciertos tipos (en general, son funciones)– H1: AB– 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

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

TPPSF Programando pruebas - 20

Programando PruebasEjemplos

H1: ABH2: A

B

Exact (H1 H2) Probado!!

H1: ABCH2: AH3: B

C

Exact ((H1 H2) H3) Probado!!

H1: A H2: ABH3: BC

C

Exact (H3 (H2 H1)) Probado!!

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

TPPSF Programando pruebas - 21

Programando PruebasEjemplos (cont.)

H1: (x:A)Ba: A

B

Apply (H1 a) Probado!!

H1: A(x:B)CH2: Az: B

C

Exact ((H1 H2) z) Probado!!

H1: (x:A) BCH2: Bz: A

C

Exact ((H1 z) H2) Probado!!

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

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