Escolar Documentos
Profissional Documentos
Cultura Documentos
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
f. x. x y xyz f g. x (x y) z
f. ( x. x y)
f . g. x
Em sua forma mais pura, o -clculo no tem funes embutidas, como +, *, - e /. Algumas funes foram embutidas para auxiliar:
-Clculo -abstraes
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
(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
Exemplo:
x. + (( y. + y z) 7 ) x
livre
-Clculo Combinadores
Uma -expresso que no apresenta variveis livres chamada fechada ou combinador. Alguns combinadores desempenham um papel especial no estudo do -clculo.
-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:
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:
-Clculo -converso
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)
-Clculo -converso
Exemplos:
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
-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:
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.
-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.
-Clculo Converses
-Clculo Exemplos
1.
2.
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.
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.
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.
Exerccios
1. 2. 3. 4. 5.
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: