Práctica 3 (pre 2010, Paradigmas)

De Cuba-Wiki
Revisión del 17:19 28 abr 2008 de 200.114.228.37 (discusión) (→‎Ejercicio 02)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)

Plantilla:Back

Ejercicio 01

Ejercicio 02

  • a.
λx. λy. λz . (z x) y z 
           |(ABS)
λy. λz . (z x) y z
           |(ABS)
λz . (z x) y z
           |(ABS)
    (z x) y z
    |         |  (APP)
   (z x) y    z:s4
  |      | (APP)
 (z x)   y:s3
 |   | (APP)
z:s1 x:s2

Partiendo de abajo hacia arriba: (donde dice =, lease igual con puntito)

  • (APP) S = MGU {s1=s2->s5}={s2->s5/s1} ; Γ = {z:s2->s5,x:s2} |> z x : s5
  • (APP) S = MGU {s5=s3->s6}={s3->s6/s5} ; Γ = {z:s2->(s3->s6),x:s2,y:s3} |> (z x) y : s6
  • (APP) S = MGU {s6=s4->s7,s4=s2->(s3->s6)}={s2->(s3->s6)/s4,(s2->(s3->s6))->s7/s6}

De lo anterior se puede ver que s6 es un tipo infinito -> FALLA.

  • b.
λx. x (w (λy.w y)) 
       |(ABS)
  x (w (λy.w y)) 
 |            |   (APP)
x:s1      (w (λy.w y)) 
           |      |   (APP)
         w:s2  (λy.w y)
                 |  (ABS)
                w y
               |    | (APP)
              w:s3 y:s4

Partiendo de abajo hacia arriba: (donde dice =, lease igual con puntito)

  • (APP) S = MGU {s3=s4->s5}={s4->s5/s3} ; Γ = {w:s4->s5,y:s4} |> w y : s5
  • (ABS) Γ = {w:s4->s5} |> λy:s4.xy : s4->s5
  • (APP) S = MGU {s2=s4->s5,s2=(s4->s5)->s6}={s4->s5=(s4->s5)->s6}={(s4->s5)->s6/(s4->s5)}

De lo anterior se puede ver que (s4->s5) es un tipo infinito -> FALLA.

  • c.
( λz. λx. x (z (λy. z)) ) True
     |                      | (APP)
λz. λx. x (z (λy. z))     True:bool
   | (ABS)
λx. x (z (λy. z))
   | (ABS)
x (z (λy. z))
  |    | (APP)
x:s1 (z (λy. z))
       |    | (APP)
     z:s2  (λy. z)
             | (ABS)
            z:s3

Partiendo de abajo hacia arriba: (donde dice =, lease igual con puntito)

  • (ABS) Γ = {z:s3} |> λy:s4. z : s4->s3
  • (APP) S = MGU {s2=s3,s2=(s4->s3)->s5}={s3=(s4->s3)->s5}={(s4->s3)->s5/s3}

De lo anterior se puede ver que s3 es un tipo infinito -> FALLA.

Ejercicio 03

Ejercicio 04

Ejercicio 05

Ejercicio 06

Ejercicio 07

Ejercicio 08

Ejercicio 09

Extender el algoritmo de inferencia para soportar la inferencia de tipos de arboles binarios. En esta extension del algoritmo solo se consideraran los constructores del arbol.

Respuesta:

Sean 0 el contexto vacio, G el contexto gamma, U la union, _s sub sigma, =:= la unificacion de tipos:

W(nil_s) = 0 |> nil_s : ABs
W(bin_s(M,N,O)) = SG1 U SG2 U SG3 |> S(bin_s(M,N,O)) : ABs donde
 W(M) = G1 |> M : rho
 W(N) = G2 |> N : tau
 W(O) = G3 |> O : phi
 S = MGU {tau =:= s, rho =:= ABs, phi =:= ABs} U
      U {mu1 =:= mu2 | x : mu1 in Gi, x : mu2 in Gj, i != j}


Escribir las reglas de tipado e inferencia para el case de arboles binarios, y la regla analoga en el algoritmo de inferencia.

Ejercicio 10