lambdaC

download lambdaC

of 105

description

ejercicios scheme

Transcript of lambdaC

  • El calculo (sin tipos y con tipos)

    Blas Carlos Ruiz JimenezPablo Guerrero Garca

    Dpto. de Lenguajes y Ciencias de la ComputacionDpto. de Matematica Aplicada

    Universidad de MalagaPza. El Ejido s/n, 29013Malaga, Espana

    [email protected]

    [email protected]

    fax34521313973452132766

    6th March 2002

  • ii

  • Contents

    I El calculo sin tipos 1

    0 Lambda expresiones 3

    0.0 Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    0.1 Variables libres y asociadas . . . . . . . . . . . . . . . . . . . . . 6

    0.2 Subterminos y contextos . . . . . . . . . . . . . . . . . . . . . . . 7

    1 Semantica operacional 9

    1.0 Evaluacion de expresiones . . . . . . . . . . . . . . . . . . . . . 9

    1.0.0 reduccion . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    1.0.1 conversion . . . . . . . . . . . . . . . . . . . . . . . . . 10

    1.1 Reduccion en . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    1.1.0 Relaciones definibles en . . . . . . . . . . . . . . . . . . 12

    1.1.1 teoras . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    1.2 Sustituciones y equivalencias . . . . . . . . . . . . . . . . . . . 15

    1.2.0 Convenio de variables y concepto de sustitucion . . . . . . 15

    1.2.1 La sustitucion frente a las relaciones en . . . . . . . . . 19

    1.3 Etaconversion y extensionalidad . . . . . . . . . . . . . . . . . . 22

    2 Formas normales 25

    2.0 El concepto de forma normal . . . . . . . . . . . . . . . . . . . . 25

    2.1 Confluencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    2.2 Los teoremas de ChurchRosser . . . . . . . . . . . . . . . . . . . 30

    2.3 Formas normales por la cabeza . . . . . . . . . . . . . . . . . . . 35

    2.3.0 Ordenes de reduccion . . . . . . . . . . . . . . . . . . . . 35

    2.3.1 El teorema de estandarizacion . . . . . . . . . . . . . . . . 36

    iii

  • iv CONTENTS

    2.4 Formas debilnormales . . . . . . . . . . . . . . . . . . . . . . . . 42

    3 Teora de combinadores 45

    3.0 Combinadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    3.0.0 Los combinadores estandares . . . . . . . . . . . . . . . . 45

    3.0.1 Potencias y potencias de K . . . . . . . . . . . . . . . . . 46

    3.1 La teora de combinadores . . . . . . . . . . . . . . . . . . . . . . 47

    3.1.0 Fundamentos de LC . . . . . . . . . . . . . . . . . . . . . 473.1.1 Relacion entre terminos y terminos combinatorios . . . 50

    3.1.2 Reduccion en forma perezosa . . . . . . . . . . . . . . . . 51

    3.1.3 Generadores y bases . . . . . . . . . . . . . . . . . . . . . 53

    3.1.4 Equivalencia entre C y LC . . . . . . . . . . . . . . . . . 533.2 Puntos fijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    3.2.0 Expresando la recursion . . . . . . . . . . . . . . . . . . . 55

    3.2.1 Combinadores para puntos fijos . . . . . . . . . . . . . . . 56

    4 Lambda definibilidad 61

    4.0 Operaciones logicas . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    4.0.0 Constantes y operaciones logicas . . . . . . . . . . . . . . 61

    4.1 Computabilidad y definibilidad . . . . . . . . . . . . . . . . . . 62

    4.1.0 Sistemas de numerales y numerales de Church . . . . . . 62

    4.1.1 Funciones definibles y recursivas. Teorema de Kleene . 63

    4.1.2 Aritmetica y Numerales de Church . . . . . . . . . . . . . 65

    4.1.3 Extension del C con la aritmetica . . . . . . . . . . . . . 66

    4.2 Listas en el C puro . . . . . . . . . . . . . . . . . . . . . . . . . 66

    4.2.0 definibilidad de las funciones basicas para listas . . . . 66

    4.2.1 Las listas en un C con constantes . . . . . . . . . . . . . 68

    4.3 Autointerpretacion en el C . . . . . . . . . . . . . . . . . . . . . 69

    4.3.0 Un autointerprete para el C . . . . . . . . . . . . . . . . 69

    4.3.1 Aplicaciones de la autointerpretacion . . . . . . . . . . . . 70

    5 Solubilidad 71

    5.0 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    5.1 Concepto y caracterizacion de la solubilidad . . . . . . . . . . . . 72

    5.2 Interpretacion computacional de la solubilidad . . . . . . . . . . 73

  • CONTENTS v

    6 Semantica denotacional 75

    6.0 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    6.1 Interpretacion sobre un modelo aplicativo . . . . . . . . . . . . . 75

    6.2 Algebras combinatorias y algebras . . . . . . . . . . . . . . . . 78

    6.2.0 Algebras combinatorias . . . . . . . . . . . . . . . . . . . 78

    6.2.1 Interpretacion de terminos con constantes . . . . . . . . 78

    6.2.2 algebras . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

    6.3 modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    6.3.0 Concepto y caracterizacion . . . . . . . . . . . . . . . . . 80

    6.3.1 El modelo de terminos . . . . . . . . . . . . . . . . . . . . 82

    6.4 Modelos sintacticos . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    6.5 Modelos sobre dominios reflexivos . . . . . . . . . . . . . . . . . . 86

    6.6 Incompletitud de los modelos . . . . . . . . . . . . . . . . . . . 88

    6.6.0 El teorema de Bohm . . . . . . . . . . . . . . . . . . . . . 88

    6.6.1 Resolubilidad y resultados de complitud . . . . . . . . . . 91

    II El calculo con tipos 93

    III Apendices 95

  • vi CONTENTS

  • Prologo

    En la parte I presentamos un lenguaje simple llamado lambda calculo (C)que permite la descripcion de las funciones matematicas y de sus propiedades;fue introducido por Church en los anos 30 como fundamento de la matematica(funciones y logica) y constituye un modelo formal; muchos lenguajes funcionalesson a menudo descritos como un super C o C extendido; de hecho, los pro-gramas funcionales pueden ser traducidos a esta notacion.

    El principal problema del C como lenguaje funcional es la libertad paracombinar terminos, ya que es un lenguaje sin tipos (typefree); una forma derestringir tal libertad es con el C con tipos, introducido tambien por Church(1934) y Curry (1941). En la parte II nos ocuparemos del C con tipos.

    vii

  • viii CONTENTS

  • Part I

    El calculo sin tipos

    1

  • Chapter 0

    Lambda expresiones

    0.0 Sintaxis

    El lambda calculo (C) es un lenguaje simple que permite la descripcion delas funciones matematicas y de sus propiedades; fue introducido por Church enlos anos 30 como fundamento de la matematica (funciones y logica) y constituyeun modelo formal; muchos lenguajes funcionales (como Haskell [Ham95]) son amenudo descritos como un super C o C extendido; de hecho, los programasfuncionales pueden ser traducidos a esta notacion.

    EJEMPLO 0.0. La expresion Haskell \x -> 2 * x se escribe en el C as:

    x. 2 xy denota una funcion de un solo argumento tal que al objeto x le asocia el objeto 2 x.

    En el ejemplo anterior se observa que:

    El smbolo sirve para denotar funciones. El punto . se usa para separar el argumento (o variable instanciable)del cuerpo de la funcion.

    En el C se utiliza notacion prefija.

    Las expresiones como las del ejemplo 0.0 se llaman abstracciones (parasimplificar, A) y son un caso particular de expresiones (para simplificar,E) o terminos.

    La variable instanciable es muda; si sustituimos el identificador de la variablepor una nueva variable, sustituyendo tal variable tambien en el cuerpo, se realizauna conversion y se obtienen equivalencias alfabeticas, como en

    x. 2 x y. 2 y

    3

    InformaticaResaltado

    InformaticaResaltado

    InformaticaResaltado

  • 4 0. Lambda expresiones

    Una equivalencia con dos funciones significa que las dos funciones son lamisma, y por tanto debemos identificarlas; as escribiremos en lugar de (o tambien directamente ), con lo cual:

    x.x y.yx.y z.yx.x 6 z.x

    Luego para introducir una igualdad en el C (es decir, una teora con igual-dad) necesitaremos la regla o identificacion sintactica; el uso de ambas puedeplantear problemas como veremos mas tarde.

    El cuerpo de una A puede contener a su vez otra A.

    EJEMPLO 0.1. La expresion Haskell \x -> \y -> (x + y) * 2 se es-cribe en el C:

    x.y. (+ x y) 2aunque a veces la expresion anterior se suele escribir de forma mas compacta:

    xy. (+ x y) 2

    Observese que las abstraciones tienen un solo argumento (ello permite tra-ducir facilmente los lenguajes con parcializacion implcita); si es necesario es-pecificar varios se escriben en forma separada o bien se usa la forma compactapresentada en el ejemplo 0.1.

    Tambien se obtiene una E al aplicar una funcion a un objeto. As, aplicandola funcion del ejemplo 0.0 al objeto 3

    ( x. 2 x ) 3

    Luego la aplicacion en el C se hace como en todos los lenguajes funcionales; siaparecen varios argumentos convenimos en asociar por la izquierda (al igual queen Haskell, donde la parcializacion es implcita). De esta manera, las siguientesE son equivalentes sintacticamente:

    x.y.z.E x y z x.(y.(z.E) x) y) z

    Definicion 0.0 (Lambdaexpresion) La sintaxis BNF para las E es (tomadade [Bar84]):

    U exp ::= cons constante predefinida| var identificador de variable| ( var . exp ) abstraccion| ( exp exp ) aplicacion

    2

  • 0.0. Sintaxis 5

    NOTA Si prescindimos de las constantes se obtiene el C puro; en el presenteapartado aparecen algunos ejemplos con constantes pero podemos prescindir deellos si se pretende estudiar un C puro (siempre se dara un ejemplo alternativosin constantes). Si M y N son E, la combinacion (M N) es una E que se llama aplicacion;en la abstraccion x.E, x se llama la variable asociadora o ligadora (oinstanciable) y E se llama el cuerpo de la abstraccion.

    Convenio 0.0 Sobrecargamos el significado de (igualdad sintactica) con:

    Los parentesis mas externos no se escriben.

    La abstraccion es asociativa a la derecha:

    x1x2 . . . xn.M ~x.M x1.(x2.(. . . (xn.M) . . . ))

    donde ~x x1x2 . . . xn. Ademas, puede prescindirse del punto si va seguidode un parentesis abierto.

    La aplicacion es asociativa a la izquierda:

    M N1 N2 . . . Nn (. . . ((M N1) N2) . . . Nn)4

    EJEMPLO 0.2. Con el convenio anterior se tienen las igualdades sintacticas:

    Eliminacion de parentesis externos:

    x.(+ 2 x) ( x.(+ 2 x) )x.x (x.x)

    Asociatividad derecha para la abstraccion:

    xy.y x x.(y.(y x))xy.y x x(y(y x))

    Asociatividad izquierda para la aplicacion:

    x.x y N x.((x y) N)x.x (y N) x.(x (y N))(x.x) y N 6 x.x y N(x.x) y N ((x.x) y) N

  • 6 0. Lambda expresiones

    NOTACION Algunos autores proponen una sintaxis alternativa para suprimirel convenio de asociatividad (a izquierda para aplicaciones y a derecha paracuerpos de E); por ejemplo, [Rev88] propone la sintaxis alternativa

    U exp ::= cons constante predefinida| var identificador de variable| var . exp abstraccion| ( exp ) exp aplicacion

    de forma que escribe x.y.(y) x en lugar de xy.y x; en [Rev88] se defiende talnotacion diciendo que es mas facil construir un analizador sintactico ya que esuna gramatica LL1; ademas, tal notacion esta mas cerca de una notacion par-cializada como la de Haskell. Es obvio que si prescindimos de tales conveniosde parentizacion la escritura sera muy engorrosa y larga. Aqu se va a seguir lanotacion de [Bar84].

    0.1 Variables libres y asociadas

    El ambito de una variable en una abstraccion x.E se extiende a la derechatanto como sea posible (hasta el primer parentesis no cerrado o hasta el final dela expresion); una variable x en una expresion E se dice ligada o asociadasi aparece en el ambito de una abstraccion de variable instanciable x; en otrocaso se dice libre (as, una variable que aparezca en una expresion sera o libreo ligada; no tiene sentido hablar de libre o ligada si la variable no aparece en laexpresion).

    EJEMPLO 0.3. Analizando las variables que aparecen en las E siguientes,se tiene que:

    Eny.x (x.x y)

    la primera x es libre y las otras dos ligadas; las dos yes son ligadas.

    En+ x ((x.+ x 1) 4)

    x aparece libre (en primer lugar) y ligada (segundo y tercer lugar).

    Definicion 0.1 (Conjunto de variables libres) Denotando con [E] el con-junto de variables de E que aparecen en forma libre, este se define inductiva-mente en la forma

    [x] .= {x}[x.M ] .= [M ] {x}[M N ] .= [M ] [N ]

    2

  • 0.2. Subterminos y contextos 7

    EJEMPLO 0.4.

    [xy.x] = [x(y.x)] = [y.x] {x} =

    Denotaremos con el conjunto de lambda expresiones y con o el conjuntode E sin variables libres (los terminos de o se llaman combinadores).

    0.2 Subterminos y contextos

    Definicion 0.2 (Subtermino) M es un subtermino de N (M N) si M sub[N ], donde el conjunto sub[N ] formado por todos los subterminos de N sedefine inductivamente en la forma

    sub[x] .= {x}sub[x.N ] .= x.N sub[N ]sub[M N ] .= sub[M ] sub[N ]

    2

    Un contexto C[] es una E de la cual se extrae alguna sub-E; es decir,una E con un hueco, por ejemplo

    C[] ((x.y.[]) E) FDe forma precisa, tenemos la siguiente definicion BNF:

    Definicion 0.3 (Contexto) La sintaxis BNF para los contextos es:

    U contexto ::= [ ] hueco| var variable| ( var . contexto )| ( contexto contexto )

    2

    Al colocar una expresion M en el hueco de un contexto C[] se obtieneuna nueva E denotada con C[M ]. Ciertas variables libres de una expresion Mpueden quedar asociadas al colocarlas en un contexto.

    EJEMPLO 0.5. La expresion M x.y x tiene como variable libre y, pues[M ] = [x.y x] = y

    mientras que colocando M en el contexto C[] xy.[] se tiene que:[C[M ]] = [C[x.y x]] = [xy.(x.y x)] =

  • 8 0. Lambda expresiones

  • Chapter 1

    Semantica operacional

    1.0 Evaluacion de expresiones

    1.0.0 reduccion

    La evaluacion de una expresion se compone de pasos de reduccion dondecada uno de los pasos se obtiene por reescritura; as

    e e (e se reescribe en e)

    Tal evaluacion permite describir la semantica operacional de un lenguaje fun-cional: partiendo de un estado inicial (expresion inicial) mediante un computo(reescritura) se obtiene un estado final (expresion final).

    Cada reduccion de e reemplaza cierta subexpresion suya de acuerdo conciertas reglas; tales subexpresiones se llaman redexes (reducible expression).Se considera finalizado el computo cuando ya no aparecen mas redexes.

    EJEMPLO 1.0. La expresion Haskell if 3>2 then 3-2 else 2-3 cuyatraduccion al C extendido es

    COND (> 3 2) ( 3 2) ( 2 3)

    tiene 3 redexes:> 3 2 3 2 2 3

    Hay esencialmente dos tipos de reglas:

    Las reglas predefinidas, que son operaciones primitivas del lenguaje; enparticular las reglas para las constantes.

    Las reglas que vienen dadas segun un programa.

    9

  • 10 1. Semantica operacional

    Se llaman reducciones las reducciones con reglas que transforman con-stantes, y se describen con (son predefinidas y caracterizan a las constantes).EJEMPLO 1.1. La evaluacion de la expresion

    (+ 1 2) ( 4 1)puede dar lugar al siguiente computo

    (+ 1 2) ( 4 1)

    (+ 1 2) 3

    3 3

    9

    Observese que la expresion inicial tiene dos redexes; podramos haber evaluado(transformado) la expresion anterior a partir del primer redex:

    (+ 1 2) ( 4 1)

    3 ( 4 1)

    3 3

    9

    El orden de evaluacion es muy importante aunque en algunos casos el resul-

    tado no depende de este (en el sentido que mas tarde precisaremos).

    En Haskell tenemos las siguientes reglas (predefinidas) para la condicional:

    if True then e else e eif False then e else e e

    De la misma forma se pueden definir reglas de reduccion del tipo para ciertasfunciones predefinidas para el C; as, la funcion condicional COND (ciertaconstante para el C extendido) tiene las siguientes reglas de reduccion:

    COND TRUE E F ECOND FALSE E F F

    1.0.1 conversion

    La reduccion mas importante es la reduccion y es el proceso de copia delargumento sobre el cuerpo de una abstraccion, reemplazando todas las ocurren-cias de la variable instanciable por el argumento:

    (x.E) u [x := u]E

  • 1.0. Evaluacion de expresiones 11

    con lo cual una reduccion equivale a una sustitucion en el cuerpo de la ab-straccion; la sustitucion [x := u]E se lee sustituir en E todas las aparicioneslibres de x por u.

    La regla puede utilizarse tambien en el sentido opuesto:

    (x.E) u [x := u]Ey en ese caso se llama una expansion. Si el sentido no se precisa se hablade equivalencia:

    (x.E) u = [x := u]E

    NOTACION En [Bar84] la sustitucion se escribe

    e[x := u]

    sin embargo, [Dij89] utilizax := u.e

    mientras que en [Rev88] se emplea

    [u/x]e

    Aqu utilizamos una variante de la notacion de Dijkstra

    [x := u]e

    ya que enfatiza mejor el hecho de que una sustitucion es un operador. En general la reduccion de una E produce otra E; una cadena de reduc-

    ciones se describe en forma simplificada con EJEMPLO 1.2.

    (i) (x. x x) 2 2 2 4(x. x x) 2 4

    (ii) (x.x y) (z.z) (z.z) y y(x.x y) (z.z) y

    (iii) ((x.y. x y) 7) 8 (y. 7 y) 8 7 8 56((x.y. x y) 7) 8 56

    (iv) (f.f 3) (x.+ x 1) (x.+ x 1) 3 + 3 1 4(f.f 3) (x.+ x 1) 4

    La reduccion genera una relacion = de igualdad1, que es una relacion

    de equivalencia (i.e., tiene las propiedades reflexiva, simetrica y transitiva); estaequivalencia debe verificar entre otras cosas

    A B A = B1Escribimos = ya que las reglas utilizadas son la y las predefinidas

  • 12 1. Semantica operacional

    Se pretende ademas que la igualdad = sea una igualdad sustitutiva: si dosterminos u y v son iguales, al reemplazar en una expresion un subtermino porexpresiones iguales no se altera la igualdad, es decir:

    u = v [F := u]E = [F := v]ETodos estos conceptos se pueden introducir para cualquier tipo de reduccion.

    1.1 Reduccion en

    1.1.0 Relaciones definibles en

    Siendo R una relacion binaria definida en :R

    escribiremos tambien xRy cuando (x, y) R. Entre tales relaciones las masinteresantes son:

    = { ( (x.M) N, [x := N ]M ) | M,N } = { ( x.M x, M ) | M } = = =

    Definicion 1.0 (Relacion compatible) R es una relacion compatible siA,B,M,N (A,B) R (M A,M B) R, (A N,B N) R, (x.A, x.B) R

    2

    Definicion 1.1 (Igualdad) Una igualdad (sustitutiva) es una relacion deequivalencia compatible. 2

    Definicion 1.2 (Reduccion) Una reduccion es una relacion compatible, re-flexiva y transitiva (no necesariamente simetrica). 2

    Dada una relacion R en , a partir de ella se pueden definir de forma in-ductiva las siguientes relaciones:

    Definicion 1.3 (Cierre compatible de una relacion) R es el cierre com-patible de R o reduccion en un paso, es decir, la mnima relacion queverifica los axiomas

    (A,B) RAR B

    AR BM AR M B

    AR BA N R B N

    AR Bx.AR x.B

    2

  • 1.1. Reduccion en 13

    Definicion 1.4 (Cierre reflexivo y transitivo de una relacion) R es elcierre reflexivo y transitivo deR, es decir, la mnima relacion que verifica

    AR BAR B AR A

    AR B B R CAR C

    2

    Definicion 1.5 (Equivalencia generada por una relacion) =R es la (relacionde) equivalencia generada por R, es decir, la mnima relacion verificando

    AR BA =R B

    A =R BB =R A

    A =R B B =R CA =R C

    2

    NOTACION Tambien suele utilizarse la siguiente notacion:

    = para el cierre reflexivo de para el cierre transitivo de = para el cierre reflexivo y transitivo de

    Lema 1.0 Si 1 2, entonces:

    (=1

    =2) =

    =

    Demostracion: EJERCICIO 1.0. Ayuda: probar

    ab b transitiva abab b reflexiva

    =ab22

    Corolario 1.0(R1 R2) = R1R2

    Demostracion: ver ejercicio anterior. 2

    Lema 1.1 Para la relacionR (cierre compatible de R), se verifica: M R Nsi y solo si existe un contexto C[] tal que

    (M C[P ]) (N C[Q]) ((P,Q) R)

    Demostracion: EJERCICIO 1.1. 22

    Lema 1.2 Las relacionesR, R, =R son todas compatibles, con lo cualRes una reduccion y ademas =R es una igualdad.

    Demostracion: EJERCICIO 1.2. (por induccion estructural) 22

  • 14 1. Semantica operacional

    1.1.1 teoras

    La teora llamada calculo puro o C tiene como formulas M = N ,donde M y N son expresiones, y como axiomas:

    Axiomas de equivalencia:

    M = MM = NN = M

    M = N N = PM = P

    Axiomas de compatibilidad:M = N

    Y M = Y NM = N

    M X = N X(regla)

    M = Nx.M = x.N

    regla:(x.M) N = [x := N ]M

    Es decir, una teora es una teora con igualdad compatible donde es valida laregla. Es de resenar que:

    Por ahora se distinguira entre la igualdad = generada por y el con-structor = de las formulas de la teora C, pues para identificarloshabra que probar

    M = N C `M = N

    La regla2 tambien se conoce como extensionalidad debil y viene adecir que si M y N son iguales entonces tienen el mismo comportamientocomo funciones (como cuerpos de funciones).

    Algunos autores tambien anaden al C la regla:

    (regla)x.M = y.[x := y]M

    si y no aparece en M

    aunque nosotros la consideraremos una equivalencia sintactica en lugar deun axioma; as, podemos escribir x.x y.y. Ademas, es evidente que

    M N M = N

    De los axiomas de compatibilidad se deduce que al sustituir terminos igualesen un contexto se obtienen terminos iguales; mas precisamente:

    Lema 1.3 Sea C[] un contexto. Si M = N entonces C[M ] = C[N ]

    Demostracion: EJERCICIO 1.3. (por induccion estructural sobre C[]) 222Las denominaciones regla, regla, . . . , son por razones historicas

  • 1.2. Sustituciones y equivalencias 15

    Otras teoras interesantes son:

    El calculo extensional o teora, que se obtiene al anadirle a Cel axioma:

    (regla)x.M x = M

    El calculo o teora no pura, que se obtiene al anadirle al Calgunas constantes y reglas.

    1.2 Sustituciones y equivalencias

    1.2.0 Convenio de variables y concepto de sustitucion

    La sustitucion de un redex puede plantear problemas si la E contiene elmismo identificador en dos abstracciones.

    EJEMPLO 1.3. Una reduccion para la E

    (x.(x.x) (+ 1 x)) 1

    produce resultados erroneos si se sustituye la x de la E interior (x.x) (atencion,no la x como variable instanciable en (+ 1 x)); en efecto,

    (x.(x.x) (+ 1 x)) 1

    [x := 1](x.x) [x := 1](+ 1 x)

    (x.1) (+ 1 1)

    (x.1) 2

    1

    y en consecuencia, para la igualdad = generada por se tendra:

    (x.(x.x) (+ 1 x)) 1 = 1

    La reduccion anterior tiene un error ya que la sustitucion [x := 1]E debe enten-derse sustituir x por 1 en todas las ocurrencias de x como variable libre. Aspues tenemos la siguiente reduccion correcta:

    (x.(x.x) (+ 1 x)) 1

    [x := 1](x.x) [x := 1](+ 1 x)

    (x.x) (+ 1 1)

    (x.x) 2

    2

  • 16 1. Semantica operacional

    En general, la sustitucion [x := u]e se debe interpretar como:

    sustituir x por u en todas las apariciones libres de x en e

    EJERCICIO 1.4. Probar que

    x.(x.+ ( x 1)) x 3) 9 = 112EJEMPLO 1.4. Sea K xy.x. Entonces

    K M

    (xy.x) M

    (y.M)

    de donde se tendra K M = y.M y en particular K y = y.y. Pero sabemosque podemos identificar (K )xy.x xz.x, de donde tambien tendremos

    K y

    (xz.x) y

    (z.y)

    y debe tenerse tambien K y = z.y; es decir:

    (K y = z.y) (K y = y.y)y por ser = una igualdad,

    z.y = y.y

    pero observamos que esto es inconsistente si = es sustitutiva ya que se tendra

    z.y = y.y

    (z.y)u = (y.y)u

    y = u

    y esto es absurdo (el por que se analizara en el siguiente ejercicio). EJEMPLO 1.5. Sea F xy.y x. Entonces: ! regla

    F M N = N M ! tomando M y y N x

    F y x = x y

    pero tambien se tiene:

  • 1.2. Sustituciones y equivalencias 17

    F y x

    ((x(y.y x)) y) x= ! regla

    (y.y y) x= ! regla

    x x

    luego debe darse:x y = x x

    y de aqu puede deducirse (ver nota y ejercicio siguiente) que todos los terminosdel C son iguales (lo que equivale a inconsistencia). NOTA En una teora T con igualdad donde son aplicables los axiomas (siendoA y B igualdades)

    ` A (B A)` (B A) ((B A) B)

    A , (A B) ` B (modus ponens)se tiene que los dos siguientes enunciados son equivalentes:

    T es consistente (i.e., existe una igualdad M = N no demostrable) no existen M,N tales que T ` (M = N) y T ` (M = N)

    como se demuestra en [Dav89] (pp. 122123). Luego son equivalentes

    M,N : C ` (M = N) El C es inconsistente.

    EJERCICIO 1.5. Probar que

    x y = x x [ M,N : C ` (M = N) ]2

    EJEMPLO 1.5. (continuacion) El fallo en este ejemplo esta en el paso

    (x(y.y x)) y = y.y y

    ya que la variable libre y externa queda asociada de forma magica despues dela transformacion; esto contiene una contradiccion ya que dos terminos igualesdeben tener las mismas variables libres, pero:

    [(xy.y x) y] = [xy.y x] [y] = y = y[y.y y] = [y y] y =

  • 18 1. Semantica operacional

    que es contradictorio. Por tanto el paso anterior es erroneo.

    Por otro lado, estamos identificando los terminos equivalentes; en ese caso:

    (xy.y x) y = (xz.z x) y = z.z y

    Realmente el problema esta en la definicion de la sustitucion [x := N ]M ,

    pues en algunos casos para calcular [x := N ]M es obligatorio efectuar una conversion. Para resolver el problema podemos, al igual que en [Bar84] (p. 26),adoptar el siguiente criterio:

    Convenio 1.0 (Convenio sobre variables (CV)) Si una serie de terminosy/o sustituciones (como [x := N ]) aparecen juntos en cierto contexto (de-mostracion, definicion, formulacion, . . . ), entonces todas las variables instan-ciables de tales terminos se consideraran distintas de las variables libres. 4

    EJEMPLO 1.4. (continuacion) Si tenemosK xy.x, entonces en el termino(K y) debemos renombrar la variable y de K. EJEMPLO 1.5. (continuacion) Si F xy.y x y M y, al calcular (uoperar con) F M debemos renombrar la variable instanciable y de F (observeseque la y de M no se puede renombrar porque es libre).

    Con este convenio es facil definir por induccion estructural la sustitucion[x := N ]M :

    Definicion 1.6 (Sustitucion) Teniendo en cuenta de una vez por todas elconvenio de variables, se define:

    [x := N ]x N[x := N ]y y si x 6 y[x := N ](P Q) [x := N ]P [x := N ]Q[x := N ](y.P ) y.[x := N ]

    2

    Observese que:

    [x := N ]M no es una E pero se identifica sintacticamente con alguna(como se muestra con el uso de ).

    El operador sustitucion se entiende asociativo a la derecha:

    [x := A][y := B]M [x := A]([y := B]M)

    En la cuarta regla no es necesario anadir si (y 6 x) (y 6 [N ]) ya quese usa el convenio de variables y tales condiciones son implcitas.

  • 1.2. Sustituciones y equivalencias 19

    1.2.1 La sustitucion frente a las relaciones en

    Lema 1.4 (Lema de sustitucion) Las sustituciones verifican las siguientespropiedades:

    (S1) (x 6 y x 6 [L]) [y := L][x := N ]M [x := [y := L]N ][y := L]M(S2) M = N [x := E]M = [x := E]N(S3) E = F [x := E]M = [x := F ]M

    Demostracion: (S1) Por induccion estructural sobre M :

    1. M es una variable

    M x[y := L][x := N ]M

    [y := L][x := N ]x

    [y := L]N

    [x := [y := L]N ]x

    ! x 6 y[x := [y := L]N ][y := L]x

    M y, con x 6 y (trivial) M z, con z 6 x z 6 y (trivial)

    2. M z.P[y := L][x := N ]z.P

    ! Por (CV), z no aparece instanciable ni en N ni en L[y := L]z.[x := N ]P

    ! Por (CV), z no aparece instanciable ni en N ni en Lz.[y := L][x := N ]P

    ! Hipotesis de induccionz.[x := [y := L]N ][y := L]P

    ! Igual razonamiento[x := [y := L]N ][y := L]z.P

    3. M P Q (trivial)

    (S2) Por induccion sobre la estructura de la derivacion M = N :

  • 20 1. Semantica operacional

    1. M = N es conclusion de la regla

    (y.A) B M

    = [y := B]A N

    [x := E]M

    [x := E](y.A) B ! Definicion de sustitucion

    (y.[x := E]A) [x := E]B=

    [y := [x := E]B][x := E]A ! Por (S1) ya que por (CV), y 6 x y 6 [E]

    [x := E][y := B]A

    [x := E]N

    2. M = N es conclusion del axioma de compatibilidad

    M = N

    Y M M

    = Y N N

    . . .

    3. . . .

    (S3) Por induccion estructural sobre M . 2EJERCICIO 1.6. Completar la demostracion del lema de sustitucion. 2

    Lema 1.5 Siendo R una relacion en :AR B [x := A]M R [x := B]M

    Demostracion: EJERCICIO 1.7. (por induccion estructural sobre M , uti-lizando la compatibilidad de R) 22

    Lema 1.6 Siendo R una relacion en :M R N 6 [x := A]M R [x := A]N

    Demostracion: EJERCICIO 1.8. (busquese un contraejemplo) 22

    Definicion 1.7 (Relacion sustitutiva) Una relacion R es sustitutiva siM,N,A : (M,N) R ( [x := A]M , [x := A]N ) R

    2

  • 1.2. Sustituciones y equivalencias 21

    Lema 1.7 Si R es sustitutiva, tambien lo son R, R y =RDemostracion: EJERCICIO 1.9. (por induccion estructural) 22

    Teorema 1.0 es sustitutiva.

    Demostracion: Si (M,N) , entonces existen terminos P , Q tales queM (y.P ) Q N [y := Q]P

    y tenemos que probar que ( [x := A]M , [x := A]N ) ; pero( [x := A]M , [x := A]N )

    ( [x := A](y.P ) Q , [x := A][y := Q]P )

    ! Definicion de sustitucion, lema de sustitucion y (CV)( (y.[x := A]P ) [x := A]Q , [y := [x := A]Q][x := A]P )

    que es una instancia de la regla. 2

    Corolario 1.1 Las relaciones , y = son sustitutivas.

    Demostracion: Se concluye directamente del teorema 1.0 y del lema 1.7. 2

    Teorema 1.1 En un C puro, se tiene:

    M = N C `M = N

    Demostracion: () Por induccion sobre la estructura de la derivacion M = N :

    1. Si M = N es conclusion de la regla

    (y.A) B M

    = [y := B]A N

    entonces es trivial, ya que M N2. Si M = N es conclusion del axioma de compatibilidad

    M = N

    Y M M

    = Y N N

    entonces

    C `M = N Hipotesis de induccion

    M = N

    Lema 1.2Y M = Y N

    M = N

    3. . . .

  • 22 1. Semantica operacional

    () Basta probar queM N C `M = NM N C `M = N

    y por induccion sobre la estructura de la derivacion M = N (definicion 1.5):

    M = N C `M = N2

    EJERCICIO 1.10. Completar la demostracion del teorema anterior. 2

    NOTACION La conclusion del teorema anterior es que la igualdad = gen-erada por y la igualdad = generada por los axiomas de la definicion 1.6 sonla misma; a partir de ahora se usara un mismo smbolo = para ambas.

    1.3 Etaconversion y extensionalidad

    En el C siempre se tiene:

    (x.M) x =M

    y en general(~x.M) ~x =M (~x x1x2 . . . xn)

    siendo[~x := N ] [xn := N ] . . . [x1 := N ]

    Sin embargo, la regla

    (regla)x.M x =M

    (donde el cuerpo de la funcion es M x) no es necesariamente cierta.

    EJEMPLO 1.6. Consideremos la funcion:

    suc x.+ 1 xde forma que:

    suc y = + 1 y

    y la funcion suc tiene el mismo comportamiento que la funcion parcial

    + 1

    pero no pueden considerarse iguales salvo que se considere la regla:

    (x.+ 1 x) = + 1

  • 1.3. Etaconversion y extensionalidad 23

    Tal regla es en cierta forma equivalente a la regla de extensionalidad:

    (ext)M x = N xM = N

    si x 6 [M N ]

    Es decir, si M x se comporta como N x para alguna variable no libre en ambas,entonces M y N son iguales. Esta propiedad es el principio de extensional-idad.

    Al anadirle al C la regla (ext) se pueden obtener algunos axiomas de losde la definicion 1.6.

    EJERCICIO 1.11. Demostrar que al anadirle al C la regla (ext) se tiene:

    X M = NM X = N X

    2

    Teorema 1.2 (Curry, 1941) C (ext) es equivalente a

    Demostracion:

    1. C (ext) ` x 6 [M ]

    ! regla(x.M x) x =M x

    ! regla extx.M x =M

    que es la regla.

    2. ` C (ext)(x 6 [M N ]) (M x = N x)

    ! reglax.M x = x.N x

    ! reglaM = N

    de donde ` (ext).2

    EJEMPLO 1.7. Sea la funcion parcial

    COND TRUE 3

    Veamos que en el calculo tal funcion es igual a

    x.3

    Ello lo podemos comprobar de dos formas:

  • 24 1. Semantica operacional

    A traves de la regla:COND TRUE 3

    = ! reglax.COND TRUE 3 x

    = ! regla para CONDx.3

    A traves de la regla (ext):TRUE

    = ! Reflexividad de =3 = 3

    = ! regla3 = (x.3) y

    = ! regla para CONDCOND TRUE 3 y = (x.3) y

    ! regla (ext)COND TRUE 3 = x.3

  • Chapter 2

    Formas normales

    2.0 El concepto de forma normal

    Definicion 2.0 (Rredex) Un termino M se dice que es un Rredex si paraalgun termino N se tiene que M R N . 2

    Definicion 2.1 (Rforma normal) Un termino M se dice que esta en Rforma normal (RFN) si no contiene ningun subtermino que sea un Rredex.Un termino N se dice que es una RFN de otro termino M (equivale a decirque M tiene a N como Rforma normal) si N esta en RFN y M =R N . 2

    Lema 2.0 Siendo M un termino que esta en RFN, entonces:

    (1) no existe un termino N tal que M R N(2) M R N M N

    donde R es el cierre compatible y R el reflexivo.

    Demostracion:

    (1) Se procedera por reduccion al absurdo: supongamos que estando M enRFN, se tiene que M R N ; entonces por el lema 1.1 existiran P , Q yun contexto C[] tales que

    (M C[P ]) (N C[Q]) (P,Q) Rcon lo cual el subtermino P sera un Rredex (ya que (P,Q) R P R Q) y M no estara en RFN.

    (2) Razonamos por induccion sobre la derivacion M R N (ver definicion1.4, pagina 13):

    25

  • 26 2. Formas normales

    M R N no puede (por (1)) haber sido obtenida deM R NM R N

    Si M R N ha sido obtenida de

    M R M Nentonces M N

    Si M R N ha sido obtenida deM R Q QR N

    M R Nentonces por hipotesis de induccion se tendra (M Q) (Q N),de donde M N

    2

    EJERCICIO 2.0. Probar con un contraejemplo que

    (N ::M R N M N) 6 M esta en RFNi.e., que la propiedad (2) del lema 2.0 no caracteriza a las formas normales. 2

    Las formas normales se corresponden con la idea de fin de computo en loslenguajes funcionales. As pues, el evaluador en un lenguaje funcional deberaobedecer al esquema:

    mientras existan redexes reducir uno de ellos

    No todas las expresiones tienen forma normal; es decir, existen formas nonormales que no pueden reducirse a forma normal, como muestra el siguiente

    EJEMPLO 2.0. Si D y.y y, considerese la expresion D D: (y.y y) (y.y y)

    que no esta en forma normal (ella misma es un redex) y se reduce directamentesegun la regla (renombramos la variable de la funcion para mas claridad):

    (z.z z) (y.y y)=

    [z := y.y y](z z)

    (y.y y) (y.y y)

    Por tanto, el computo de la expresion no termina y no tiene unaforma normal.

  • 2.1. Confluencia 27

    Es interesante observar que no podemos identificar los terminos sin FN yaque ello introduce inconsistencias (ver ejercicio 2.6). Por tanto, identificar todoslos terminos que no terminan traera problemas.

    2.1 Confluencia

    Interesa saber si las formas normales son unicas (salvo equivalencias).Esto sera consecuencia de la propiedad de confluencia.

    Definicion 2.2 (Propiedad del diamante) Sea una relacion en ; sedice que verifica la propiedad del diamante (lo cual se notara mediante |= 3) si se tiene

    M,P,Q : (M P ) (M Q) : R :: (P R) (Q R)o graficamente:

    M

    @@@R

    P Qp p p p p p p p p p p p pRppppppppppppp

    R2

    EJERCICIO 2.1. Probar que 6|= 3 2

    Definicion 2.3 (Propiedad de confluencia o de ChurchRosser) Una relacionR se dice confluente o que tiene la propiedad de confluencia o tambien quetiene la propiedad de ChurchRosser (lo cual se notara mediante R CR)si la relacion inducida R verifica la propiedad del diamante:

    R CR R |= 32

    Lema 2.1 Si |= 3 entonces |= 3

    Demostracion: EJERCICIO 2.2. 22

    Definicion 2.4 (Propiedad debil de ChurchRosser) Una relacion R sedice que tiene la propiedad debil de ChurchRosser (lo cual se notaramediante R |=d 3) si se tieneM,P,Q : (M R P ) (M R Q) : Z :: (P R Z) (QR Z)

    2

  • 28 2. Formas normales

    EJERCICIO 2.3. Probar que |=d 3 2

    Definicion 2.5 (Propiedad fuertemente normalizante) Una relacion Rse dice fuertemente normalizante (lo cual se notara mediante R SN) sitoda reduccion de la forma M R M termina, es decir

    M , 6 {Mn}n0 (M0 M) :: Mi R Mi+12

    Teorema 2.0 (Newman) Si R SN y R |=d 3, entonces R CR

    Demostracion: EJERCICIO 2.4. 22

    Teorema 2.1 (ChurchRosser) Sea R CR; entonces:M =R N Z :: (M R Z) (N R Z)

    Demostracion: por induccion sobre la estructura de la derivacion M =R N(definicion 1.5):

    M =R N es consecuencia deM R NM =R N

    y tomamos Z N . M =R N es consecuencia de

    N =R MM =R N

    y por hipotesis de induccion:

    Z :: (N R Z) (M R Z)

    M =R N es consecuencia deM =R L L =R N

    M =R N

    y, por hipotesis de induccion, existen terminos P y Q verificando

    M L N

    @@@R

    @@@R

    P Q

  • 2.1. Confluencia 29

    y por la propiedad de confluencia tenemos que existe R verificando:

    M L N

    @@@R

    @@@R

    P Qp p p p p p p p p p p p pR

    pppppppppppppR

    y ahora basta aplicar la transitividad de R.2

    Corolario 2.0 Sea R CR; entonces:

    (1) si N es una RFN de M , entonces M R N(2) si un termino tiene forma normal, dicha forma normal es unica (salvo

    equivalencias)

    Demostracion:

    (1) Si N es una RFN de M , entonces por el teorema existe Z tal que(M R Z) (N R Z)

    y por estar N en RFN se tiene (por el lema 2.0) que Z N ; luegoM R N

    (2) Si N1 y N2 son dos RFN de M entonces N1 =R N2 (=R M), y por elteorema existe Z tal que

    (N1 R Z) (N2 R Z)y de aqu, por el lema 2.0, N1 Z N2.

    2

    Teorema 2.2 Toda forma normal puede expresarse como:

    x1x2 . . . xn.x M1 . . . Mm n,m 0siendo M1, . . . ,Mm formas normales.

    Demostracion: puede verse en [Dav89] (pag. 164) y en [Bar84] (pag. 176(8.3.18)). 2

  • 30 2. Formas normales

    Corolario 2.1 (Conjunto FN de formas normales) El conjunto FN de for-mas normales puede definirse en forma inductiva de la manera siguiente:

    (1) x FN(2) si M1, . . . ,Mm FN entonces x M1 . . . Mm FN(3) si M FN entonces x.M FN

    Es decir, FN es el menor conjunto verificando (1)(3).

    Demostracion: siendo C el menor subconjunto de verificando (1)(3), hay queprobar:

    C FN : es trivial que FN verifica (1)(3) FN C: basta probar (por induccion sobre A):

    A FN A C

    A x, trivial A x1x2 . . . xn.x M1 . . . Mn, con M1, . . . ,Mm FN

    A x1x2 . . . xn.x M1 . . . Mn ! h.i., A x M1 . . . Mn, props. (2) y (1)

    A x1x2 . . . xn.A, con A C ! prop. (3) n veces

    A C2

    2.2 Los teoremas de ChurchRosser

    El teorema 2.1 necesita que la relacion en cuestion cumpla la propiedad CR. Enesta seccion se consideran los teoremas de ChurchRosser, los cuales afirmanque tanto como son CR y por tanto para dichas relaciones es aplicable elteorema 2.1 y el corolario 2.0.

    Las demostraciones originales (1936) eran muy complicadas y muchos teore-mas y generalizaciones se han publicado en los ultimos 50 anos. Aqu daremosla demostracion expuesta en [Bar84] (esencialmente la de P. Martin Lof y W.Tait), y para CR daremos un esbozo usando la tecnica de HindleyRosen.

    Teorema 2.3 (ChurchRosser, 1936) CR

    Demostracion: hay que probar que |= 3; para ello, supongamos que existeuna relacion (no confundir con ) que verifica:

  • 2.2. Los teoremas de ChurchRosser 31

    (a) = (e) |= 3

    Entonces, por (e) y por el lema 2.1

    |= 3

    Por (a),( =)

    y ya que ( =) tendremos = . Luego todo consiste en encontrartal relacion . Esto se vera en el siguiente lema. 2

    Lema 2.2 Sea la relacion definida en forma inductiva como la mnimarelacion verificando:

    (1) M M

    (2) (M1 M2) (N1 N2) x.M1 x.M2 ,M1 N1 M2 N2 ,(x.M1) N1 [x := N2]M2

    Entonces:

    (a) = (b) (M1 M2) (N1 N2) [x := N1]M1 [x := N2]M2(c) x.M N M :: (N x.M ) (M M )

    (d) M1 N1 L

    M2, N2 :: L M2 N2 ,M1 M2 ,

    N1 N2

    P1, P2, N2 ::

    M1 x.P1 ,L [x := N2]P2 ,P1 P2 ,N1 N2

    (e) |= 3

    Demostracion:

    (a) Para demostrar que = hay que probar M =N M N (porinduccion sobre la derivacion M =N)

  • 32 2. Formas normales

    Si M =N es consecuencia de

    M M

    con M N , entonces M M por (1)

    Si M =N es consecuencia de la regla, entonces

    M (x.E) u , N [x := u]E

    y bastara probar(x.E) u [x := u]E

    que se deduce de (2) tomando M1 M2 E y N1 N2 u

    mientras que para demostrar basta probar que verifica (1)(2)del lema, lo cual es trivial por ser sustitutiva.

    (b) Por induccion estructural sobre derivaciones del tipo M1 M2.

    (c) Por induccion estructural sobre derivaciones del tipo M M .

    (d) Por induccion estructural sobre derivaciones del tipo M1 M2.

    (e) Es suficiente probar que

    M,P :: M P : (Q :: M Q (R :: (P R) (Q R) ) )

    y ello por induccion estructural sobre la derivacion M P (para masdetalles, vease [Bar84] (pags. 6062)).

    2

    Corolario 2.2 El calculo es consistente

    Demostracion: procediendo por reduccion al absurdo, supongamos que sea in-consistente; entonces para cualesquiera expresiones M y N se tiene queM = N es un teorema; en particular, siendo M y N dos formas normalestendremos

    C `M = N

  • 2.2. Los teoremas de ChurchRosser 33

    pero ya queC ` A = B A = B

    entonces tendremos M = N , siendo M y N dos formas normales. Pero, porel corolario 2.0.(2), tendremos M N , y ahora para llegar a un absurdo bastatomar dos formas normales no equivalentes. 2

    Al extender el C con ciertos axiomas (indeseables) se pueden introducirinconsistencias, como se muestra en los siguientes ejercicios.

    EJERCICIO 2.5. Probar que C (K = S) es inconsistente, siendoK xy.x S xyz.x z (y z)

    2

    EJERCICIO 2.6. Probar que C F es inconsistente, siendo F el conjuntode axiomas

    F = { M = N |M,N :: M,N no tienen FN}2

    EJERCICIO 2.7. Demostrar que la aplicacion de expresiones no es aso-ciativa. 2

    EJERCICIO 2.8. Probar que C (K = (K I)) es inconsistente, siendoK xy.x I x.x

    2

    Teorema 2.4 CR

    Demostracion: como se tiene que = ( =), bastara con probar que= |= 3

    para lo cual hay que demostrar

    M,P :: M =P : (Q :: M =Q (R :: (P =R) (Q =R) ) )

    por induccion estructural sobre la derivacion M =P (para mas detalles, vease[Bar84] (pag. 65)). 2

  • 34 2. Formas normales

    Lema 2.3 (HindleyRosen)

    (1) Si dos relaciones 1 y 2 verifican 3(1 |= 3) (2 |= 3)

    y conmutan

    A1- B

    2?

    pppppppp?2C

    1p p p p p p p p- Des decir

    A,B,C :: (A1B) (A2C) D :: (C1D) (B2D)entonces

    (1 2) |= 3(2) Sean dos relaciones y tales que CR y CR; si las relaciones

    inducidas y son commutativas en el sentido de (1), entonces CR

    Demostracion:

    (1) Para probarlo basta considerar un diagrama como el siguiente:

    1- 2- 2- 2

    ?

    pppppppp?2pppppppp?2

    pppppppp?2 1p p p p p p p p- 2p p p p p p p p- 2p p p p p p p p-

    1?

    pppppppp?1pppppppp?1

    pppppppp?1 1p p p p p p p p- 2p p p p p p p p- 2p p p p p p p p-

    (2) Se deduce directamente aplicando (1) ya que, por el corolario 1.0,

    ( ) =2

    Teorema 2.5 (ChurchRosser, 1936) CR

    Demostracion: se basa en aplicar el lema de HindleyRosen a y (luegopreviamente habra que demostrar que y son commutativas en el sentidode (1)). 2

    Corolario 2.3 El calculo es consistente

    Demostracion: EJERCICIO 2.9. 22

  • 2.3. Formas normales por la cabeza 35

    2.3 Formas normales por la cabeza

    2.3.0 Ordenes de reduccion

    Hay ocasiones en las cuales la eleccion del siguiente redex a reducir es deter-minante para la finalizacion del computo.

    EJEMPLO 2.1. Se considera la E

    (x.y)

    siendo (x.x x) (x.x x)

    Esta E tiene dos redexes: uno interior (que es ) y otro exterior (que es todala expresion); si reducimos el exterior se obtiene y, mientras que si reducimos elinterior volvemos a obtener la misma expresion. Por consiguiente, en este casoel orden de reduccion es importante.

    El orden de reduccion determina la eleccion del redex a reducir; paraidentificar cual sera el redex elegido se usara la siguiente nomenclatura:

    El redex de mas a la izquierda es aquel cuya (o cuya primitiva, si esun redex) aparece textualmente a la izquierda de cualquier otro redexde la expresion.

    Un redex externo es aquel que no esta contenido en otro redex.

    Un redex interno es aquel que no contiene otro redex.

    EJEMPLO 2.2. Clasificando los redexes que aparecen en las siguientes E:

    En la E

    (x.x) a interno

    (

    interno (x.x) b)

    se han marcado dos redexes internos; el marcado por abajo es ademas elredex de mas a la izquierda.

    En la E

    (y.(

    interno (z.z) x) y) a externo

    se han marcado dos redexes: el marcado por arriba es interno, y el marcadopor abajo ademas de externo es el redex de mas a la izquierda.

  • 36 2. Formas normales

    Se distinguen dos importantes ordenes de reduccion:

    El orden normal o estandar, que notaremos por s, donde se reduce elredex externo de mas a la izquierda.

    El orden aplicativo, que notaremos por a, donde se reduce el redexinterno de mas a la izquierda.

    EJEMPLO 2.1. (continuacion) En la expresion:

    (x.y)

    el seleccionado para la reduccion estandar es la propia expresion, y en el ordenaplicativo se seleccionara el . Segun el teorema de ChurchRosser (para el Co para el C) si una expresion tiene FN esta es unica salvo equivalencias;por tanto la forma normal en este caso es y y como se obtiene por la reduccionestandar, escribiremos:

    (x.y) s y

    Por otro lado, la reduccion aplicativa produce una secuencia infinita de redexes:

    (x.y) a (x.y) a . . .

    y el computo no terminara.

    2.3.1 El teorema de estandarizacion

    Como el teorema de ChurchRosser afirma que si una expresion tiene FNesta es unica salvo equivalencias, y dado que disponemos de diversos ordenesde reduccion, cabe preguntarse si habra un orden de reduccion que siempre noslleve a dicha FN.

    EJEMPLO 2.3. Consideremos la siguiente reduccion no estandar (sub-rayamos el redex elegido):

    a.(b.(c.c) b b) d

    a.(b.b b) d

    a.d d

    con lo cual,a.(b.(c.c) b b) d a.d d

    pero tambien observamos que siguiendo el orden normal o estandar

    a.(b.(c.c) b b) ds a.d d

  • 2.3. Formas normales por la cabeza 37

    Generalizando el resultado del ejemplo anterior se tiene el denominado teo-

    rema de estandarizacion:

    Si M N , entonces tambien M s N

  • 38 2. Formas normales

    Aunque no veremos la demostracion de este teorema si daremos un esbozo deesta. Para ello son necesarios los conceptos de redex de cabecera y de reduccionpor la cabeza (head reduction); se usara la siguiente nomenclatura:

    Un termino de la forma M N se denomina un termino aplicacion. Un termino de la forma x.M se denomina un termino abstraccion.

    Lema 2.4

    (a) Cada termino es, o una variable, o un termino aplicacion o un terminoabstraccion.

    (b) Cada termino aplicacion M es de la forma

    M N1 N2 . . . Nn (n 2) (N1 no es una aplicacion)

    (c) Cada termino abstraccion M es de la forma

    M x1x2 . . . xn.N (n 1) (N no es una abstraccion)

    (d) Cada termino M :

    o bien es una forma normal por la cabeza (FNC):

    M x1x2 . . . xn.x M1 . . . Mm (n 0) (m 0)

    o bien es reducible por la cabeza:

    M x1x2 . . . xn.(x.M0) M1 . . . Mm (n 0) (m 1)

    donde al redex (x.M0) M1 se le llama redex de cabecera.

    Demostracion: por induccion sobre la estructura de M . 2

    Definicion 2.6 Un termino M se dice que admite FNC si existe un N enFNC tal que M = N . 2

    EJEMPLO 2.4. El termino

    (x.x x) (x.x x)

    es reducible por la cabeza (segunda opcion con n = 0 y m = 1) y no admiteuna FNC (su primer elemento es un redex). NOTACION Si sub[M ] es el redex de cabecera de M , y N resulta de Mal contraer , escribiremos:

    (M c N) o bien M N

  • 2.3. Formas normales por la cabeza 39

    para denotar la reduccion en un paso del redex de cabecera, y denotaremos con

    c o bien cs

    el cierre reflexivo y transitivo dec. Si los redexes seleccionados son interiores

    usaremosi para la reduccion en un paso, y:

    i o bien is

    para su cierre reflexivo y transitivo.

    Lema 2.5

    (a) Cualquier reduccion M iM c N puede descomponerse en la forma:

    M

    i@@@R

    cs

    M Np p p p p p p p p p p p pRcs p p p p p p p p p pp p pis

    N

    Mc N i N

    (b) Cualquier reduccion M N puede descomponerse en la forma:

    M N2

    ?

    Nn1 Np p p p p p p p p p p p pRcs p p p p p p p p p pp p pis

    p p p p p p p p p p p p pRcs . . . p p p p p p p p p pp p pis

    p p p p p p p p p p p p pRcs p p p p p p p p p pp p pis

    N1 Nn

    Mc N1

    i N2c i Nn1

    c Nni N

    (c) Cualquier reduccion M N puede descomponerse en la forma:

    M - Np p p p p p p p p p p p pRcs p p p p p p p p p pp p pis

    Z

    Mc Z i N

  • 40 2. Formas normales

    Demostracion:

    (a) Puede encontrarse en [Bar91] (pag. 298).

    (b) Inmediato por (a).

    (c) Inmediato por (b) y (a).2

    Teorema 2.6 (Teorema de estandarizacion (CurryFeys, 1958))

    Si M N , entonces tambien M s N

    Demostracion: por induccion sobre N utilizando (c) del lema anterior:

    M N1 N2 N ; M x.N N2

    A la reduccion reiterada del redex de cabecera se le denomina reduccionpor la cabeza o reduccion de cabecera. Observese que:

    La reduccion por la cabeza determina de forma unica una secuencia determinos (tal secuencia puede terminar o puede no terminar).

    En la reduccion estandar esta incluida, como previa, la reduccion decabecera, pues utilizando (c) del lema anterior y el teorema de estandarizacion:

    Mc Z i red. estandar

    N

    Como corolario del teorema de estandarizacion tenemos:

    Corolario 2.4 M tiene FNC si y solo si su reduccion por la cabeza termina

    Demostracion:

    () Trivial.() Sea ~x.y ~M una forma normal por la cabeza de M , donde ~x y ~M son

    secuencias. Por el teorema de ChurchRosser

    Z :: M Z, Z ~x.y ~Mpero entonces Z ~x.y ~N , donde Mi Ni, con lo cual por el teoremade estandarizacion

    Ms ~x.y ~N

    y es facil construir a partir de esta la reduccion por la cabeza (que termi-nara).

    2

  • 2.3. Formas normales por la cabeza 41

    Existen diferencias importantes entre la reduccion por la cabeza (que acabaen una FNC) y la reduccion estandar o normal (que acaba en una FN):

    Un termino puede estar en FNC y no estar en FN Un termino puede no tener ni FNC ni FN; existe una caracterizacion delos terminos con FNC que es la resolubilidad, como veremos mas tarde(teorema de Wadsworth).

    Un termino puede tener varias FNC; la reduccion por la cabeza (que ter-mina si admite al menos una FNC) proporciona la denominada FNCcanonica

    EJEMPLO 2.5. Siendo I z.z, se tiene que:

    La Ex.x (I b)

    esta en FNC (pues no existe redex de cabecera); sin embargo no es unaFN y la reduccion normal lo reducira a x.x b

    La E(x.x x) (x.x x)

    no admite FNC ni tampoco FN (ya que toda FN es una FNC)

    La Ex.I x (I I)

    admite como FNC tanto x.x (I I) como x.x I

    La E(x.x x) I x (I a)

    terminara en x (I a) si utilizamos reduccion por la cabeza, pero la re-duccion estandar continuara hasta obtener la expresion x a:

    (x.x x) I x (I a)c x (I a)

    fin computo si FNC

    s x a

    Ademas, observese que la E original tambien admite como FNC la ex-presion x a, pues

    (x.x x) I x (I a) I I x a I x a x a

    pero la FNC canonica (i.e., la obtenida por reduccion por la cabeza) es laexpresion x (I a)

  • 42 2. Formas normales

    Teorema 2.7

    (0) M cM [z := N ]M c [z := N ]M

    (1) x.M tiene una FNC M tiene una FNC(2) M N tiene una FNC M tiene una FNC(3) [x := N ]M tiene una FNC M tiene una FNC

    Demostracion: EJERCICIO 2.10. 22

    2.4 Formas debilnormales

    EJEMPLO 2.6. Sea la expresion Haskell

    (3+2) : cola unos where unos = 1 : unos

    Dicha expresion no esta en forma normal y su evaluacion a forma normal notermina.

    Es interesante en algunos casos no completar la evaluacion para evitar loscasos de no terminacion; las formas intermedias se llaman formas debilnormales.

    EJEMPLO 2.7. Sean las expresiones no normales

    (x.x x) (x.x x) x. (x.) u x.+ x (+ 2 3)

    en el caso de es evidente que podra considerarse el proceso de evaluacion delcuerpo de la funcion como una tecnica de optimizacion, y tendremos

    x.+ x 5que es una forma normal. Si utilizamos el mismo criterio con vemos que

    x. = . . .y el proceso de optimizacion produce la no terminacion; usando como criterio:

    evaluar solo los redexes de cabecera que existan o se produzcan

    tenemos que la evaluacion de termina (de hecho deja la expresion anteriorcomo esta ya que no existe redex de cabecera); se dice que es una debilforma normal por la cabeza (DFNC o tambien WHNF (weakhead normalform)); sin embargo, tal evaluacion debil por la cabeza no funciona con , pues

    (x.) u . . .y se dira que no admite una DFNC.

  • 2.4. Formas debilnormales 43

    Las DFNC fueron introducidas por Wadsworth en 1976 y permiten, entreotras cosas, distinguir ciertos computos que no terminan.

    EJEMPLO 2.8. Sea ahora la E:

    x.(y.x.+ x y) x

    cuyo unico redex aparece subrayado. Al aplicar una reduccion hay que tenercuidado ya que al sustituir la x que aparece en negrita se obtiene un resultadoerroneo.

    El problema visto anteriormente se conoce como problema de duplicidaddel indentificador (namecapture problem); para resolverlo es necesario unaconversion, pero puede evitarse dicha conversion en estos casos? Unaforma de resolver esto es con el concepto de DFNC donde la terminacion delproceso de reduccion se produce al alcanzar una DFNC.

    Los terminos sin redexes externos son de la forma

    x.E o bien x E1 E2 . . . En (n 0)

    Si incluimos constantes y reglas, las funciones parciales tambien son DFNCya que no tienen redexes externos (ni redexes ni redexes).

    EJEMPLO 2.9. As, son DFNC los terminos:

    x. x y

    pero 6 DFNC. Ademasx. 3 x

    esta en DFNC, y si admitimos

    x. 3 x = 3

    (que es una igualdad extensional) tenemos que 3 es una DFNC.

    Definicion 2.7 (Debilforma normal por la cabeza)

    (1) Toda constante es una DFNC

    (2) x.E es una DFNC

    (3) f E1 E2 . . . En es una DFNC si f es una constante o una funcion dearidad k > n 0

    2

    La diferencia esencial entre FNC y DFNC es que en la segunda no se evaluanlas abstracciones internas.

    EJEMPLO 2.10. En la figura siguiente se clasifican cinco expresiones:

  • 44 2. Formas normales

    donde por ejemplo, x.I M no esta en FNC pero si en DFNC, ya que no tieneredexes externos.

    Una expresion que consista en una sola variable es, segun la definicion, unaDFNC; sin embargo, el resultado de un programa funcional no debe contenervariables libres (p.e., + x 1) y podemos limitarnos a DFNC cerradas.

    Una ventaja (segun [FH88]) de la reduccion a una DFNC es que se evita lareduccion en presencia de variables libres.

    EJEMPLO 2.8. (continuacion) La expresion:

    x.(y.x.+ x y) x

    esta en DFNC y no es necesario reducir el redex interno: solamente cuando talexpresion es aplicada a un argumento debe reducirse por orden normal (el redexexterno de mas a la izquierda) para obtener una DFNC; as, la E:

    (x.(y.x.+ x y) x) 4

    no esta en DFNC y se reduce a una DFNC por orden normal:

    (x.(y.x.+ x y) x) 4 (y.x.+ x y) 4 x.+ x 4

    Observese que el problema de duplicidad del identificador ha desaparecido;esto es as porque solamente se reduce el redex externo, que no tiene variableslibres. La diferencia entre FNC y DFNC es solamente significativa cuando elresultado es una abstraccion; el problema de duplicidad del identificador puedeocurrir al reducir una expresion a FNC.

    Veremos despues que al identificar todos los terminos sin FNC se obtieneuna teora consistente; luego si identificamos

    = x.

    (es decir, si identificamos un termino en DFNC con uno que no admite DFNC)no se introducen inconsistencias.

    Los terminos en DFNC son los resultados en la evaluacion perezosa; as, elcomputo perezoso de x. termina mientras que el de no termina; por tanto,en un C perezoso (por ejemplo, el propuesto en [Abr90]), como modelo de loslenguajes funcionales perezosos, no es posible tal identificacion.

  • Chapter 3

    Teora de combinadores

    3.0 Combinadores

    3.0.0 Los combinadores estandares

    Vimos que al colocar una expresion M en el hueco [] de un contexto C[]se obtiene una nueva E denotada con C[M ] y ciertas variables libres de Mpueden quedar asociadas en C[M ]; por ejemplo, para la expresion M x.yx,con variable libre y y el contexto C[] (xy.[])EF , tenemos:

    C[x.y x]

    ((xy.(x.y x)) E) F ! la x interior esta asociada

    (y.(x.y x)) F

    x.F x

    Una E sin variables libres es independiente de su contexto; tales expresiones sellaman combinadores; la razon de tal denominacion es que a partir de ellas y porcombinacion se pueden obtener funciones de orden superior. Los combinadores,descubiertos en los anos 1920 por Schoenfinkel, fueron utilizados para eliminarlas variables de la logica matematica; fueron redescubiertos por Curry, el cualdesarrollo toda una teora basado en estos. Existen dos combinadores especialesS y K, definidos (salvo equiv.) en la forma:

    S = xyz.x z (y z)K = xy.x

    que se llaman combinadores estandares. Las propiedades fundamentales de estoscombinadores se resumen en el siguiente lema, siendo I x.x:

    45

  • 46 3. Teora de combinadores

    Lema 3.0 Se tienen las siguientes igualdades, M,N,L

    (i) I M =M

    (ii) K M N =M

    (iii) S M N L =M L (N L)

    (iv) S K K = I

    Demostracion: EJERCICIO 3.0. 22

    3.0.1 Potencias y potencias de K

    Definicion 3.0 Se definen:

    M N x.M (N x)M0 IMk+1 M Mk

    2

    En el C se tiene M1 =M :

    M

    M I

    x.M (I x)=

    x.M x=

    M

    NOTACION La notacion para las potencias se complica ligeramente; elloes debido a la no asociatividad (ver ejercicio 2.7); por ello conviene tambienutilizar una notacion para las expresiones de la forma

    A

    n B . . . B

    Barendregt utiliza la notacion ABn; es decir:

    AB0 AABn+1 (ABn)B ABnB

    por lo que:n

    B . . . B = IBn 6= Bn

  • 3.1. La teora de combinadores 47

    Veamos en particular las potencias del combinador K. Tenemos:

    K2

    K K

    =x.K (K x)

    =x.K (z.x)

    =x.(uy.u) (z.x)

    =xyz.x

    y de la misma forma tenemos:

    K = x0x1 . . . xn.x0

    es decir, Kn es una funcion de n + 1 argumentos que aplicado a ellos toma elprimero. Entonces tenemos:

    EJERCICIO 3.1. Probar que

    Kn A M1 . . . Mn = A

    2

    3.1 La teora de combinadores

    La razon de llamar combinadores estandares a los combinadoresK y S es quetoda E cerrada (sin variables) puede traducirse a una expresion combinatoriaestandar (es decir, el conjunto {K, I} genera el conjunto 0); las expresionescombinatorias son las expresiones que pueden escribirse al eliminar las abstrac-ciones de la sintaxis del C; es decir, al eliminar las construcciones .; unaexpresion combinatoria es estandar si utiliza solamente los combinadores S yK. El proceso de conversion de una abstraccion a una expresion combinatoriaestandar produce una expresion extraordinariamente grande (incluso para Esimples); se introducen entonces nuevas reglas de reduccion de combinadorespara simplificarlas (algoritmos de Curry y Turner) ([Rev88] pp. 5157, [Pey87]pp. 265274). Estas expresiones combinatorias fueron utilizadas para imple-mentar el lenguaje Miranda y maquinas de reduccion (la SKIM y la NORMA(Normal Order Reduction Machine)).

    3.1.0 Fundamentos de LCLa teora LC (Combinatory Logic) es una teora con igualdad formulada con

    el alfabeto:K, S dos constantesx, y, . . . variables=, (, )

  • 48 3. Teora de combinadores

    donde utilizamos el mismo identificador para las constantes K y S de la teoraLC y del C ya que no debe haber confusion.

    El conjunto C de LCterminos se define en forma inductiva:x, y, CK, S CP,Q C (P Q) C

    Las formulas son:P = Q con P,Q C

    El conjunto de variables libres de P , [P ], es simplemente el conjunto de vari-ables de P (recuerdese que no existen abstracciones). Para ahorrar parentesisconvenimos tambien la regla de asociacion por la izquierda. Observese que sidenotamos con C0 el conjunto de terminos cerrados (sin variables) entonces

    {K,S} es un generador de C0

    Definicion 3.1 La teora LC viene dada por los axiomas:

    1. = es una relacion de equivalencia

    2. = es compatible, es decir:

    M = N (M P = N P ) (P M = P N)

    3. K P Q = P

    4. S P Q R = P R (Q R)2

    En lo que sigue, las igualdades se entienden en LC y las constantesK y S denotanLCterminos constantes. Conviene introducir un nuevo smbolo I definido en laforma:

    I S K KEntonces, por los axiomas 3 y 4 tenemos:

    I P = P

    Con objeto de simplificar ciertos LCterminos conviene introducir una no-tacion parecida a las abstracciones del C. Esto permitira ver una relacion entrelas teoras C y LC. Se define

    x.P

    por induccion estructural sobre P :

    x.x I [0]x.P K P si x 6 [P ] [1]x.P Q S (x.P ) (x.Q) [2]

  • 3.1. La teora de combinadores 49

    y de forma analoga al C, se define:

    x1x2 . . . xn.P = x1.(x2. . . . (xn.P ) . . . )

    Asxy.y x S (K (S I)) (S (K K) I)

    En efecto:

    xy.y x

    x.y.y x ! [2] para y.y x

    x.S (y.y) (y.x) ! [1] para y.y, [2] para y.x

    x.S I (K x) ! [2]

    S (x.S I) (x.K x) ! [1], [2]

    S (K (S I)) (S (x.K) (x.x)) ! [1], [0]

    S (K (S I)) (S (K K) I)

    EJERCICIO 3.2. Demostrar por induccion estructural las propiedades:

    (1) [x.P ] = [P ] x(2) (x.P ) x = P

    (3) (x.P ) Q [x := Q]P(4) si y 6 [Q], y 6 x, [y := Q](x.P ) x.[x := Q]P(5) si y 6 [P ], x.P y.[x := y]P

    2

    Si se incluye la regla de extensionalidad

    (P x = Q x) (x 6 [P Q]) P = Q extentonces se puede aplicar la regla

    P = Q x.P = x.Q regla

    La relacion binaria

    w = { (K M N, M), (S M N L, M L (N L)) |M,N,L C }induce (por cierre reflexivo transitivo) conceptos de reduccion w y =w deforma que se tiene M =w N LC ` M = N , as como tambien es cierto elteorema de ChurchRosser, y LC es consistente.

  • 50 3. Teora de combinadores

    NOTA Hay muchas formas de definir el concepto de abstracion en LC; porejemplo podemos considerar un concepto de abstraccion x.M definido al igualque x.M , pero cambiando la regla [1]:

    x.x I [0]x.P K P si P es una variable ( 6 x), K o S [1]x.P Q S (x.P ) (x.Q) [2]

    NOTACION En otros textos la aplicacion x.M en LC se suele escribir [x]M(p. 276 de [FH88], o p. 52 de [Rev88]) En consecuencia:

    y.z x S (K z) (K x)y.z x K (z x)

    Si el calculo es extensional las dos definiciones coinciden (y esto es as porquela regla sera aplicable); as, por ejemplo tendremos:

    S (K z) (K x) u = K (z x) u=

    ((K z) u) ((K x) u) = z x=

    z x = z x=

    Cierto

    de dondeS (K z) (K x) = K (z x)

    3.1.1 Relacion entre terminos y terminos combinatorios

    Se puede establecer una correspondencia entre las teoras LC y C (paramas detalles ver 7.3 en [Bar84]) estableciendo dos aplicaciones:

    () : C ()LC : C

    definidas en forma inductiva (denotamos (P ) P, (P )LC PLC):x xK KS S(P Q) P Q

    xLC x(M N)LC MLC NLC(x.M)LC x.MLC

  • 3.1. La teora de combinadores 51

    entonces se tiene:C `MLC, =M

    y ademas:(LC ` P = Q) P = Q

    El recproco del anterior no es cierto; por ejemplo,

    C ` S K = K Iya que

    S K ! definicion de S

    (pqr.p r (q r)) K= ! regla

    qr.K r (q r)= ! definicion de K

    qr.r= ! definicion de K y de I

    K I

    pero no es posible deducir en LC la igualdad S K = K I ya que en LC noes aplicable la regla (ver [Bar84], p.157):

    P = Q x.P = x.QEn efecto; tenemos:

    LC ` I x = xpero

    LC 6` x.I x = Idonde x.I x S (K I) I

    3.1.2 Reduccion en forma perezosa

    EJEMPLO 3.0. Sea f una constante. Calculemos (xy.f x y)LC :

    (xy.f x y)LC

    x.y.f x y

    x.S (y.f x) (y.y)

    x.S (K (f x)) I

    S (x.S (K (f x)) (x.I)

    S (x.S (K (f x)) (K I)

  • 52 3. Teora de combinadores

    S (S (x.S) (x.K (f x))) (K I)

    S (S (K S) (S (x.K) (x.(f x)) (K I)

    S (S (K S) (S (K K) (S (K f) I))) (K I)

    luego

    (xy.f x y)LC S (S (K S) (S (K K) (S (K f) I))) (K I)que es la representacion combinatorial de f como aplicacion parcial, donde seobserva que las reducciones quedan suspendidas ya que los terminos aparecenemparejados sin posibilidad de utilizar la reduccion. Tenemos que:

    (xy.f x y)LC u v= ! definicion de ()LC

    (xy.f x y) u v= ! propiedad 3 anterior

    f u v

    y por tanto, si LC fuera extensional tendramosLC ` (xy.f x y)LC = f

    Observese tambien que tenemos:

    S (S (K S) (S (K K) (S (K f) I))) (K I) u=

    (S (K S) (S (K K) (S (K f) I))) u ((K I) u)=

    (((K S) u) (S (K K) (S (K f) I)) u) I=

    S ((K K) u) (S (K f) I) u) I=

    S (K ((K f) u) (I u)) I=

    S (K (f u)) I

    luego(xy.f x y)LC u = S (K (f u)) I

    donde de nuevo quedan operaciones suspendidas; finalmente, si aplicamos a unanueva variable v podemos arrancar nuevas reduciones

    (xy.f x y)LC u v=

    S (K (f u)) I v=

    K (f u) v (I v)=

    f u v

  • 3.1. La teora de combinadores 53

    La discusion anterior permite intuir que una expresion combinatoria (comoversion compilada de una E o programa funcional) se reduce en forma pere-zosa.

    3.1.3 Generadores y bases

    La siguiente propiedad permite probar que el conjunto {K,S} 0 es unabase en el siguiente sentido.

    Definicion 3.2 (Generador y base)

    1. Dado un conjunto B, se define B+, terminos generados por B, como elmenor subconjunto de que contiene a B y es cerrado para la aplicacion;es decir, el menor Y verificando: B Y M,N Y M N Y

    2. B se dice una base de si

    M.M 0 . (N.N B+.M = N)2

    Teorema 3.0 {K,S} es una base

    Demostracion: Sea M 0; entonces MLC C0, por lo que MLC, {K,S}+;pero por ser C `MLC, =M se tiene que M {K,S}+ 2Teorema 3.1 Existe una base de con un solo elemento X verificando

    X X X = K , X (X X) = S

    Demostracion: EJERCICIO 3.3. 22

    EJERCICIO 3.4. Probar que el elemento X x.x (S (K K)) K es unabase. Ayuda: probar que X X X = K, y que X K = S 2

    EJERCICIO 3.5. Por que son importantes las bases de ? 2

    3.1.4 Equivalencia entre C y LCVolvamos de nuevo al problema de la reduccion de combinadores; en el ejem-

    plo 3.0 vimos la equivalencia

    xy.f x y S (S (K S) (S (K K) (S (K f) I))) (K I)

  • 54 3. Teora de combinadores

    pero, aplicando unicamente las reglas de reduccion (igualdades) de LC no esposible reducir el termino anterior (sera una forma normal en LC).

    Recuerdese tambien que se tiene:

    C ` MLC, =MLC ` P = Q C ` P = Q

    pero no necesariamente se tiene:

    LC ` M,LC =MC ` P = Q LC ` PLC = QLC

    Sea A un conjunto de axiomas (igualdades) en LC; diremos que C es equiv-alente a LC A si se tiene:

    C `MLC, =M LC A `M,LC =M LC A ` P = Q C ` P = Q C ` P = Q LC A ` PLC = QLC

    Sea ahora A un conjunto de axiomas de forma que es posible probar en LC Alas siguientes propiedades:

    (a) K = xy.x

    (b) S = xyz.x z (y z)

    (c) S (K P ) (K Q) = K (P Q)

    (d) x.K P Q = x.P

    (e) x.S P Q R = x.P R (Q R)

    entonces se tiene x.M = x.M y las teoras C y LC A son equivalentes. Elproblema es la eleccion del conjunto A de axiomas; por ejemplo, Curry introduceel siguiente conjunto A de axiomas:

    (1) K = xy.K x y (1) K = xy.x(2) S = xyz.S x y z (2) S = xyz.x z (y z)(3) xy.S (K x) (K y) = xy.K (x y)(4) xy.S (S (K K) x) y = xyz.x z(5) xyz.S (S (S (K S) x) y) z = xyz.S (S x z) (S y z)

    y se puede demostrar que LCA ` (a)(e), y por tanto LCA es equivalentea C; tambien es facil ver que LC ext ` A donde A es A extendido conel axioma:

    () x.S (K x) I = I

  • 3.2. Puntos fijos 55

    y por tanto las teoras LCext, , Cext y LCA son todas equivalentes.Curry introduce dos nuevas constantes B y C, llamadas compositor y per-

    mutador, que son las versiones abstractas de dos terminos:

    B fxy.f (x y) C fxy.f y x

    y a partir de estas da reglas suficientes para la equivalencia con el C extensional;estas son:

    (a) S (K P ) (K Q) = K (P Q)

    (b) S (K P ) I = P

    (c) S (K P ) Q = B P Q

    (d) S P (K Q) = C P Q

    Si consideramos un C extensional con constantes tendremos:

    x.4 x = 4

    y si trasladamos la expresion x.4 x obtenemos:(x.4 x)LC

    S (K 4) I

    = ! por (b)4

    3.2 Puntos fijos

    3.2.0 Expresando la recursion

    Consideremos la siguiente definicion de factorial:

    FAC = n.COND (= n 0) 1 ( n (FAC ( n 1))) (3.0)

    y puesto que COND xyz.x y x:

    FAC = n.(= n 0) 1 ( n (FAC ( n 1))) (3.1)

    Tal definicion es incorrecta en el C ya que las funciones son anonimas yno pueden referirse a s mismas; para resolver tal problema podemos escribir elmiembro de la derecha como resultado de una reduccion sobre una funcion definida en la forma:

    = f.((n.( = n 0) 1 ( n (f ( n 1)))

  • 56 3. Teora de combinadores

    de forma que la ecuacion 3.1 se escribe en la forma:

    FACT = FACT (3.2)

    es decir, FACT es un punto fijo de la funcion ; por otro lado vemos que lasolucion a la ecuacion 3.2 dependera solamente de . Veamos una forma deobtener la solucion de tales ecuaciones:

    Teorema 3.2 (del punto fijo) Para cada F existe una expresion X tal que

    F X = X

    Demostracion: Sean W x.F (x x), X W W ; tenemosX

    =W W

    =(x.F (x x)) W

    =F (W W )

    =F X

    2El teorema afirma que existe solucion de la ecuacion 3.2. Veamos ahora

    como buscarla de forma general.

    3.2.1 Combinadores para puntos fijos

    Definicion 3.3 (Combinador para puntos fijos) Un terminoM es un com-binador para puntos fijos (cppf) si

    F . F . M F = F (M F )2

    Se observa que, si M es un cppf, dada una F podemos obtener siempre unpunto fijo de F en la forma M F . El problema es, existen tales combinadores?

    Corolario 3.0 El combinador Y f.(x.f (x x)) (x.f (x x)) es un cppf.

    Demostracion: Sea W x.F (x x) el termino del teorema; entonces:Y F

    W W

    =F (W W )

    =F (Y F )

    2

  • 3.2. Puntos fijos 57

    El combinador Y es llamado por Curry el combinador paradojico.

    EJERCICIO 3.6. Analizar la siguiente paradoja de Curry; supongamos quequeremos definir un operador (implicacion) verificando:

    (P (P Q)) (P Q)P, P Q ` Q (modus ponens)

    Sea imp la version prefija (parcializada) de y sea:N x.imp x (imp x Q)P Y N

    Probar que

    (a) Q :: P = imp P (imp P Q)(b) P = C

    (c) Q :: Q = C (inconsistencia, e.d., paradoja)2

    El combinador Y resuelve el problema de la recursion antes planteado, ya quela funcion factorial puede definirse en la forma:

    FACT = Y

    donde es = f.((n.(= n 0) 1 ( n (f ( n 1)))

    que es una definicion no recursiva del factorial. As tenemos una tecnica paraeliminar la recursion transformandola en iteracion, pero tal iteracion puede noterminar (si las iteraciones no tienen forma normal).

    Tal solucion es acertada desde un punto de vista matematico; sin embargo,debido a la ineficiencia de la implementacion del combinador Y usando su E,la mayora de las implementaciones proporcionan Y como un constructor conla regla de reduccion

    Y F F (Y F )En efecto, tenemos la siguiente reduccion:

    FACT 1

    Y 1

    (Y ) 1

    (f.((n.(= n 0) 1 ( n (f ( n 1)))) (Y ) 1

    ((n.(= n 0) 1 ( n (Y ( n 1)))) 1

    1 (Y ( 1 1))))

  • 58 3. Teora de combinadores

    1 (Y 0)

    1 ( (Y ) 0)

    1 (f.((n.(= n 0) 1 ( n (f ( n 1)))) (Y ) 0

    1 ((n.(= n 0) 1 ( n (Y ( n 1)))) 0

    1 1

    1

    Los puntos fijos de un termino F no son necesariamente unicos; sin embargo,el punto fijo Y F es el mnimo punto fijo de F en la teora de dominios.

    Otro ejemplo de cppf es el de Turing:

    T = A A , donde A xy.y (x x y)

    En efecto:

    T F

    A A F

    F (A A F )

    F (T F )

    En general

    EJERCICIO 3.7. Dado un termino M , probar que

    YM f.W W M , donde W xz.f (x x z)

    es un cppf. 2

    Los siguientes resultados permiten obtener otros cppf:

    Lema 3.1 Sea G S I = yf.f (y f). Entonces

    M es un cppf M = G M

    Demostracion:

    () Si M = G M , entonces M F = G M F = F (M F ), con lo cual M es uncppf.

  • 3.2. Puntos fijos 59

    () Si M es un cppf, entonces M f = f (M f), con lo cualM

    =f.M f

    =f.f (M f)

    =G M

    2

    Teorema 3.3 (Bohmvan der Mey) Los siguientes combinadores son cppf:

    Y0 Y , Yn+1 Yn (S I)

    Demostracion: Se prueba por induccion:

    Caso base: Y0 Y es un cppf (como vimos antes)

    Paso inductivo: Supongamos que Yn lo es; entonces, por el lema anteriortenemos que:

    Yn = G Yn

    luego:

    G Yn+1

    G Yn (S I)

    =Yn (S I)

    Yn+1

    2

    EJERCICIO 3.8. Probar que Y1 = T (el combinador de Turing) 2

    EJERCICIO 3.9. Construir un termino F tal que F x y = F y x F 2

    EJERCICIO 3.10. Probar que Y I = 2

  • 60 3. Teora de combinadores

  • Chapter 4

    Lambda definibilidad

    En la sintaxis del C vista anteriormente consideramos un conjunto de con-stantes correspondientes a una serie predefinida de funciones (con reglas),tales como +, 0, 1, cond, etc. En este apartado vamos a ver como puedendefinirse tales funciones en un C puro.

    4.0 Operaciones logicas

    4.0.0 Constantes y operaciones logicas

    Si definimos los combinadores

    C = xy.xF = xy.y

    se tiene:C P Q = PF P Q = Q

    (C es el combinador K anterior y K I F) por lo que podemos definir elcombinador condicional cond

    cond = cpq.c p q

    ya que cumple las reglas de reduccion conocidas del si-entonces-sino; en efecto:

    cond C M N

    (cpq.c p q) C M N= ! regla tres veces

    C M N=

    M

    61

  • 62 4. Lambda definibilidad

    Los operadores no, y y o se definen en la forma:

    no = x.x F Cy = xy.x y Fo = xy.x C y

    As,

    y C F

    (xy.x y F) C F= ! regla dos veces

    C F F=

    F

    no C

    (x.x F C) C=

    C F C=

    F

    EJERCICIO 4.0. Definir el operador xor. 2

    EJERCICIO 4.1. Probar que y y o son commutativas y asociativas 2

    EJERCICIO 4.2. C ` no no A = A? 2

    4.1 Computabilidad y definibilidad

    4.1.0 Sistemas de numerales y numerales de Church

    Definicion 4.0 (Sistema de numerales) Un sistema N de numerales es unaterna N N,Cero,Suc donde N es una sucesion de combinadores

    N N0, N1, . . .y Cero y Suc son dos terminos (funciones) tales que

    Cero N ={C , si N = N0F , si N = N1, N2, . . .

    Suc Nk = Nk+12

  • 4.1. Computabilidad y definibilidad 63

    Definicion 4.1 (Sistema adecuado de numerales) Un sistema de numeraleses adecuado si existe una funcion Pred (predecesor) tal que:

    Pred Nk+1 = Nk

    2

    Existen varios sistemas adecuados de numerales; veremos dos de ellos: elestandar y el de Church.

    Definicion 4.2 (Pares de Church) Se definen:

    [M ] M[M,N ] z.z M N[M0, . . . ,Mn] [M0, [M1, . . . ,Mn]]

    2

    Definicion 4.3 (Numerales estandar) Sean

    d0e Idn+ 1e [F, dne] z.z Fdne

    2

    Definimos entonces las funciones Suc, Pred y Cero:

    S+ x.[F, x] (funcion sucesor)P x.x F (funcion predecesor)Cero x.x C (test cero)

    EJERCICIO 4.3. Se verifican las siguientes propiedades:

    S+ dne = dn+ 1eP dn+ 1e = dneCero d0e = CCero dn+ 1e = F

    2

    Claramente el sistema de numerales estandar esta determinado por la funcionsucesor y por el primer valor d0e, por lo que podemos expresar N d0e,S+

    4.1.1 Funciones definibles y recursivas. Teorema de Kleene

    Definicion 4.4 (Funcion definible) Una funcion numerica : Np Nse dice definible si existe un termino F tal que

    d(n1, . . . , np)e F dn1e . . . dnpe2

  • 64 4. Lambda definibilidad

    NOTACION Si denotamos con

    n = n1, . . . , np dne = dn1e . . . dnpela definicion anterior se escribe:

    d(n)e F dne

    Definicion 4.5 (Funciones recursivas)

    1. Las funciones iniciales son las funciones Upi , S+, Z, donde

    Upi (n0, . . . , np) = niS+(n) = n+ 1Z(n) = 0

    2. Una clase de funciones numericas C es cerrada para la composicionsi contiene la composicion de funciones de la clase, es decir, las funcionesde la forma:

    (1(n), . . . , m(n)) C si , 1, . . . , m C

    3. Una clase de funciones numericas C es cerrada para la recursion prim-itiva si contiene a las funciones de la forma:

    (0,n) = (n)(k + 1,n) = ((k,n), k,n) , para , C

    4. Una clase C es cerrada para la minimizacion si contiene las funcionesde la forma:

    (n) = min { m | (n,m) = 0 } , con C

    5. La clase R de las funciones recursivas es la menor clase cerrada parala composicion, recursion primitiva y minimizacion que contiene a lasfunciones iniciales.

    2

    Teorema 4.0 (Kleene) La clase de funciones recursivas es la misma que laclase de funciones definibles.

    Demostracion: [Bar84], pag. 138 2

    Corolario 4.0 Las funciones computables son definibles.

    Demostracion: [Bar84], pag. 138 2

    NOTA El recproco tambien es cierto, es decir, toda funcion definible escomputable.

  • 4.1. Computabilidad y definibilidad 65

    El teorema de Kleene es la base de la evaluacion de los programas funcionales;as, dada una funcion computable f : N N y su termino asociado F :

    df(n)e F dne

    por el teorema de Chuch-Rosser, para obtener su valor (df(n)e) basta encontrar(si existe) la forma normal de F dne.

    4.1.2 Aritmetica y Numerales de Church

    Aunque es posible definir la aritmetica con los numerales estandar, es mas simplehacerlo a traves de los numerales de Church. Estos se definen en la forma:

    c0 fx.xcn+1 fx.fn+1(x)

    de forma queS+c abc.b (a b c)

    es una funcion sucesor; en efecto:

    S+c cn=

    bc.b (cn b c)=

    bc.b bn c=

    cn+1

    EJERCICIO 4.4.

    1. Definir funciones

    { c0, c1, . . . } H1 { d0e, d1e, . . . }

    { c0, c1, . . . } H { d0e, d1e, . . . }

    tales que:H dne = cn H1 cn = dne

    2. A traves de las funciones anteriores, definir funciones test-cero y predecesor(Ceroc y Pc ) para los numerales de Church.

    3. Demostrar que los numerales de Church forman un sistema adecuado denumerales.

    2

  • 66 4. Lambda definibilidad

    EJERCICIO 4.5. [Rosser] Se consideran las siguientes funciones

    + mnfx.m f (n f x) (suma) mnf.m (n f) mn.m n (producto) xy.y x (exponencial)

    donde m n viene dado por la definicion 3.0. Probar que con respecto a losnumerales de Church las funciones suma, multiplicacion y potencia quedan definidas por +, y 2

    4.1.3 Extension del C con la aritmetica

    Por el teorema de Kleene se puede integrar la aritmetica entera en el C,extendiendo este con las constantes necesarias (los numeros, el test cero, lasfunciones predecesor y sucesor, las operaciones aritmeticas, etc.) y con unas reglas consistentes con la aritmetica; es facil probar que la reduccion asociadatiene la propiedad de ChurchRosser.

    4.2 Listas en el C puro

    4.2.0 definibilidad de las funciones basicas para listas

    Sean las funciones:

    cons abf.f a bvacia xyz.yvacia? x.x (abcd.d)

    Entonces es facil ver que:

    vacia? vacia = C vacia? (cons a b) = F

    Por ejemplo:

    vacia? (cons a b)

    (x.x (abcd.d)) (cons a b)=

    cons a b (abcd.d) ! definicion de cons

    (abf.f a b) a b (abcd.d)= ! regla tres veces

    (abcd.d) a b= ! regla dos veces

    cd.d

    F

  • 4.2. Listas en el C puro 67

    Podemos identificar cons con el constructor de listas y consideraremos las sigu-ientes equivalencias sintacticas:

    vacia [ ]cons a b a : b[x1, . . . , xn] x1 : [x2, . . . , xn]

    entonces es facil ver que:

    cab x.x C col x.x Fson funciones que extraen la cabeza y la cola de una lista:

    cab (cons p q) = p col (cons p q) = q

    Por ejemplo:

    cab (cons p q) ! definicion de cab

    (x.x C) (cons p q)=

    cons p q C ! definicion de cons

    (abf.f a b) p q C= ! regla tres veces

    C p q ! definicion de C

    (xy.x) p q= ! regla dos veces

    p

    Ahora veamos como definir la funcion de concatenacion. En principio, nues-tra funcion debera verificar la ecuacion:

    CONCA x y = vacia? x y (cons (cab x) (CONCA (col x) y))

    y si procedemos a eliminar la recursion de la misma forma que hicimos con elfactorial, tendremos:

    CONCA = Y (fxy.vacia? x y (cons (cab x) (f (col x) y)))

    EJERCICIO 4.6. Probar (haciendo las hipotesis necesarias) que la funcionanterior CONCA tiene el mismo comportamiento que la funcion:

    CONCA = Y (fxy.lcaso x y (cr.cons c (f r y)))

    dondelcaso vacia P Q Plcaso (cons M N) P Q Q M N

    2

  • 68 4. Lambda definibilidad

    4.2.1 Las listas en un C con constantes

    Consideremos ahora la extension sintactica del C con las listas; podemos anadirlas reglas para las constantes cab, col, cons y vacia?:

    cab [ ] [ ]cab [A1, . . . , An] A1 (n 1)

    col [ ] [ ]col [A1, . . . , An] [A2, . . . , An] (n 1)

    cons A [ ] [A]cons A [A1, . . . , An] [A,A1, . . . , An]

    vacia? [ ] Cvacia? [A1, . . . , An] F

    Como primera observacion, puesto que en nuestro C no se consideran tipos, laexpresion vacia? 3 tiene sentido y precisamente es una forma normal.

    Al incluir las listas tendremos que incluir terminos de la forma:

    x.[a, b] (x.[x, q]) M (xy.[x, y] a) [b, c, d]

    y puede ser interesante considerar tambien ciertas reglas de reduccion cuandoaparecen las listas en forma funcional. Por ejemplo, podra ser interesantetrasladar la funcionalidad a las listas y ampliar el concepto de reduccion, con locual se tendra por ejemplo:

    (x.[x, q]) M [M, q](xy.[x, y] P ) [b, c, d] = y.[[b P, c P, d P ], y P ]

    Para ello es necesario definir la sustitucion sobre listas (para esta sustitucion uti-lizamos {x := E} en lugar de [x := E] para evitar confusiones con los corchetes):

    {x := E}[A,B, . . . ] [{x := E}A, {x := E}B, . . . ]

    y en ese caso tendremos una regla extendida:

    (x.[A,B, . . . ]) M [{x :=M}A, {x :=M}B, . . . ]

    Sin embargo quizas sea mas interesante, de cara a enriquecer las propiedadesfuncionales de las listas, anadir dos nuevas reglas en la forma:

    x.[A,B, . . . ] [x.A, x.B, . . . ][A,B, . . . ] M [A M,B M, . . . ]

    Tales reglas no son deducibles a traves de un C puro y, segun ([Rev88],p.66]), es poco probable que exista alguna otra representacion de las listas que

  • 4.3. Autointerpretacion en el C 69

    verifique las reglas. Estas reglas tendran una gran influencia en el conceptode FNC para las listas.

    EJERCICIO 4.7. Utilizando las reglas, probar la interesante propiedad:

    [A,B] h = [A h,B h]donde es la composicion:

    M N x.M (N x)2

    EJERCICIO 4.8. Describir, en el C extendido, las funciones APLICA (alista), INV IERTE y REDUCE (listas). 2

    4.3 Autointerpretacion en el C

    4.3.0 Un autointerprete para el C

    Si todas las funciones computables pueden ser descritas con un lenguaje(teorema de Kleene), entonces una determinada funcion (computable) descritacon el lenguaje debera poder ser interpretada en el propio lenguaje; se hablaentonces de autointerpretacion. Veamos un resumen de [Bar91], donde se exponeuna demostracion de tal posibilidad para el C. El problema es el siguiente:

    Existe una funcion I : tal que IdMe = M? Es repre-sentable tal funcion en el C?

    Podemos asignar a cada termino M un codigo interno dMe en la formasiguiente: puesto que NN es numerable, existe una biyeccion NN N (Can-tor se encargo de definirla); sea esta n,m. Suponiendo que las variables estannumeradas en la forma vi, entonces podemos definir el codigo de un termino enforma inductiva:

    #vi = 0, i#(M N) = 1, #M,#N#(x.M) = 2, #x,#M

    Sea ahora dMe d#Me, la forma normal asociada al numeral de Church corre-spondiente a #M . Un autointerprete es un termino E verificando, M 0

    E dMe = M

    Observese que la ecuacion anterior no puede ser cierta para todos los terminos,ya que el numero de variables libres de E dMe esta acotado por el numero devariables libres de E, mientras que el de M no esta acotado.

    Teorema 4.1 (Church, 1936) Existe un autointerprete para el C

    Demostracion: (ver [Bar91]) 2

  • 70 4. Lambda definibilidad

    4.3.1 Aplicaciones de la autointerpretacion

    Usando un autointerprete es posible demostrar la existencia de terminos sindarlos explcitamente; por ejemplo, existe un termino F tal que

    F dne = x1 xn.[x1, . . . , xn]

    En efecto; seaMn x1 xn.[x1, . . . , xn]

    entonces #Mn es computable y existe una funcion g recursiva tal que

    g(n) = #M

    ademas, g es definible, luego si g esta definida por G y E es un au-tointerprete, entonces

    F n.E (G n)es una solucion

    F dne= ! definicion de F

    E (G dne)= ! g esta definida por G

    E (g(n))

    E #Mn= ! E es un autointerprete

    x1 xn.[x1, . . . , xn]

    EJERCICIO 4.9. Sea inv la funcion que invierte listas y sea V :

    V = Y (vn.Cero n inv (Lx.v (Pred n) (x : L))

    probar que F (n.V n vacia) verifica

    F dne x1 xn = [x1, . . . , xn]

    2

  • Chapter 5

    Solubilidad

    5.0 Introduccion

    Existen terminos que no tienen forma normal, como por ejemplo

    = (x.x x) (x.x x)

    El concepto de computo (reduccion) para tales terminos no termina; en esecaso, que se entiende por computo para tales terminos?

    Ademas, sabemos (ver ejercicio 2.6) que no podemos identificar los terminossin forma normal ya que la teora sera inconsistente; sin embargo, existenterminos sin forma normal que son distinguibles en cierto contexto.

    EJEMPLO 5.0. Sean

    M x.x K AN x.x (K I) A

    donde A no tiene forma normal; entoncesM y N no tienen tienen forma normal;sea ahora el contexto C[] []K; entonces:

    C[M ] C[N ]

    MK NK= =

    K K A K (K I) A= =

    K K I

    y ya que K 6= K I (ver ejercicio 2.8), tendremos que M K y N K son distin-guibles, por lo cual M y N no se pueden identificar.

    Observese que los terminos M y N del ejemplo anterior estan en FNC;veremos que eso es equivalente a cierto concepto de solubilidad.

    71

  • 72 5. Solubilidad

    5.1 Concepto y caracterizacion de la solubilidad

    Definicion 5.0 (Termino resoluble)

    1. Un termino M 0 es resoluble si existen terminos N1,. . . ,Nk tales queM N1 . . . Nk = I (5.0)

    donde k puede ser cero (y en ese caso M = I).

    2. Un termino M es resoluble si su cierre ~x.M es resoluble.3. Un termino M se dice irresoluble si no es resoluble.

    NOTACION La ecuacion 5.0 anterior la escribiremos:

    M ~N = I

    Tenemos la equivalencia:

    M resoluble (X :: ( ~N ::M ~N = X))Es decir, que la ecuacion M ~N = X se puede resolver para cada X y M .

    Teorema 5.0 La irresolubilidad se conserva en las traslaciones entre C y LC.

    Demostracion: pagina 177 de [Bar84]. 2

    EJERCICIO 5.0. Probar que:

    (a) K y S son resolubles

    (b) Y es resoluble

    (c) los numerales de Church y los estandar dne son resolubles2

    Observese que todos los terminos del ejercicio anterior admiten FNC. Veamosahora un par de teoremas de caracterizacion y una condicion suficiente para laresolubilidad de un termino M .

    Teorema 5.1

    1. Un termino M es resoluble si y solo si existe una instancia M de My existen terminos ~N 0 tales que

    M ~N = I

    2. Un termino M