EL ?-C - PowerPoint PPT Presentation

About This Presentation
Title:

EL ?-C

Description:

Title: ARITM TICA EN EL -C LCULO Author: Inma Last modified by: C Created Date: 4/2/2005 3:35:29 PM Document presentation format: Presentaci n en pantalla – PowerPoint PPT presentation

Number of Views:40
Avg rating:3.0/5.0
Slides: 32
Provided by: inma66
Category:
Tags: generacion

less

Transcript and Presenter's Notes

Title: EL ?-C


1
EL ?-CÁLCULO CON TIPOS
  • Inmaculada Berrocal Rincón
  • Pablo Camacho Aires
  • Adrián Muñoz Alba

2
CONTENIDOS
  • Introducción
  • Los Sistemas de tipos de Church y de Curry
  • Propiedades del Sistema de tipos à la Curry
  • Inferencia de tipos
  • Un argumento
  • Varios argumentos
  • Otras variables predefinidas
  • Inferencia de tipos en presencia de recursión
  • Inferencia de tipos en presencia de patrones
  • Reglas elementales para inferencia de tipos

3
INTRODUCCIÓN
  • El ?-cálculo fue ideado por Church (1932-1933)
    como parte de una teoría general de funciones y
    lógica. El sistema se volvió inconsistente, como
    lo demostraron Kleene y Rosser (1936). El
    subsistema que trata con funciones llegó a ser un
    modelo factible para modelos computables. Esto es
    lo que se conoce hoy como el ?-cálculo.
  • Kleene y Rosser demostraron que todas las
    funciones recursivas se podían representar en
    ?-cálculo. Por otra parte, Turing demostró que
    las funciones computables por una máquina de
    Turing pueden ser representadas en el ?-cálculo.
    La representación de funciones computables como
    ?-términos dió lugar a lo que se llama
    Programación Funcional.
  • El ?-cálculo siempre ha sido tratado como una
    teoría libremente tipificada.

4
LOS SISTEMAS DE TIPOS DE CHURCH Y DE CURRY
  • El uso de tipos para modelar la lógica se
    remonta al trabajo de Bertrand Russell en el año
    1908 (Mathematical logic as based on a theory of
    types).
  • En 1940, Alonzo Church desarrolló una teoría
    simple de tipos. Un poco antes fue Haskell Curry
    quien desarrolló una teoría de tipos para la
    lógica combinatoria en 1934.
  • Henk P. Barendregt, en su artículo Lamba Calculi
    with Types, distingue esencialmente dos estilos
    para la descripción de los sistemas de tipos,
    denominados sistemas de tipos à la Church y
    sistemas de tipos à la Curry.
  • Los primeros se suelen llamar sistemas
    explícitos, mientras que los segundos se conocen
    como implícitos, y en estos los términos a
    tipificar son esencialmente los del ?-cálculo.

5
LOS SISTEMAS DE TIPOS DE CHURCH Y DE CURRY
  • En el sistema de tipos à la Curry, los términos
    puede tener un conjunto de tipos posibles que
    puede estar vacío, tener uno o varios elementos.
  • En el sistema de tipos à la Church, cada término
    tiene un tipo que es único.
  • En los sistemas à la Curry falla la propiedad
    de unicidad de tipos.

6
LOS SISTEMAS DE TIPOS DE CHURCH Y DE CURRY
  • El sistema de tipos de Curry viene descrito por
    el siguiente axioma y reglas de inferencia

7
PROPIEDADES
  • Conservación del tipo la evaluación de un
    término no modifica el tipo de dicho término.
  • Todo término tipificable es fuertemente
    normalizante si un término es tipificable, tiene
    una forma normal.
  • Sustitución podemos considerar tipos
    resultantes por sustitución de tipos en
    expresiones o contextos.

8
PROPIEDADES
  • Problemas fundamentales en los sistemas de tipos
    en general
  • Comprobación de tipos
  • Tipificación
  • Habitabilidad

La demostración de la decibilidad de los dos
primeros problemas surge de la demostración que
Curry y Hindley realizaron sobre la
tipificabilidad de un término. El tercer problema
no es decidible en el lambda cálculo polimórfico.
9
LEMA DE GENERACIÓN
  • Si ? x ?, entonces x ? ?.
  • Si ? f a ?, entonces existe un tipo ? tal que
    ? f ? ? ? ? a ?.
  • Si ? ?x.b ?, entonces existen dos tipos ? y ?
    tales que ? ? ? ? , y además ?,x ? b ?.

