CalculoLambda
Voltar
ClculoLambda
Histrico
LinguagensFuncionais
UtilidadedoClculoLambdaemProgramaoFuncional
FundamentosTericos
ASintaxedoClculoLambda
ImplementaodeumProgramaLambda
ASemnticaOperacionaldoClculoLambda
OrdemdeReduo
FunesRecursivas
1.
Histrico:
MquinasdeTuring(AlanTuring,1936)
ClculoLambda(AlonzoChurch,1936)
LinguagensFuncionais:
Interessantespelasuasimplicidadesinttica
Facilidadededescreverproblemasrecursivos.
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
1/19
11/11/2015
CalculoLambda
Facilidadededescreverproblemasrecursivos.
Maioria das implementaes so poucos aceitas devido
ineficincia em comparao com linguagens de programao
''tradicionais".
Novas implementaes de interpretadores/compiladores e
novaslinguagensmaismodernastemressurgido.
Exemplos:
topo
UtilidadedoClculoLambdaemProgramaoFuncional:
topo
2.
FundamentosTericos
Oclculolambdaumacoleodediversossistemasformais
baseados em uma notao para funes inventada por Alonzo
Church em 1936 com o intuito de capturar os aspectos mais
bsicos da maneira pela qual operadores ou funes podem ser
combinadosparaformaroutrosoperadores.
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
Uma implementao do clculo lambda necessita somente2/19
CalculoLambda
Tratasedeumalinguagemexpressiva,aqualsuficientemente
poderosa para expressar todos os programas funcionais e, por
conseguinte, todas as funes computveis. Isto significa que, se
uma boa implementao do clculo lambda disponvel, podese
implementar qualquer linguagem funcional atravs da
implementaodeumcompiladordestaparaoclculolambda.
2.1.ASintaxedoClculoLambda
umconjuntodevariveis:vo,v1,v2,....vn....
abstratorl(lambda)
agrupadores(,)
Definico(Equivalnciadeduascadeias)
Duascadeiasxeysoequivalenteseseescreve(x,y)x
=y
Definico(Comprimentodeumacadeia)
umafuno:
ln:S*Z+
em que o nmero inteiro exprime o nmero de elementos da
cadeia.
Definico(TermoLambda)
11/11/2015
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
11/11/2015
CalculoLambda
vitermolambda
dadoM,(lviM)termolambda
dadosdoistermoslambdaM,Nento(MN)termo
lambda
enadamaistermolambda.
Exemplos:
Verificarquaisdasexpressessotermoslambda.
vo(vov1)(vo)
(lvo(vov1))(lv1(vo(lv1(vov1))))(lvo(vov1)
Estanotaoprecisa,masbastantepesada.Algumasvezes,
convenienteintroduzirmaisalgumasconvenescomafinalidade
desimplificaranotao.Soquatroasprincipaisconvenes:
1Precednciaesquerda.
Assim,((MN)L)podeserescritaMNL
2Sucessodeabstratores:
(lx(ly(lz........)))seescrevelxyz...
3Separador:usaseumpontoparadesignarofinaldeumalista
deargumentoslambda
Assimlx.xly.y=(lx(x(ly.y)))
4Supesequeletrasdiferentesdesignamentidadesdiferentes.
Assimxyemlx.y
ExemploConcreto
Umexemplosimplesdeumaexpressoemclculolambda:
(+45)
topo
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
4/19
11/11/2015
CalculoLambda
2.2ImplementaodeumProgramaLambda
lx.(x+1)
Oexemploacimapodeserlido:''Aquela()funode(x)aqual
(.) adiciona x a 1. Algumas vezes costumase usar operadores
sempreprefixados,enestecasoseescreveria(+x1).Paracalcular
ovalordafunoparax=5seescreve:
lx.(x+1).5
inc(x)
intx
(return(x+1))
FunesEmbutidaseConstantes
Exemplos:
54>1
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
5/19
11/11/2015
CalculoLambda
54>1
ANDTRUEFALSE>FALSE
HEAD(CONSab)>a
TAIL(CONSab)>b
Almdessasfunes,defineseaconstanteNIL,ovalornulo.
Aescolhaexatadefunesembutidasarbitrria.
AbstraesLambda
Exemplo:
(lx.+x1)
Aexpresso(+3)denotaa"funo+aplicadaaoargumento3",
cujoresultadouma''funoaplicadaaovalor4".
Como em todas as linguagens funcionais, o clculo lambda
permitequeumafunoretorneumafunocomoresultado.
Este dispositivo nos permite imaginar todas as funes como
possuindosomenteumargumento.
Esta notao foi introduzida por Schonfinkel em 1924 e
utilizada amplamente nos trabalhos de Curry, de onde provm a6/19
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
11/11/2015
CalculoLambda
Todasasaplicaesdefunesnoclculolambdasoescritas
emnotaoprefixada.Assimafuno+precedeosargumentos4
e5.Umexemploumpoucomaiscomplexo:
(+(*56)(*83))
Dopontodevistadeimplementao,umprogramafuncional
podeservistocomoumaexpresso,que"executada''atravsda
sua avaliao. A avaliao ocorre atravs da seleo repetida de
uma expresso redutvel (redex) (abreviao do termo em ingls
reducedexpression'edesuareduo.
Expresso redutvel aquela que pode ser avaliada
imediatamente.Noexemploanteriorexistemdoisredexes:
(*56)e(*83)
Aexpressointeira(+(*56)(*83))noumredex,umavez
que a funo + necessita ser aplicada a dois nmeros para poder
serredutvel.Atravsdaescolhaarbitrriadoprimeiroredexpara
reduoescrevese:
(+(*56)(*83))>(+30(*83))
onde>lese"reduzpara''.
.Agorahsomenteumredex(*83),doqualresulta:(+3024)
.Estareduogeraumnovoredex,quereduz:(+3024)>54
topo
2.3.ASemnticaOperacionaldoClculoLambda
Atagorafoidescritaasintaxedoclculol.Parachamlode
"clculo'', devemos, porm dizer como "calcular'' com ele.
Basicamente isto realizado atravs de trs regras de converso,
quedescrevemcomoconverterumaexpressolemoutra.
(bound/free)
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
7/19
11/11/2015
CalculoLambda
(bound/free)
Sejaaexpressol:
(lx.+xy)4
Paraavaliaraexpressonecessrio:
saberovalor"global''dey.
nonecessriosaberovalorglobaldex,poisoparmetro
formaldafuno.
Vseque:xeypossuemumstatusbastantediferente.
A razo que x ocorre atado pelo lx, somente um encaixe
dentrodoqualoargumento4colocadoquandoaabstraolfor
aplicadaaoargumento.Poroutrolado,ynoatadopornenhume
assim ocorre livre na expresso. A ocorrncia de uma varivel
atada se h uma expressol envolvente que a amarra, seno
livre. No exemplo a seguir, x e y ocorrem atados, z, porm,
ocorrelivre:
lx.+((ly.+yz)7)x
Observe que os termos atado e livre se referem a ocorrncias
especficasdavarivelemumaexpresso.
Resumindoanomenclatura:
Umaaplicaolsimplesmenteaaplicaodeumaexpressol
sobre outra. A primeira dessas duas expressesl chamada de
operador,asegundadeoperando.Notequequalquerexpressol
pode ser utilizada tanto como operador como operando. Uma
abstraol formada com o smbolo especial seguido por uma
varivel, seguida por um ponto, seguido por uma expresso
arbitrria. . O propsito da operao de abstrao o de formar
umaexpressounriaapartirdeumaexpressoldada.Avarivel
que ocorre prxima ao inicial do nome ao argumento. Funes
commaisdeumargumentosoformadasporabstraesrepetidas.
2.3.2.ConversoAlfa
Considere:
(lx.+x1)e(ly.+y1)
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
Evidentementeelasdevemserequivalentes.Aconversoao8/19
11/11/2015
CalculoLambda
Evidentementeelasdevemserequivalentes.Aconversoao
nome dado operao de mudana de nome (consistente) de um
parmetroformal.
Notao:
(lx.+x1)a(ly.+y1)
acongruncia:duasexpresseslMeNsoacongruentes(ou
aequivalentes),denotadoporMNseouM=NouM>N,ouN
obtido de M atravs da reposio de uma subexpresso S de M
porumaexpressolTtalqueS>T,ouexistealgumaexpressol
RtalqueM>ReR>N.
Nomenclatura:
Nomesdeparmetrosformaispodemnosernicos:
(x.(x.+(x1))x3)9(x.+(x1))93
+(91)3
11
(lx.y.+x((x.x3)y))56
(ly.+5((x.x3)y))6
+5((x.x3)6)
+5(63)
8
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
9/19
11/11/2015
CalculoLambda
Nessecasonohocorrnciasdoparmetroformal(x),pelo
qualoargumento5poderiasersubstitudo.Assimoargumento
descartado sem uso. O corpo de uma abstrao poder ser
constitudoporoutraabstrao:
(lx.(ly.yx))45
(ly.y4)5
54
1
2.3.3.ConversoBeta
11/11/2015
CalculoLambda
Aquixocorrelivre(aprimeiravez)eatada(asegunda).Cada
ocorrnciaindividualdeumavariveldeveserouatadaoulivre.
Asdefiniesformaisdelivreaatadosodadasabaixo:
Definiodeocorrelivre:
xocorrelivreemx(masnoemoutravarivelouconstante
qualquer)
xocorrelivreem(EF)sexocorrelivreemEouxocorrelivre
emF
x ocorre livre em y.E x se x, y so variveis diferentes e x
ocorrelivreemE
Nota: nenhuma varivel ocorre atada em uma expresso
consistindoeumanicaconstante.
Definiodeocorreatada:
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
11/19
11/11/2015
CalculoLambda
Definiodeocorreatada:
x ocorre atada em (E F) se x ocorre atada em E ou x ocorre
atadaemF
xocorreatadaemy.E(xey)soamesmavarivelexocorre
livreemEou
xocorreatadaemE
2.3.4.ConversoEta
AcondiodequeFdevedenotarumafunoprevineoutras
converses errneas envolvendo constantes embutidas (pr
definidas).Exemplo:TRUEnoeconversvelpara(lx.TRUEx)
Quandoaconversozutilizadadaesquerdaparaadireita,
chamadadereduol
2.3.5Resumo
Astrsregrasdeconversoquepossibilitamainterconverso
deexpressesenvolvendoabstraesl:
1. Mudana de nome: a conversoa permite que se troque o
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
nomedeparmetrosformaisdeumaabstrao,enquantoistofor12/19
11/11/2015
CalculoLambda
nomedeparmetrosformaisdeumaabstrao,enquantoistofor
feitodeformaconsistente.
2. Aplicao de funes: A reduob permite a aplicao de
abstraes a um argumento atravs de gerao de uma nova
instncia do corpo da abstrao, substituindo o argumento por
ocorrnciaslivresdoparmetroformal.Cuidadoespecialdeveser
tomadoquandooargumentocontmvariveislivres.
3.Eliminaodeabstraeslredundantes:Areduozpode
s vezes eliminar uma abstraol . Dentro deste contexto,
podemos considerar as funes embutidas (prdefinidas) como
maisumaformadeconverso. Estaformade conversorecebe o
nomedeconversoz.
2.3.6.ProvasdeInterconvertibilidade
ondeopassofinalaregradereduoparaIF.
Ummtodoalternativodeseprovarainterconvertibilidadede
duasexpresses,muitomaisconveniente,odeseaplicarasduas
expressesaumargumentow.
topo
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
13/19
11/11/2015
CalculoLambda
2.4.OrdemdeReduo
Se uma expresso no contm mais redexes, ento a
avaliaoestcompleta.Umaexpressonestaformaditaestarna
formanormal.
Assim,aavaliaodeumaexpressoconsistenareduo
sucessivaderedexes,atqueaexpressoestejanaformanormal.
Definio(formanormal):umaexpressolditaestar
na forma normal, se nenhum redexb, isto , nenhuma sub
expressodaforma(lx.P)Qocorrenela.
Umaexpressopodecontermaisdoqueumredex,assim
areduopodeacontecerporcaminhosdiferentes.
Exemplo:
(+(*34)(*78))
pode ser reduzido forma normal pelas seguintes seqncias:
(+(*34)(*78))
>(+12(*78))
>(+1256)
>68
ou
(+(*34)(*78))
>(+(*34)56)
>(1256)
>68
Nemtodaexpressopossuiumaformanormal,
considere:
(DD)
onde D (lx.x x). A avaliao desta expresso jamais
terminaria,umavezque(DD)reduzpara(DD):
(lx.xx)(lx.xx)>(lx.xx)(lx.xx)
>(lx.xx)(lx.xx)
Porconseguinte,algumasseqnciasdereduopodero14/19
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
11/11/2015
CalculoLambda
Porconseguinte,algumasseqnciasdereduopodero
atingiraformanormal,outrasno.Considere:
(lx.3)(DD)
Sensprimeiroreduzirmosaaplicaode(lx.3)a(DD)
(sem avaliar (DD)), obteremos o resultado 3 porm se primeiro
reduzimos a aplicao de D sobre D, ns simplesmente obtemos
(DD)novamente.
Senscontinuamosinsistindoemescolheraaplicaode
D sobre D, a avaliao vai continuar indefinidamente, no
terminando.
Estasituaocorrespondedeumprogramaimperativo
que entra em um lao infinito. Dizemos que a avaliao ou
execuonotermina.
Paracontornarestasituao,existeaordemnormalde
reduo, que garante que uma forma normal, caso exista, ser
encontrada.
2.4.1.OrdemNormaldeReduo
TeoremadeChurchRosser1(TCR1):
SeE1<>E2,entoexisteumaexpressoE,talque
E1>EeE2>E
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
15/19
11/11/2015
CalculoLambda
Prova:
Suponha que E1 <> E e E2 <> E , onde E1 e E2 esto na
formanormal.
EntoE1<>E2e,peloTCR1,devehaverumaexpressoFtal
queE1>FeE2>F.
ComotantoE1comoE2nopossuemredexes,logoE1=F=E2
Informalmente, o teorema TCR1 diz que todas as
seqnciasdereduoqueterminam,haverodeatingiromesmo
resultado.
OsegundoteoremadeChurchRosser,TCR2,dizrespeitoauma
ordemparticulardereduo,chamadaordemnormaldereduo.
TeoremadeChurchRosser2(TCR2):
Conseqncias:
Existenomnimoumresultadopossvele
a ordem normal de reduo encontrar este resultado,
casoeleexista.
Observequenenhumaseqnciadereduopoderlevar
aumresultadoincorreto,omximoquepoderacontecerano
terminao.AOrdemNormaldeReduoespecificaqueoredex
maisesquerdamaisexternodeverserreduzidoprimeiro.
Noexemploanterior(lx.3)(DD),escolheramosoredex
lxprimeiro,noo(DD).
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
16/19
11/11/2015
CalculoLambda
lxprimeiro,noo(DD).
Esta regra encorpa a intuio de que argumentos para
funespodemserdescartados,deformaquedeveramosaplicara
funo (lx.3) primeiro, ao invs de primeiro avaliarmos o
argumento(DD).
2.4.2.Ordensdereduotimas
Enquantoaordemnormaldereduogarantequeouuma
soluo seja encontrada ou o notrmino ocorra, ela no garante
queistoocorranonmeromnimodepassosdereduo,oque
umfatorelevantenautilizaodoclculolparaaimplementao
delinguagensdeprogramaointerpretadas.
No caso da implementao da resoluo atravs de
reduo de grafos que estudaremos mais tarde porm,
aparentemente a ordem normal de reduo "geralmente tima"
emquestodetempodeexecuo.
Analisarumaexpressoparaencontraroredextimoparaser
reduzido aparentemente muito mais trabalhoso e gasta mais
tempo do que arriscar uma reduo com mais passos seguindo
"cegamente"aordemnormal.
Algunsautorescomo(Levy,J.J.OptimalReductionsin
theLambdaCalculusinEssaysonCombinatoryLogic,Academic
Press, 1980) se ocuparam de algoritmos para encontrar ordens
timas ou quasetimas de reduo que preservassem as
qualidades da ordem normal de reduo. Isto assunto de um
tpicoavanadoquenocabenestadisciplina.
topo
2.5.FunesRecursivas
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
11/11/2015
CalculoLambda
2.5.1.FunesRecursivaseoY
Considereadefiniodafunofatorialabaixo:
FAC=(ln.IF(=n0)1(*n(FAC(n1))))
Estadefiniobaseiasenacapacidadedesedarumnome
a uma abstrao lambda e de fazer referncia a esta dentro dela
mesma.
Nenhuma construo deste tipo provida pelo clculo
lambda.
O maior problema aqui que funes lambda so
annimas.
Dessa forma elas no podem nomearse e assim no
podemsereferenciarasimesmas.
Para resolver este problema iniciamos com um caso onde
encontramosarecursonasuaformamaispura:
FAC=(ln....FAC...)
AplicandoumaabstraobsobreFAC,usadademodo
inverso,podesetransformarestadefinioem:
FAC=(lfac.(ln.(...fac...)))FAC
Estadefiniopodeserescritadaforma:
FAC=HFAC(2.1)
onde:
H=(lfac.(ln.(...fac...)))
A definio de H trivial. uma abstrao lambda
ordinriaenousarecurso.
Arecursoexpressasomentepeladefinio2.1.
A definio 2.1 pode ser encarada mais como uma equao
matemtica.Porexemplo,pararesolveraequaomatemtica
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
18/19
11/11/2015
CalculoLambda
x22=x
procuraseporvaloresdexquesatisfaam
http://www.inf.ufsc.br/~barreto/PF/CalLambda.htm
19/19