Una prueba constructiva del axioma de elección dependiente
Transcripción
Una prueba constructiva del axioma de elección dependiente
dPAω Resumen “Plan d’attaque” Una prueba constructiva del axioma de elección dependiente en lógica clásica Hugo Herbelin1, Étienne Miquey1,2 2 1 Team πr2 (INRIA), PPS, Université Paris-Diderot Fac. de Ingenierı́a, Universidad de la República, Uruguay 15 de Marzo 2016 Informatique IRIF fondamentale Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 1/ 24 Resumen dPAω “Plan d’attaque” En el capı́tulo anterior... Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 2/ 24 dPAω Resumen “Plan d’attaque” La meta 1 Objetivo : definir un sistema de tipos para tener una prueba del axioma de elección dependiente 2 Bonus : corrección del sistema sin meta-uso del axioma de elección 3 Super-bonus : equiconsistencia con otro sistema lógico Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 3/ 24 dPAω Resumen “Plan d’attaque” La meta 1 Objetivo : definir un sistema de tipos para tener una prueba del axioma de elección dependiente 2 Bonus : corrección del sistema sin meta-uso del axioma de elección 3 Super-bonus : equiconsistencia con otro sistema lógico Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 3/ 24 dPAω Resumen “Plan d’attaque” La meta 1 Objetivo : definir un sistema de tipos para tener una prueba del axioma de elección dependiente 2 Bonus : corrección del sistema sin meta-uso del axioma de elección 3 Super-bonus : equiconsistencia con otro sistema lógico Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 3/ 24 dPAω Resumen “Plan d’attaque” Teorı́a de tipos de Martin-Löf (1973) Ingredientes Γ, x : T ` p : A ∀I Γ ` λx.p : ∀x T A Γ, a : A ` p : B →I Γ ` λa.p : A → B Γ ` p : A[t/x] Γ`t:T Γ ` (t, p) : ∃x T A ∃I Γ ` p : ∃x T A(x) ∃E Γ ` prf p : A(wit p) Axioma de elección ACA : ∀x A ∃y B P(x, y ) → ∃f A→B ∀x A P(x, f (x)) ACA := λH.(λx. wit(Hx),λx. prf(Hx)) : ∀x A ∃y B P(x, y ) → ∃f A→B ∀x A P(x, f (x)) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 4/ 24 dPAω Resumen “Plan d’attaque” Lógica clásica vs tipos dependientes En lógica clásica : H0 :=callccα (1, φ(throwα (2, p)) : ∃xP(x) Restricción a la elección numerable : ACN : ∀x N ∃y B P(x, y ) → ∃f N→B ∀x N P(x, f (x)) Prueba : Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 5/ 24 dPAω Resumen “Plan d’attaque” Lógica clásica vs tipos dependientes En lógica clásica : H0 :=callccα (1, φ(throwα (2, p)) : ∃xP(x) Restricción a la elección numerable : ACN : ∀x N ∃y B P(x, y ) → ∃f N→B ∀x N P(x, f (x)) Prueba : Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 5/ 24 dPAω Resumen “Plan d’attaque” Lógica clásica vs tipos dependientes En lógica clásica : H0 :=callccα (1, φ(throwα (2, p)) : ∃xP(x) Restricción a la elección numerable : ACN : ∀x N ∃y B P(x, y ) → ∃f N→B ∀x N P(x, f (x)) Prueba : Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 5/ 24 dPAω Resumen “Plan d’attaque” Lógica clásica vs tipos dependientes En lógica clásica : H0 :=callccα (1, φ(throwα (2, p)) : ∃xP(x) Restricción a la elección numerable : ACN : ∀x N ∃y B P(x, y ) → ∃f N→B ∀x N P(x, f (x)) Prueba : AC := λH.(λn. wit(Hn), λn. prf(Hn)) AC := λH.(λn.if n = 0 then wit H 0 else λn.if n = 1 then wit H 1 else ... , λn.if n = 0 then prf H 0 else λn.if n = 1 then prf H 1 else ... ) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 5/ 24 dPAω Resumen “Plan d’attaque” Lógica clásica vs tipos dependientes En lógica clásica : H0 :=callccα (1, φ(throwα (2, p)) : ∃xP(x) Restricción a la elección numerable : ACN : ∀x N ∃y B P(x, y ) → ∃f N→B ∀x N P(x, f (x)) Prueba : AC := λH. let H0 = H 0 in let H1 = H 1 in ... (λn.if n = 0 then wit H0 else λn.if n = 1 then wit H1 else ... , λn.if n = 0 then prf H0 else λn.if n = 1 then prf H1 else ... ) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 5/ 24 dPAω Resumen “Plan d’attaque” Lógica clásica vs tipos dependientes En lógica clásica : H0 :=callccα (1, φ(throwα (2, p)) : ∃xP(x) Restricción a la elección numerable : ACN : ∀x N ∃y B P(x, y ) → ∃f N→B ∀x N P(x, f (x)) Prueba : AC := λH. let H∞ = (H 0, H 1, . . . , H n, . . .) in (λn.nth n H∞ , λn.nth n H∞ ) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 5/ 24 dPAω Resumen “Plan d’attaque” Lógica clásica vs tipos dependientes En lógica clásica : H0 :=callccα (1, φ(throwα (2, p)) : ∃xP(x) Restricción a la elección numerable : ACN : ∀x N ∃y B P(x, y ) → ∃f N→B ∀x N P(x, f (x)) Prueba : AC := λH. let H∞ = cofix0fn (H n, f (S(n))) in (λn.nth n H∞ , λn.nth n H∞ ) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 5/ 24 dPAω Resumen “Plan d’attaque” dPAω Ref : Hugo Herbelin (LICS’12) A Constructive Proof of Dependent Choice, Compatible with Classical Logic Un sistema formal : clásico : p, q ::= ... | catchα p | throwα p con tipos dependientes : fórmulas : A, B ::= ... | [a : A] → B | t = u, términos : t, u ::= ... | wit p, pruebas : p, q ::= ... | prf p una compartimentación : Γ ` p : ∃x T A(x) p Nef Γ ` prf p : A(wit p) Γ ` p : ∃x T A(x) Γ, x : T , a : A ` q : B Γ ` dest p as ((x, a)) in q : B call-by-value y sharing : p, q ::= ... | let a = q in p con constructores inductivos y coinductivos : p, q ::= ... | ind t of [p | (x, a).q] | cofixtbn p pereza para el cofix Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 6/ 24 dPAω Resumen “Plan d’attaque” Lenguaje Términos t, u ::= x | 0 | S(t) | rec t of [t | (x, y ).t] | λx.t | t u | wit p Pruebas p, q ::= | | | | | | | | Étienne Miquey a | () | ιi (p) | (p1 , p2 ) | (t, p) | λa.p | λx.p case p of [a1 .p1 | a2 .p2 ] split p as (a1 , a2 ) in q dest p as (x, a) in q let a = q in p p q | p t | exfalso p cofixtbx p | ind t of [p0 | (x, a).pS ] refl | subst p q | prf p catchα p | throwα p Una prueba constructiva del axioma de elección dependiente en lógica clásica 7/ 24 dPAω Resumen “Plan d’attaque” Reglas de reducción Términos : wit(t, p) (λx.t)u rec 0 of [t0 | (x, y ).tS ] rec S(t) of [t0 | (x, y ).tS ] Étienne Miquey B B B B t t[u/x] t0 tS [t/x][rec t of [t0 | (x, y ).tS ]/y ] Una prueba constructiva del axioma de elección dependiente en lógica clásica 8/ 24 dPAω Resumen “Plan d’attaque” Reglas de reducción Call-by-value : let a = ιi (p) in q let a = (p1 , p2 ) in q let a = (t, p) in q let a = λx.p in q let a = λb.p in q let a = () in q let a = b in q B B B B B B B let b = p in q[ιi (b)/a] let a1 = p1 in let a2 = p2 in q[(a1 , a2 )/a] let b = p in q[(t, b)/a] q[λx.p/a] q[λb.p/a] q[()/a] q[b/a] case ιi (p) of [a1 .p1 | a2 .p2 ] split(p1 , p2 ) as (a1 , a2 ) in q dest(t, p) as (x, a) in q prf(t, p) (λa.p)q (λx.p)t subst refl p ind 0 of [p0 | (x, a).pS ] ind S(t) of [p0 | (x, a).pS ] B B B B B B B B B let ai = p in pi let a1 = p1 in let a2 = p2 in q let a = p in q[t/x] p let a = q in p p[t/x] p p0 pS [t/x][ind t of [p0 | (x, a).pS ]/a] Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 8/ 24 dPAω Resumen “Plan d’attaque” Reglas de reducción Lógica clásica : F [exfalso p] F [throwα p] F [catchα p] B exfalso p B throwα p B catchα F [p[F /α]] exfalso exfalso p B exfalso p exfalso throwβ p B throwβ p exfalso catchα p B exfalso p[exfalso[]/α] throwβ exfalso p throwβ throwα p throwβ catchα p catchα throwα p catchβ catchα p Étienne Miquey B B B B B exfalso p throwα p throwβ p[β/α] catchα p catchβ p[β/α] Una prueba constructiva del axioma de elección dependiente en lógica clásica 8/ 24 dPAω Resumen “Plan d’attaque” Reglas de reducción Cofix : pereza : Fc [] ::= case[] of [a1 .p1 | a2 .p2 ] | split[] as (a1 , a2 ) in q | dest[] as (x, a) in q Fc [cofixtax p] B let c = cofixtax p in Fc [c] desplegamiento : let a = cofixtx,b p in D[Fc [a]] B let a = p[λy .cofixybx p/b][t/x] in D[Fc [a]] control : C [] ::= exfalso[] | throwβ [] | catchα [] let a = cofixtbx p in C [q] B C [let a = cofixtbx p in q] Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 8/ 24 dPAω Resumen “Plan d’attaque” Reglas de reducción Fórmulas : 0=0 0 = S(u) S(t) = 0 S(t) = S(u) t A νfx Étienne Miquey B B B B B > ⊥ ⊥ t=u y A[t/x][νfx A/f (x) = 0] Una prueba constructiva del axioma de elección dependiente en lógica clásica 8/ 24 dPAω Resumen “Plan d’attaque” Tipaje Γ ` p : ∃x T A(x) pNef Γ ` prf p : A(wit p) Γ ` p : [a : A] ⇒ B Γ`q:A a∈ / FV (B) si q no es Nef Γ ` p q : B[q/a] Negative-elimination-free N, M ::= ... | λa.p | (N, N) | ιi (N) | prf N | let a = M in N | ... # catchα , throwα , cofixxbn p, p q, p t sólo dentro de λa.p o λx.p Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 9/ 24 Resumen Γ � p1 : A1 Γ � (p1 , p2 ) : A1 ∧ A2 Tipaje Γ � p : A1 ∧ A 2 dPAω Γ � p2 : A2 Γ, a1 : A1 , a2 : A2 � q : B[(a1 , a2 )/a] ∧I Γ � p : Ai Γ � ιi (p) : A1 ∨ A2 “Plan d’attaque” ∨iI a � FV(B) if p not N-elimination-free a1 , a2 � FV(B) ∧E Γ � split p as (a1 , a2 ) in q : B[p/a] Γ � p : A1 ∨ A2 Γ, a(a : B[ι2 (a2 )/a] a � FV(B) if p not N-elimination-free a1 , a2 � FV(B) Γ�p:⊥ Γ � Γ, p :a2A : A2 �A p≡2 B 1 : :AA) 1 �∈ pΓ1 : B[ι1 (a1 )/a] axiom conv �I ⊥E ∨E Γ�a:A p : Bp of [a1 .p1 | a2 .pΓ :� Γ � exfalso p : C Γ Γ� �case B[p/a] 2 ] �: () Γ � pΓ �→ p2 :BA2 Γ � q : A a Γ� �FV(B) p : Ai if q not N-elimination-free 1 :�Ap1 : [a :ΓA] ∧I ∨iI →I →E Γ � (p1 , p2 ) : A1 ∧ A2 : A1 ∨ A2 Γ � λa.p : [a : A] → B Γ �Γ p�qιi:(p) B[q/a] Γ, a : A � p : B Γ � p : A1 ∧ A 2 Γ � p : A1 ∨ A2 Γ, a1 : A1 , a2 : AΓ Γ �if pp: not ∀x AN-elimination-free A 1 , ax2 )/a] fresh in aΓ � FV(B) 2 �� qp :: B[(a ∀I ∀E ΓΓ� �split λx.p : p∀xasA (a1 , a2 ) in Γq �: B[p/a] p t : A[t/x] a1 , a2 � FV(B) Γ, a1 : A1 � p1 : B[ιΓ1 (a Γ, a2 : A2 Γ � �p2p: :B[ι a � FV(B) if p not N-elimination-free ∃x2 (a2 )/a] p is N-elimination-free � 1p)/a] : A[t/x] ∃I ∃prf E Γ � (t, p) : ∃x p 2:]A[wit p/x] Γ �A case p of [aΓ1 .p� 1prf | a2 .p : B[p/a] ∧E a1 , a2 � FV(B) ∨E Γ � p : ∃x AΓ, a : Γ, � q : B[(x, a)/b] if p notifN-elimination-free a � FV(B) Γ � p : [ax :fresh A] →inB Γ Γ � qb :�AFV(B) a � FV(B) q not N-elimination-free A �a p: A: B ∃E →I →E Γ � dest p as (x, a) inΓq�: pB[p/b] Γ � λa.p : [a : A] → B q : B[q/a] p : ∀x x fresh inΓ Γ� p : A Γ �(α A⊥⊥A) ∈ Γ ∀I ∀Ethrow catch Γ � p tα :pA[t/x] Γ � catchαΓp�: λx.p A : ∀x A Γ � throw :C Γ, α : Γ A⊥⊥� �p :p A: A Fig. 1. dPL: a classical predicate strong existential Γ�p Γ �logic p : with A[t/x] : ∃x p is N-elimination-free ∃I ∃prf E Γ � (t, p) : ∃x A Γ � prf p : A[wit p/x] to express this dependency, underlining the fact that a When known not dependent, we might shorten the Ana)/b] advantagex of allowing writing of [aif: pA]not → N-elimination-free B into the more conventional A→ Γ can � p :occur ∃x A in some Γ, a :term A � in q : B. B[(x, fresh in Γ b � FV(B) a � FV(B) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 9/ 24 dPAω Resumen “Plan d’attaque” Tipaje The rules axiom, conv, � , ⊥ , ∧ , ∧ , ∨ , ∨ , → , → , catch, throw of Figure 1 and the following rules: I E I i I E E Γ, x : T � p : A Γ�t:T Γ � (t, p) : ∃xT A Γ�t:T Γ � pt : A[t/x] Γ � p : ∃xT A ∃I Γ � p : ∃xT A E Γ � p : ∀xT A ∀I Γ � λx.p : ∀xT A Γ � p : A[t/x] I Γ, x : T, a : A � q : B Γ � dest p as (x, a) in q : B p is N-elimination-free Γ � prf p : A[wit p/x] Γ�t:N refl Γ � refl : t = t Γ�t:N Γ�p:t=u Γ, a : A � q : B ind a � FV(B) if p not N-elimination-free Γ, f : T → N, x : T, b : ∀y f (y) = 0 � p : A Γ� Étienne Miquey subst Γ, x : T, a : A � q : A[S (x)/x] Γ � let a = p in q : B[p/a] Γ�t:T x � Dom(Γ) Γ � subst p q : A[u/x] Γ � p : A[0/x] ∃E ∃prf E Γ � q : A[t/x] Γ � ind t of [p | (x, a).q] : A[t/x] Γ�p:A ∀E cofixtbx p : νft x A cut f positive in A νI Una prueba constructiva del axioma de elección dependiente en lógica clásica 9/ 24 dPAω Resumen ind Γ � ind t of [p | (x, a).q] : A[t/x] Tipaje Γ�p:A Γ, a : A � q : B a � FV(B) if p not N-elimination-free cut Γ � let a = p in q : B[p/a] Γ�t:T Γ, f : T → N, x : T, b : ∀y f (y) = 0 � p : A Γ� (x : T ) ∈ Γ Γ, x : U � t : T Γ�x:T Γ � λx.t : U → T Γ�t:N Γ � t0 : U cofixtbx p : f positive in A νI νft x A Γ�t:U→T Γ�u:U Γ�t:N Γ � tu : T Γ, x : N, y : U � tS : U Γ � rec t of [t0 | (x, y).tS ] : U Fig. 4. “Plan d’attaque” Γ�0:N Γ � p : ∃xT A Γ � S (t) : N p is N-elimination-free Γ � wit p : T ∃wit E dPAω : Classical arithmetic in finite types with strong existential the derived computational content is not the one we • if p, q, p1 and p2 are N-elimination-free th want because of the use of non positive connectives in prf p, ιi (p), (p1 , p2 ), (t, p), ind t of [p1 | (x, a).p the second-order encoding, what justifies taking νI and let a = p in q, refl, subst p its associated reduction rule as primitive. Indeed, with case a of [a1 .p1 | a2 .p2 ], dest q as (x, a) in p a a primitive notion of coinductive formula, it becomes split q as (a1 , a2 ) in p are N-elimination-free syntactically direct to see ν as a constructor of positive formulae. In particular, and this is important later on The resulting theory is then essentially Troelstr to prove the axioms of countable choice and arithmetic in all finite clásica types HAω (with9/equality Étienne Miquey Una prueba constructiva del dependent axioma de elección dependiente en lógica 24 dPAω Resumen “Plan d’attaque” Elección numerable Elección numerable ACN := ?? : ∀n∃yP(n, y ) → ∃f ∀nP(n, f (n)) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 10/ 24 dPAω Resumen “Plan d’attaque” Elección numerable Elección numerable ACN := λH.let a = cofix0bn (Hn, b(S(n)) in (λn. wit(nth(n, a)), λn. prf(nth(n, a)) : ∀n∃yP(n, y ) → ∃f ∀nP(n, f (n)) dónde nth(n, a) := π1 (ind n of [a | (x, c).π2 (c)]) Proof : # pizarrón Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 10/ 24 dPAω Resumen “Plan d’attaque” Elección numerable Elección numerable ACN := λH.let a = cofix0bn (Hn, b(S(n)) in (λn. wit(nth(n, a)), λn. prf(nth(n, a)) : ∀n∃yP(n, y ) → ∃f ∀nP(n, f (n)) dónde nth(n, a) := π1 (ind n of [a | (x, c).π2 (c)]) Proof : # pizarrón Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 10/ 24 dPAω Resumen “Plan d’attaque” Elección dependiente Elección dependiente DC Étienne Miquey := ?? : ∀x∃yP(x, y ) → ∀x0 ∃f (f (0) = x0 ∧ ∀nP(f (n), f (S(n)))) Una prueba constructiva del axioma de elección dependiente en lógica clásica 11/ 24 dPAω Resumen “Plan d’attaque” Elección dependiente Elección dependiente DC := λHλx0 .let b = s H x0 in (λn. wit(nth(n, x0 , b)), refl, λn.π1 (prf(prf(nth(n, x0 , b))))) : ∀x∃yP(x, y ) → ∀x0 ∃f (f (0) = x0 ∧ ∀nP(f (n), f (S(n)))) dónde sax := cofixxbn dest b n as (y , c) in (y , (c, b y )) nth(n, x0 , b) := ind n of [b | (m, c).(wit(prf(c), π2 (prf(prf(c)))))] Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 11/ 24 Resumen dPAω “Plan d’attaque” El drama (Dónde se ve que en la vida nada es fácil) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 12/ 24 dPAω Resumen “Plan d’attaque” Propiedades Subject reduction Si Γ ` p : A y p B q, entonces Γ ` q : A. Normalización Si Γ ` p : A entonces p se normaliza. Correción 0dPAω ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 13/ 24 dPAω Resumen “Plan d’attaque” Propiedades Subject reduction Si Γ ` p : A y p B q, entonces Γ ` q : A. Normalización Si Γ ` p : A entonces p se normaliza. Correción 0dPAω ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 13/ 24 dPAω Resumen “Plan d’attaque” Propiedades Subject reduction Si Γ ` p : A y p B q, entonces Γ ` q : A. Normalización Si Γ ` p : A entonces p se normaliza. Correción 0dPAω ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 13/ 24 dPAω Resumen “Plan d’attaque” Corrección Conservatividad Si A es →-ν-wit-∀-free, y `dPAω p : A, entonces existe V tq `HAω V : A Conservatividad (bis) Si A es Σ01 , `dPAω A implica `HAω A Correción 0dPAω ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 14/ 24 dPAω Resumen “Plan d’attaque” Corrección Conservatividad Si A es →-ν-wit-∀-free, y `dPAω p : A, entonces existe V tq `HAω V : A Proof : Sea p : A un término de prueba cerrado. Por normalización, p se reduce en : V : ∗-freeness de A implica que V no contiene catchα , throwα , prf / FV (V ) D[V ] con D[] := let a = cofixtb,x p in D[] y a ∈ catchα D[V ] : necesariamente α ∈ / FV (V ) Conservatividad (bis) Si A es Σ01 , `dPAω A implica `HAω A Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 14/ 24 dPAω Resumen “Plan d’attaque” Corrección Conservatividad Si A es →-ν-wit-∀-free, y `dPAω p : A, entonces existe V tq `HAω V : A Conservatividad (bis) Si A es Σ01 , `dPAω A implica `HAω A Proof : Toda formula Σ01 es equivalente a una formula →-ν-wit-∀-free. Correción 0dPAω ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 14/ 24 dPAω Resumen “Plan d’attaque” Corrección Conservatividad Si A es →-ν-wit-∀-free, y `dPAω p : A, entonces existe V tq `HAω V : A Conservatividad (bis) Si A es Σ01 , `dPAω A implica `HAω A Correción 0dPAω ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 14/ 24 dPAω Resumen “Plan d’attaque” Normalización Normalización Si Γ `dPAω p : A entonces p se normaliza. Proof ? Si p no tiene cofixtx,b q, p termina Si p no tiene catchα / throwα , p termina Pero si tiene los dos... # exploración infinita de una rama co-inductiva # sub-secuencia sı́n backtrack # y eso no puede ser ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 15/ 24 dPAω Resumen “Plan d’attaque” Normalización Normalización Si Γ `dPAω p : A entonces p se normaliza. Proof ? Si p no tiene cofixtx,b q, p termina Si p no tiene catchα / throwα , p termina Pero si tiene los dos... # exploración infinita de una rama co-inductiva # sub-secuencia sı́n backtrack # y eso no puede ser ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 15/ 24 dPAω Resumen “Plan d’attaque” Normalización Normalización Si Γ `dPAω p : A entonces p se normaliza. Proof ? Si p no tiene cofixtx,b q, p termina Si p no tiene catchα / throwα , p termina Pero si tiene los dos... # exploración infinita de una rama co-inductiva # sub-secuencia sı́n backtrack # y eso no puede ser ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 15/ 24 dPAω Resumen “Plan d’attaque” Normalización Normalización Si Γ `dPAω p : A entonces p se normaliza. Proof ? Si p no tiene cofixtx,b q, p termina Si p no tiene catchα / throwα , p termina Pero si tiene los dos... # exploración infinita de una rama co-inductiva # sub-secuencia sı́n backtrack # y eso no puede ser ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 15/ 24 dPAω Resumen “Plan d’attaque” Normalización Normalización Si Γ `dPAω p : A entonces p se normaliza. Proof ? Si p no tiene cofixtx,b q, p termina Si p no tiene catchα / throwα , p termina Pero si tiene los dos... # exploración infinita de una rama co-inductiva # sub-secuencia sı́n backtrack # y eso no puede ser ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 15/ 24 dPAω Resumen “Plan d’attaque” Propiedades Subject reduction Si Γ ` p : A y p B q, entonces Γ ` q : A. Normalización Si Γ ` p : A entonces p se normaliza. Conservatividad If A is →-ν-wit-∀-free, and `dPAω p : A, then `HAω p : A Corrección 0dPAω ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 16/ 24 dPAω Resumen “Plan d’attaque” Propiedades Subject reduction Si Γ ` p : A y p B q, entonces Γ ` q : A. Normalización Si Γ ` p : A entonces p se normaliza. Conservatividad If A is →-ν-wit-∀-free, and `dPAω p : A, then `HAω p : A Corrección 0dPAω ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 16/ 24 dPAω Resumen “Plan d’attaque” Propiedades Subject reduction Si Γ ` p : A y p B q, entonces Γ ` q : A. Normalización Si Γ ` p : A entonces p se normaliza. Conservatividad If A is →-ν-wit-∀-free, and `dPAω p : A, then `HAω p : A Corrección 0dPAω ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 16/ 24 dPAω Resumen “Plan d’attaque” Propiedades Subject reduction Si Γ ` p : A y p B q, entonces Γ ` q : A. Normalización Si Γ ` p : A entonces p se normaliza. Conservatividad If A is →-ν-wit-∀-free, and `dPAω p : A, then `HAω p : A Corrección 0dPAω ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 16/ 24 dPAω Resumen “Plan d’attaque” Propiedades Subject reduction Si Γ ` p : A y p B q, entonces Γ ` q : A. Normalización Si Γ ` p : A entonces p se normaliza. Conservatividad If A is →-ν-wit-∀-free, and `dPAω p : A, then `HAω p : A Corrección 0dPAω ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 16/ 24 dPAω Resumen “Plan d’attaque” Le plan d’attaque (Rumbo a las peripecias) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 17/ 24 dPAω Resumen “Plan d’attaque” Continuación : aspecto computaciónal Intuición Continuación = reificación del futuro de la computación Continuation-passing style (CPS) Pasaje de una continuación a cada étapa del cálculo. Técnica muy utilizada en compilación Explicitación del control # ejemplo : (a + b) + c Muy útil para definir los operadores de control como cc ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 18/ 24 dPAω Resumen “Plan d’attaque” Continuación : aspecto computaciónal Intuición Continuación = reificación del futuro de la computación Continuation-passing style (CPS) Pasaje de una continuación a cada étapa del cálculo. Técnica muy utilizada en compilación Explicitación del control # ejemplo : (a + b) + c Muy útil para definir los operadores de control como cc ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 18/ 24 dPAω Resumen “Plan d’attaque” Continuación : aspecto computaciónal Intuición Continuación = reificación del futuro de la computación Continuation-passing style (CPS) Pasaje de una continuación a cada étapa del cálculo. Técnica muy utilizada en compilación Explicitación del control # ejemplo : (a + b) + c Muy útil para definir los operadores de control como cc ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 18/ 24 dPAω Resumen “Plan d’attaque” Continuación : aspecto lógico Lógica clásica : lógica intuicionista + axioma clásica Encaje en lógica intuicionista : # traducción negativa : A 7→ (A → ⊥) → ⊥ Cálculo clásico : cálculo intuicionista + manipulación explicita de continuaciones “compilación” en un cálculo intuicionista : # traducción CPS : t : A 7→ JtK : (A → ⊥) → ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 19/ 24 dPAω Resumen “Plan d’attaque” Continuación : aspecto lógico Lógica clásica : lógica intuicionista + axioma clásica Encaje en lógica intuicionista : # traducción negativa : A 7→ (A → ⊥) → ⊥ Cálculo clásico : cálculo intuicionista + manipulación explicita de continuaciones “compilación” en un cálculo intuicionista : # traducción CPS : t : A 7→ JtK : (A → ⊥) → ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 19/ 24 dPAω Resumen “Plan d’attaque” Continuación : aspecto lógico Lógica clásica : lógica intuicionista + axioma clásica Encaje en lógica intuicionista : # traducción negativa : A 7→ (A → ⊥) → ⊥ Cálculo clásico : cálculo intuicionista + manipulación explicita de continuaciones “compilación” en un cálculo intuicionista : # traducción CPS : t : A 7→ JtK : (A → ⊥) → ⊥ Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 19/ 24 dPAω Resumen “Plan d’attaque” Normalización por CPS Lenguaje 1 : λ-coso, reducción, tipaje Lenguaje 2 : λ-cosa, reducción, tipaje, normalización Normalización Γ `1 p : A ⇒ p normaliza. Proof : 1 Si Γ `1 p : A 2 Si p →1 q entonces entonces JΓK `2 JpK : JAK + JpK →2 JqK # si p no normalizaba, tampoco normalizarı́a JpK, absurdo ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 20/ 24 dPAω Resumen “Plan d’attaque” Normalización por CPS Lenguaje 1 : λ-coso, reducción, tipaje Lenguaje 2 : λ-cosa, reducción, tipaje, normalización Normalización Γ `1 p : A ⇒ p normaliza. Proof : Γ `1 p : A 1 Si 2 Si p →1 q entonces entonces JΓK `2 JpK : JAK + JpK →2 JqK # si p no normalizaba, tampoco normalizarı́a JpK, absurdo ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 20/ 24 dPAω Resumen “Plan d’attaque” Normalización por CPS Lenguaje 1 : λ-coso, reducción, tipaje Lenguaje 2 : λ-cosa, reducción, tipaje, normalización Normalización Γ `1 p : A ⇒ p normaliza. Proof : Γ `1 p : A 1 Si 2 Si p →1 q entonces entonces JΓK `2 JpK : JAK + JpK →2 JqK # si p no normalizaba, tampoco normalizarı́a JpK, absurdo ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 20/ 24 dPAω Resumen “Plan d’attaque” Normalización por CPS Lenguaje 1 : λ-coso, reducción, tipaje Lenguaje 2 : λ-cosa, reducción, tipaje, normalización Normalización Γ `1 p : A ⇒ p normaliza. Proof : Γ `1 p : A 1 Si 2 Si p →1 q entonces entonces JΓK `2 JpK : JAK + JpK →2 JqK # si p no normalizaba, tampoco normalizarı́a JpK, absurdo ! Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 20/ 24 dPAω Resumen “Plan d’attaque” Normalización por CPS Interes : método clásico, entre otras cosas para cálculo clásico permite un entendimiento profundo traducción de tipos ! sin meta-uso del axioma de elección ? Inconvenientes : muy técnico nuestro lenguaje es poco estándar Dificultad : let a = cofixtbx p in C [q] B C [let a = cofixtbx p in q] Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 20/ 24 dPAω Resumen “Plan d’attaque” Normalización por CPS Interes : método clásico, entre otras cosas para cálculo clásico permite un entendimiento profundo traducción de tipos ! sin meta-uso del axioma de elección ? Inconvenientes : muy técnico nuestro lenguaje es poco estándar Dificultad : let a = cofixtbx p in C [q] B C [let a = cofixtbx p in q] Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 20/ 24 dPAω Resumen “Plan d’attaque” Normalización por CPS Interes : método clásico, entre otras cosas para cálculo clásico permite un entendimiento profundo traducción de tipos ! sin meta-uso del axioma de elección ? Inconvenientes : muy técnico nuestro lenguaje es poco estándar Dificultad : let a = cofixtbx p in C [q] B C [let a = cofixtbx p in q] Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 20/ 24 dPAω Resumen “Plan d’attaque” Semantic artefacts CPS : Ariola et al (FLOPS’12) Classical Call-by-Need Sequent Calculi : The Unity of Semantic Artifacts Semántica operacional : Cálculo big-step : variante del λ̄µµ̃-cálculo ? Definición small-step # reducción context-free Traducción CPS : variante del λ-cálculo ? Corrección computacional Normalización : Tipaje de la traducción : sistema F ? Happy end ? Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 21/ 24 dPAω Resumen “Plan d’attaque” Semantic artefacts CPS : Ariola et al (FLOPS’12) Classical Call-by-Need Sequent Calculi : The Unity of Semantic Artifacts Semántica operacional : Cálculo big-step : variante del λ̄µµ̃-cálculo ? Definición small-step # reducción context-free Traducción CPS : variante del λ-cálculo ? Corrección computacional Normalización : Tipaje de la traducción : sistema F ? Happy end ? Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 21/ 24 dPAω Resumen “Plan d’attaque” Semantic artefacts CPS : Ariola et al (FLOPS’12) Classical Call-by-Need Sequent Calculi : The Unity of Semantic Artifacts Semántica operacional : Cálculo big-step : variante del λ̄µµ̃-cálculo ? Definición small-step # reducción context-free Traducción CPS : variante del λ-cálculo ? Corrección computacional Normalización : Tipaje de la traducción : sistema F ? Happy end ? Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 21/ 24 dPAω Resumen “Plan d’attaque” Semantic artefacts CPS : Ariola et al (FLOPS’12) Classical Call-by-Need Sequent Calculi : The Unity of Semantic Artifacts Semántica operacional : Cálculo big-step : variante del λ̄µµ̃-cálculo ? Definición small-step # reducción context-free Traducción CPS : variante del λ-cálculo ? Corrección computacional Normalización : Tipaje de la traducción : sistema F ? Happy end ? Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 21/ 24 dPAω Resumen “Plan d’attaque” Semantic artefacts CPS : Ariola et al (FLOPS’12) Classical Call-by-Need Sequent Calculi : The Unity of Semantic Artifacts Semántica operacional : Cálculo big-step : variante del λ̄µµ̃-cálculo ? Definición small-step # reducción context-free Traducción CPS : variante del λ-cálculo ? Corrección computacional Normalización : Tipaje de la traducción : sistema F ? Happy end ? Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 21/ 24 dPAω Resumen “Plan d’attaque” Un avant-goût Pizarrón : normalización por CPS del λc -cálculo Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 22/ 24 dPAω Resumen “Plan d’attaque” Parentesis Call-by-name : (λa.p) ? (ccq) · π → p[ccq/a] ? π CPS : Jp ? πK := JpK JπK Jλa.pK k := k (λa.JpK) Jq · πK p := p JqK JπK Call-by-value : λa.p ? ccq · e JA → BK := ¬¬(¬¬JAK → ¬¬JBK) → ccq ? [λa.p] · e ? → V ? λa.p · π → p[V /a] ? π CPS : Jp ? πK := JpK JπK Jλa.pK k := k (λa.JpK) Jq · πK p := JqK(λu.p u JπK) JA → BK := ¬¬(JAK → ¬¬JBK) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 23/ 24 dPAω Resumen “Plan d’attaque” Parentesis Call-by-name : (λa.p) ? (ccq) · π → p[ccq/a] ? π CPS : Jp ? πK := JpK JπK Jλa.pK k := k (λa.JpK) Jq · πK p := p JqK JπK Call-by-value : λa.p ? ccq · e JA → BK := ¬¬(¬¬JAK → ¬¬JBK) → ccq ? [λa.p] · e ? → V ? λa.p · π → p[V /a] ? π CPS : Jp ? πK := JpK JπK Jλa.pK k := k (λa.JpK) Jq · πK p := JqK(λu.p u JπK) JA → BK := ¬¬(JAK → ¬¬JBK) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 23/ 24 Resumen dPAω “Plan d’attaque” En el próximo (y último capı́tulo)... λ̄µµ̃ : un cálculo de secuentes (Nuestra arma principal y su uso) Étienne Miquey Una prueba constructiva del axioma de elección dependiente en lógica clásica 24/ 24