10
UNICIDAD DE TIPO DE VARIABLES
  • (UniVar) ? x ?1 ? x ?2 ? ?1
    ?2
  • Demostración. Si tenemos las derivaciones de la
    parte izquierda de la implicación anterior,
    aplicando al apartado (a) del lema anterior
    tendremos que
  • x ?1 ? x ?2 ?
  • Pero en un mismo contexto no puede aparecer
    variables repetidas. Es necesario que ?1 ?2.

11
INFERENCIA DE TIPOS
  • En el sistema de tipos à la Curry, los problemas
    fundamentales de comprobación de tipos (type
    checking), tipificación (typability) y
    habitabilidad (inhabitation) son decidibles.
    Malecki descubrió que el problema de la
    tipificación se puede reducir al problema de la
    comprobación de tipos.
  • Hindley y Milner dan para el ?-cálculo à la
    Curry una función pp recursiva tal que para cada
    término a tipificable, pp(a) es un par principal
    de a que además falla si el término no es
    tipificable.
  • ?a a ?a
  • Si ? a ? entonces existe una sustitución
  • ??1, ?n ?1,?n? tal que ?a ? ? y ?
    ?a

12
INFERENCIA DE TIPOSUN ARGUMENTO
  • Para una expresión E y una función en ?C f
    ?x.E que sea tipificable, existirá un tipo ? y
    un contexto ? que se le podrá asignar a nuestra
    función de la forma (en Haskell se utilizan los
    dos puntos para indicar la asignación de
    tipos)
  • ? ?x.E ? ? f ?
  • que se le podrá aplicar el apartado (c) del lema
    de generación, obteniendo
  • ?,x ? E ? ? ? ? ?

REGLA I Asignamos tipo al argumento y al
resultado de la función de forma que para cierto
contexto tendremos ?,x ? E ?
? f ? ? ?
13
INFERENCIA DE TIPOSUN ARGUMENTO
  • Ejemplo Tenemos la ecuación f x x. Por la
    aplicación de la
  • REGLA I tenemos
  • ?,x ? x ? ? f ? ? ?
  • Pero como las variables tienen tipos únicos en el
    mismo contexto, entonces tenemos que ? ?. El
    menor contexto, que sería el contexto principal,
    que cumpla lo anterior es ? ?. El tipo
    principal sería ? ? ?, aunque podría haber otros
    como por ejemplo ? ? ?.

14
INFERENCIA DE TIPOSVARIOS ARGUMENTOS
  • Para una expresión E y una función en ?C f
    ?x.(?y.E) que sea tipificable, aplicando la REGLA
    I existirá un contexto y dos tipos de forma que
  • ?,x ? ?y.E ? ? f ? ? ?
  • Aplicando el apartado (c) del lema de generación,
    existirán otros dos tipos ? y ? de forma que
  • ?,x ?,y ? E ? ? ? ? ?

REGLA I Asignamos tipos a los argumentos y al
resultado de la función de forma que para cierto
contexto tendremos ?,x ?,y ? E ?
? f ? ? ? ? ?
15
INFERENCIA DE TIPOSVARIOS ARGUMENTOS
  • Ejemplo Tenemos la ecuación f x y y x.
  • Asignando la REGLA I tenemos
  • ?,x ?,y ? y x ? ? f ? ?
    ? ? ?
  • Aplicando el apartado (b) del lema de generación
    tenemos que
  • ?,x ?,y ? y ? ? ? ?,x ?,y
    ? x ?
  • Si aplicamos la unicidad de tipos para variables
    debe tenerse ? ? y ? ? ? ?. Para
    obtener un par principal, podríamos tomar como
    contexto el vacío porque no hay más variables. La
    derivación se obtendría con el siguiente par
    principal
  • f ? ? (? ? ?)? ?

16
INFERENCIA DE TIPOSVARIOS ARGUMENTOS
  • Ejercicio 17.30 Infiere el tipo de la ecuación f
    x y x y.
  • Asignando la REGLA I tenemos
  • ?,x ?,y ? x y ? ? f ? ?
    ? ? ?
  • Aplicando el apartado (b) del lema de generación
    tenemos que
  • ?,x ?,y ? x ? ? ? ?,x ?,y
    ? y ?
  • Si aplicamos la unicidad de tipos para variables
    debe tenerse ? ? y ? ? ? ?. Para
    obtener un par principal, podríamos tomar como
    contexto el vacío porque no hay más variables. La
    derivación se obtendría con el siguiente par
    principal
  • f (? ? ?)? ? ? ?

17
INFERENCIA DE TIPOSVARIOS ARGUMENTOS
  • A través del ejemplo anterior, obtenemos la
    siguiente regla
  • Si E es una variable es necesario que aparezca en
    el contexto
  • Esta regla es un caso particular interesante, y
    junto a la REGLA I y a la REGLA II son
    suficientes para inferir el tipo en muchos casos.

