Você está na página 1de 31

Guilherme Amaral Avelino gaa@ufpi.edu.

br

LAMBDA-CLCULO
Tpicos em Linguagens de Programao

-Clculo - Introduo

Alonzo Church

Professor em Princeton, EUA (19291967) e UCLA (19671990); Inventou um sistema formal, chamado -calculus (Lambda Clculo) , e definiu a noo de funo computvel utilizando este sistema.

Pode ser chamado a menor linguagem de programao universal do mundo. Linguagens de programao funcionais, como Lisp, Miranda, ML, Haskell so baseadas no Lambda Clculo.
Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo - Sintaxe

Uma expresso lambda deve ter a forma: <-exp> ::= <constante> tomo | <variavel> tomo | <-exp> <-exp> Aplicao/Combinao | <variavel> . <-exp> Abstrao/Funo Os parnteses podem ser utilizados nas expresses para prevenir ambiguidades
Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo - Sintaxe

Exemplos: x 3

(x. x) y (x. f x) xy (x. x) (x. x) (x. x y) z (x y. x) t f (x y z. z x y) a b (x y. x) (f g. f g) (x. x) (x. x) z (x y. x y) y (x y. x y) (x. x) (x. x) (x y. x y) ((x. x) (x. X)
Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo - Sintaxe

A expresso Lambda se estende para a direita

f. x. x y xyz f g. x (x y) z

f. ( x. x y)

A aplicao associativa esquerda

Mltiplos lambdas podem ser omitidos

f . g. x

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Funes Pr -definidas

Em sua forma mais pura, o -clculo no tem funes embutidas, como +, *, - e /. Algumas funes foram embutidas para auxiliar:

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo -abstraes

Funes no embutidas na linguagem, construdas anonimamente atravs do construtor . Ex:


x. + x 1 Elementos:

- construtor x parmetro formal . - ponto + x 1 corpo da funo


Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Aplicao de Funo e Currificao

No -clculo a aplicao de uma funo f a um parmetro x denotada por justaposio, ou seja: fx E se a funo tiver mais de um argumento?

Exemplo: + 3 4

Interpretada como (+ 3) 4

O -clculo permite que o resultado de uma funo seja outra funo. Propriedade descoberta Schnnkel e foi amplamente utilizada por Curry (currificao).

"Uma funo com n argumentos pode ser interpretada como n funes de apenas 1(um) argumento"
Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Variveis Livres e Ligadas


Seja a -expresso:

(x. + x y) 4 Aplicao de uma funo sobre a varivel x, com corpo (+ x y), a uma outra -expresso, que no caso a constante 4.
Varivel x pode ser pensada como um local onde o argumento 4 deve ser colocado. O mesmo no pode ser feito com a varivel y. Variveis x e y tem status diferente. A varivel x est ligada enquanto que y livre na -expresso.

Uma ocorrncia de uma varivel ligada se existir uma -abstrao qual esta varivel esteja ligada. Em caso contrrio, a ocorrncia livre.
Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Variveis Livres e Ligadas

Exemplo:
x. + (( y. + y z) 7 ) x
livre

Uma varivel pode ocorrer livre em um ponto da -abstrao e ligado em outro + x (( x. + x 1) 4 )

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Variveis Livres e Ligadas

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Combinadores

Uma -expresso que no apresenta variveis livres chamada fechada ou combinador. Alguns combinadores desempenham um papel especial no estudo do -clculo.

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Exerccio
1. Identique nas expresses abaixo as ocorrncias livres e as ligadas das variveis:
a. b. c. d. e. f. g. h. i. x.xx (x. y.x)x (x. y.xx)xa (x(x.y))x x. + ((y. + y z) 7) x + x ((x. + x 1) 4) x.(x (y.(x,x y) x)) (c) a.(b.a b.(a,a b)) (free. bound bound.(free. free bound))
Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Exerccio
2. Quais das seguintes expresses so combinadores:

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Regras de Converses de Expresses

O processo de avaliao utilizado no -clculo consiste na transformao de uma expresso em outra, normalmente mais simples. Este processo continuado at atingir uma expresso que no pode mais ser transformada, ou entrar em loop innito. Tcnicas de transformao:

-converso, -converso e -converso. Papel similar a tcnicas algbricas em equaes matemticas.


Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo -converso

Considere as duas abstraes lambda:


( x. + x 1) e ( y. + y 1)

Claramente as duas abstraes acima so equivalentes e uma -converso nos permite mudar o nome do parmetro formal de uma abstrao lambda. Ento: ( x. + x 1) ( y. + y 1)

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo -converso

Exemplos:

Pode-se deduzir as seguintes relaes:

Uma relao matemtica que reexiva, simtrica e transitiva uma relao de equivalncia". Assim, a -reduo determina uma relao de equivalncia entre duas -expresses, o que nos permite armar que estas duas -expresses representam a mesma entidade.
Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo -converso

A aplicao de um argumento uma -abstrao resulta em uma instncia do corpo desta abstrao, na qual as ocorrncias livres do parmetro formal so trocadas por cpias do argumento:
+41 ( x. + x 1) 4
apenas ocorrncias livres do varivel no corpo devem ser substitudas. A ocorrncia livre de um parmetro formal (varivel) no corpo de uma -abstrao
corresponde a uma ocorrncia ligada na -abstrao.

Obs:
1. 2.

Esta operao denominada -converso (-reduo especificamente neste caso). Funes tambm podem ser passadas como argumento:
( f. f 3) ( x. + x 1) ( x. + x 1) 3 +31

= 4
Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo -converso
Exemplos: ( x. ( x. + (- x 1)) x 3) 9 ( x. + (- x 1)) 9 3 + (- 9 1) 3 = +83 = 11

( x. y. + x (( x.- x 3) y)) 5 6 = 8

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo -converso

Considere as duas expresses: ( x. + 1 x) e (+ 1) As duas se comportam igualmente quando aplicadas ao mesmo argumento. Assim elas tambm podem ser convertidas uma na outra: ( x. + 1 x) (+ 1) Formalmente: F, desde que x no ocorra livre em F ( x. F x) Exemplos:

x. + x x No - redutvel a (+ x), pois x aparece livre em (+ x). x. y. z. x y z x. y. z. x y z x. y. x y x. x

Reflete o princpio da extensionalidade = duas funes so iguais se elas sempre apresentam os mesmos resultados para as mesmas entradas De grande importncia computacional pois fornece a possibilidade da escolha do algoritmo de melhor desempenho, dentre os diversos possveis para implementar uma funo.
Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Convertibilidade

Se duas expresses lambdas distintas se reduzem a uma terceira, ento elas so reduzveis entre s.

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Captura

Deve ser tomado cuidado na escolha dos nomes dos parmetros, uma vez que mais de um deles pode ter o mesmo nome. Exemplo: Exemplo 2:
Errado, pois y externo que era livre tornou-se conectado

Problema da captura de variveis, o que pode provocar ambigidade na avaliao mecnica de expresses lambdas. Soluo: efetuar -converso para evitar que variveis distintas, mas homnimas, sejam confundidas.

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Converses

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Exemplos
1.

2.

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Ordem de Reduo

Um redex (reduction expression) uma l-expresso na qual todos os parmetros necessrios para que uma operao possa ser feita esto prontos para serem utilizados. Se uma expresso no contiver qualquer redex a sua avaliao est completa e neste caso a expresso est na forma normal. Problema:

Uma expresso pode ter mais de um redex e, neste caso, existem mais de um caminho a ser seguidos para sua avaliao.

Pela propriedade de Church-Rosser, afirmado que independente da ordem, qualquer seqncia utilizada leva ao mesmo resultado, se ele existir.

Obs1: nem toda -expresso tem uma forma normal. Ex:


Obs2: algumas sequncias de reduo pode atingir a forma normal, enquanto outras no. Ex:

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Ordem de Reduo

Teorema da normalizao (2 Teorema de Church-Rosser) Se E1 E2 e E2 est na forma normal, ento existe uma ordem normal de sequencias de reduo de E1 para E2 A ordem normal de reduo especfica que o redex leftermost-outermost deve ser escolhido primeiramente.

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Ordem de Reduo

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Ordem de Reduo

A escolha da ordem normal de reduo garante encontrar a forma normal, se ela existir. Entretanto isto no quer dizer que este seja o melhor mtodo a ser usado.

(x.xx)(z.z) (z.z) (z.z) (z.z) Ordem Normal Normalmente pior Entretanto, representa um mtodo mecnico que pode ser implementado computacionalmente.

Guilherme Amaral Avelino gaa@ufpi.edu.br

Exerccios
1. 2. 3. 4. 5.

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Nova Notao


A aplicao das regras de converso nem sempre to simples e direta como vimos at agora. Uma outra notao comumente utilizada na converso de -expresses. A notao E[M/x] signica que, na expresso E, todas as ocorrncias livres de x sero substitudas por M. Exemplos:

x[/x] = x[/y] = (abx)(xy)[/x] = (axxb)(bx)(xx)[/x] = ( a.xy)( x.xy)[S/x] =

Guilherme Amaral Avelino gaa@ufpi.edu.br

-Clculo Nova Notao

Guilherme Amaral Avelino gaa@ufpi.edu.br

Você também pode gostar