REGLA II En el sistema ?-cálculo à la Curry, se
cumple la propiedad ?,f ? f E ? ? ?.?,f
? E ? ? ? ? ?
REGLA II En el sistema ?-cálculo à la Curry, se
cumple la propiedad ?,x ?,f ? f x ? ?
? ? ? ?
18
INFERENCIA DE TIPOSVARIOS ARGUMENTOS
  • Ejemplo Vamos a inferir el tipo principal del
    operador de ecuación (.) f g x f(g x), que nos
    da la composición de dos funciones. Asignando
    tipos a los argumentos y utilizando el resultado
    que nos da la REGLA I, tenemos
  • ?,f ?,g ?,x ? f(g x) ? ? f
    ? ? ? ? ? ? ?
  • Aplicamos ahora la REGLA II, y para cierto tipo ?
    tendremos
  • ?,f ?,g ?,x ? g x ? ? ? ?
    ?
  • Y aplicando ahora la REGLA II, tenemos ? ? ?
    ?. Como no aparecen más variables, se puede tomar
    ? ?, y tendríamos como un par principal
  • (.) (? ? ?)? (? ? ?)? ? ? ?

19
INFERENCIA DE TIPOSVARIOS ARGUMENTOS
  • Ejemplo Consideremos la ecuación f x y y(y
    x). Asignando la REGLA I, y teniendo en cuenta
    que sólo hay dos variables, podremos coger como
    contexto el vacío, y tendremos
  • x ?,y ? y(y x) ? f ? ? ? ?
    ?
  • Si aplicamos ahora la REGLA II, tendremos un tipo
    ? tal que
  • x ?,y ? y x ? ? ? ? ?
  • Y aplicando ahora la REGLA II, tendremos ? ? ?
    ?, que junto a ? ? ? ? nos da que todas
    las variables de tipo sean iguales, exceptuando
    ?, y tendremos el par
  • f ? ? (? ? ?)? ?

20
INFERENCIA DE TIPOS (VAR. PREDEFINIDAS)
El proceso de compilación recoge toda la
información necesaria para el proceso de
inferencia de todas las ecuaciones del programa.
Si se tiene una variable no definida y un
contexto vacío, se produce el error. Ej sea la
función f x h x
21
INFERENCIA DE TIPOS (VAR. PREDEFINIDAS)
  • Dos ejemplos de inferencia
  • f x x x
  • dos f f . f

1
2
3
4
5
1
3
2
4
5
22
INFERENCIA DE TIPOS EN PRESENCIA DE RECURSIÓN
  • Uso del combinador Y (puntos fijos)
  • Sabemos que el tipo de Y es Y (T ?
    T) ? T
  • Supongamos la siguiente ecuación en ?-cálculo
  • f Y F F ?ux. u x
  • f T y F T?T
  • F ?ux. u x.
  • Regla I
  • u a, x ß u x ? F a ? ß ? ?
  • Regla II
  • a ß ? ? sustituyendo a en F nos
    queda
  • F (ß ? ?) ? ß ? ?
  • f ß ? ?

23
INFERENCIA DE TIPOS EN PRESENCIA DE RECURSIÓN
  • Ejemplo Encontrar el tipo más general de la
    ecuación
  • m x m (m x)
  • a) m Y F
  • F m x m (m x)
  • Regla I
  • m a, x ß m (m x) ? F a ? ß ?
    ?
  • Regla II
  • m a, x ß m x d a d ? ?
  • Regla II
  • a ß ? d
  • Igualdad de tipos
  • d ? ? ß ? d y por lo tanto ? ß d
  • F (d ? d) ? d ? d m d ? d

sabemos que F T ? T y m T
24
INFERENCIA DE TIPOS EN PRESENCIA DE RECURSIÓN
  • Ejemplo Encontrar el tipo más general de la
    ecuación
  • m x m (m x)
  • b) m x m (m x)
  • Regla I
  • x ß m (m x) ? m ß ? ?
  • Regla II
  • x ß m x d x ß m d ? ?
  • Regla II
  • x ß m ß ? d x ß m d ? ?
  • Podemos suponer que la función aparece como una
    variable en el contexto. Suponiendo esta
    propiedad si podemos aplicar la unicidad de tipos
    ß?d d??
  • ? ß d y por tanto m d ? d

25
INFERENCIA DE TIPOS EN PRESENCIA DE PATRONES
  • f (y ys) E
  • Aplicamos la Regla I, suponiendo que yys es
    una variable
  • ?, () y ys a E d ? f a? d
  • Como las variables y, ys son libres, deben
    aparecer en el contexto
  • ?, y ß, ys ?, () y ys a E d ?
    f a? d
  • ?, y ß, ys ? () y ys a
  • ?, y ß, ys ?, () y ys a () ß ?
    ? ? a
  • Como sabemos que () a ? a ? a,
    podemos
  • concluir que ? ß a
  • ?, y ß, ys ß E d ? f ß
    ? d
  • Aplicaremos la regla I con la diferencia de que
    debemos asignar tipos a las variables de los
    patrones.

26
INFERENCIA DE TIPOS EN PRESENCIA DE PATRONES
  • Ejemplo
  • data A a Vacio N (A a) a (A a)
  • izdo (N i x d) i
  • Aplico la Regla I
  • i A a, x a, d A a i ß izdo
    Aa ? ß
  • Por la unicidad de tipos A a ß
  • izdo Aa ? Aa

27
INFERENCIA DE TIPOS EN PRESENCIA DE PATRONES
  • Ejemplo
  • foldr f z z
  • foldr f z (xxs) f x (foldr f z xs)
  • ? foldr f z (xxs) f x (foldr f z xs)
  • Aplicamos la Regla I
  • f a, z ß, x ?, xs ? f x (foldr
    f z xs) d
  • ? foldr f z xs d
  • el tipo de f es a ? ? d ? d
  • foldr (? ? d ? d) ? ß ? ? ? d
  • ? foldr f z z
  • foldr t ? ? ? ? ? ?
  • Unificamos con la solución de la ecuación
    anterior ß ? d y ? ?,
  • foldr (? ? d ? d) ? d ? ? ? d

28
REGLAS ELEMENTALES PARA INFERENCIAS DE TIPOS
  • Regla de aplicación
  • Regla de igualdad de tipos

f x t (a) Regla de aplicación ? ( x
?) ( f ? ? t)
e t e s (i) Igualdad de tipos t s
29
REGLAS ELEMENTALES PARA INFERENCIA DE TIPOS
  • Ejemplo
  • omega y ? f ? f (f y)
  • omega y f f (f y)
  • Asignamos tipos diferentes a los argumentos y al
    cuerpo
  • y a, f ß, f (f y) ? omega a ?
    ß ? ?
  • f (f y) ?
  • (a) Regla de aplicación
  • d ( fy d ) ( f d ? ?)
  • ( f ß) ( f d ? ?)
  • (i) Igualdad de tipos
  • ß (d ? ?)
  • f y d
  • (a) Regla de aplicación
  • a ( y a ) ( f a ? d)
  • ( f d ? ?) ( f a ? d)
  • (i) Igualdad de tipos
  • (d ? ?) (a ? d)
  • ( d ? ?) (a ? d)
  • (i) Igualdad de tipos
  • (d ?) (a d)
  • omega ? ? (? ? ?) ? ?

30
REGLAS ELEMENTALES PARA INFERENCIA DE TIPOS
  • Ejemplo
  • cosa f x ?g ? g f (f x g)
  • cosa f x g g f (f x g)
  • Asignamos tipos a los argumentos y al cuerpo de
    la función
  • f a, x ß, g ?, g f (f x g) d
    cosa a ? ß ? ? ? d
  • g f (f x g) d
  • (a) Regla de aplicación
  • t ( f x g t ) ( g f t ? d)
  • f x g t
  • (a) Regla de aplicación
  • ? (g ? ) ( f x ? ? t )
  • f x ? ? t
  • (a) Regla de aplicación
  • ß (x ß ) ( f ß ? (? ? t ))
  • Observemos que a (ß ? (? ? t )) y que ? (a
    ? (t ? d)), el tipo de cosa no es correcto.

( f a) ( f ß ? (? ? t )) (i)
Igualdad de tipos a (ß ? (? ? t )) g f t
? d (a) Regla de aplicación a (f a )
( g a ? (t ? d) ) (g ?) ( g a
? (t ? d) ) (i) Igualdad de tipos ? (a
? (t ? d))
31
BIBLIOGRAFÍA
  • RAZONANDO CON HASKELL Un curso sobre
    programación funcional - Blas C. Ruiz Jimenez,
    Francisco Gutiérrez López, Pablo Guerrero García,
    José E. Gallardo Ruíz - Universidad de Málaga -
    2004
  • LAMBDA CALCULI WITH TYPES - Henk P. Barendregt -
    Catholic University Nijmegen - 1991
Write a Comment
User Comments (0)
About PowerShow.com