teoria da computação - introdução ao cálculo lambda

36
Aviso Pr´ evio Bibliografia Introdu¸ ao Nota¸ oes e Teoria . . . Redu¸ oes e Igualdade Propriedades agina Pessoal agina de Rosto agina 1 de 100 Retroceder Ecr˜ a Todo Fechar Sair Teoria da Computa¸ ao Introdu¸ ao ao C´ alculo Lambda Sim˜ ao Melo de Sousa

Upload: lykiet

Post on 07-Jan-2017

236 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 1 de 100

Retroceder

Ecra Todo

Fechar

Sair

Teoria da ComputacaoIntroducao ao Calculo Lambda

Simao Melo de Sousa

Page 2: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 2 de 100

Retroceder

Ecra Todo

Fechar

Sair

1. Aviso Previo

• A redaccao deste documento baseou-se fortemente na bibliografia indi-cada. Parece-nos entao obvio que a leitura e a aprendizagem directapelas obras originais e recomendada, e mesmo essencial a compreensaoprofunda das nocoes aqui apresentadas;

• O portugues nao e a lıngua materna do autor e o presente documentoencontra-se em fase de elaboracao pelo que se agradece e ate se incentivaqualquer sugestao ou correccao.

Page 3: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 3 de 100

Retroceder

Ecra Todo

Fechar

Sair

2. Bibliografia

Consultar [1, 2, 3, 4, 5, 6, 7]

Page 4: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 4 de 100

Retroceder

Ecra Todo

Fechar

Sair

3. Introducao

Desenvolvemos no primeiro capıtulo desta disciplina uma primeira argumen-tacao sublinhando a relevancia do calculo λ. Vamos, nesta introducao, relem-brar o papel que o calculo λ tem na informatica (ou mais precisamente naciencia da computacao) e na matematica.

O calculo λ e a matematica

• Crise dos fundamentos: na sua tentativa de recriar os fundamentos damatematica o logico Alonzo Church elaborou uma primeira versao (que,infelizmente, tambem acabou por ser paradoxal) do calculo λ. No en-tanto extensoes do calculo λ original resolveram esta questao. Histori-camente o calculo λ foi um formalismo em que questoes centrais da pre-sente disciplina (formalizacao da nocao de algoritmo, computabilidadede funcoes, decidibilidade de problemas) foram exploradas.

• Matematica construtiva: uma escola importante de matematicos, a es-cola da matematica construtiva (o matematico pioneiro desta escolatem por nome J.L.L. Brower) baseou a sua disciplina na recusa dasdemonstracoes envolvendo o raciocınio por absurdo: uma demonstracaodeve ser uma construcao de uma argumentacao verificavel de que apropriedade e verdade. Como tal, basear uma demonstracao sobre oargumento “e verdade porque nao pode ser de outra forma” (e informal-mente uma traducao do raciocınio por absurdo) e banido. O calculo λtem um papel central nesta matematica: pode servir de fundamento amatematica construtiva.

Page 5: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 5 de 100

Retroceder

Ecra Todo

Fechar

Sair

• Demonstracao por computador e Isomorfismo de Curry-Howard: umavisao alternativa da relacao calculo λ/matematica construtiva e aseguinte. Se uma implementacao do calculo λ e tambem uma imple-mentacao da matematica construtiva entao programar em calculo λ ede uma certa forma “fazer” matematica construtiva. A definicao precisadesta ponte entre matematica construtiva e programacao e designadapor Isomorfismo de Curry-Howard. Assim o calculo λ e uma forte con-tribuicao a area da demonstracao por computador ou genericamente aarea da teoria da Demonstracao.

O calculo λ e a Ciencia da Computacao

• A funcao como cidadao de primeira classe: na teoria dos conjuntos, comoo vimos nos capıtulos anteriores, uma funcao, digamos f , e uma relacaoparticular, logo e vista como o conjunto f de todos os pares (x, y) taisque f(x) = y. Neste contexto e relativamente facil comparar funcoes:basta comparar o conjunto de pares associado (tal igualdade e designadapor igualdade por extensao). O problema e que esta perspectiva nao ede todo satisfatoria para os informaticos (e para muitos matematicostambem):

1. sejam fA e fB as funcoes que implementam um determinado cal-culo mas utilizando algoritmos A e B diferentes (digamos que A eexponencial e B polinomial). Na teoria dos conjuntos fA = fB.

2. o que nos interessa nao e so que y e o resultado de f(x) mas e comoy e obtido/computado de x por f .

Page 6: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 6 de 100

Retroceder

Ecra Todo

Fechar

Sair

O calculo λ foi desenvolvida como uma alternativa a teoria dos conjuntosna qual a nocao de funcao e de calculo tem um papel central.

• Concepcao de linguagens de programacao: ja referimos no primeiro capı-tulo desta disciplina que o calculo λ:

1. esteve na origem do paradigma funcional. Por exemplo nos anos1950, John McCarthy extendeu o calculo λ para construir aprimeira linguagem da famılia LISP. O Peter Landin construiu,nos anos 1960 e tambem como uma extensao do calculo λ, a lin-guagem ISWIM, o antecessor das linguagens funcionais tipificadascomo o OCaml;

2. constituiu e continua a constituir um prototipo ideal para con-cepcao de mecanismos avancados para linguagens de programacao.Referiremos por exemplo as maquinas virtuais, os sistemas de tipos,os analisadores estaticos de programas, o polimorfismo, os tipos de-pendentes, etc...

• Semantica das linguagens de programacao: nos anos 1960 Peter Landindemonstrou que o calculo λ e um formalismo adequado para servirde modelo matematico quando se estudas linguagens de programacao(imperativas). Nesta mesma vertente o Dana Scott e o Strachey con-tribuıram para este relacionamento. Em particular ao desenvolver ateoria dos domınios (nos quais se inserem os CPOs) e ao exibir umarelacao forte entre essa teoria e o calculo λ.

• Teoria da computacao: historicamente, os primeiros resultados da teo-ria da computacao foram desenvolvidos utilizando dois formalismos: as

Page 7: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 7 de 100

Retroceder

Ecra Todo

Fechar

Sair

maquinas de Turing e o calculo λ. Iremos neste capıtulo e nos proximosdesenvolver este ponto.

Page 8: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 8 de 100

Retroceder

Ecra Todo

Fechar

Sair

4. Notacoes e Teoria Basica

Seja V um conjunto numeravel (infinito) de variaveis. Utilizaremos preferen-cialmente as letras x, y, z ou versoes numeradas (como xi ou y5, por exemplo)para designa-las.

Utilizaremos o sımbolo ≡ para designar a igualdade sintactica: a ≡ b se ae a palavra b.

Definicao 4.1 (Termos λ) A classe Λ dos termos λ e o subconjunto domonoide livre gerado a partir do alfabeto V ∪ {′ ′,′ (′,′ )′,′ λ′} definido indu-tivamente por:

Varx ∈ Vx ∈ Λ

AppM ∈ Λ N ∈ Λ

(M N) ∈ ΛAbs

M ∈ Λ(λx.M) ∈ Λ

Quando nao houver riscos de confusao, designaremos por termos os termosλ.

Por convencao notaremos termos como (λx1.(λx2.(· · · (λxn.M)))) porλx1 · · ·xn.M ou ainda por λ~x.M . Da mesma forma, preferiremos a notacaoMN1 . . . Nn ou M ~N a notacao original (· · · (MN1) · · ·Nn).

O termo (MN) representa a aplicacao da funcao representada por M aovalor representado por N . Por seu turno, o termo (λx.M) representa a funcao(aqui anonima) unaria que do parametro x devolve o valor M . De facto, emOCaml (λx.M) escreve-se directamente (function x > M).

Page 9: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 9 de 100

Retroceder

Ecra Todo

Fechar

Sair

4.1. Variaveis

Se analisarmos os termos λx.(xy), λz.(zy) e λy.(yy) vemos que um termodefine um divisao do conjunto das variaveis. Por exemplo, intuitivamenteidentificamos os dois primeiros termos. Chamar a variavel “parametro” x ouz e pouco relevante. O que o e, e a mudanca de nome implicar que todas asocorrencias de x “debaixo” do λ 1 serem tambem alvo da troca. Em termosformais, essa troca e designada por substituicao.

No entanto vemos, com o terceiro exemplo que a operacao de substituicaonao e uma operacao tao simples como parece. Intuitivamente nao identifi-camos λy.(yy) com λx.(xy). O primeiro representa uma funcao que aceita umparametro y e devolve a aplicacao de y a ele proprio. O segundo representauma funcao que aplica o seu parametro x a uma variavel y (que nao estanecessariamente ligada a x).

A distincao esta na “qualidade” das variaveis. Em λx.(xy), a variavel xesta ligada ao λ enquanto y nao. Diz-se neste caso que y e livre.

Essa distincao surge naturalmente nas linguagens de programacao. Umavariavel ligada pode ser um parametro ou uma variavel local duma funcaoou procedimento. Uma variavel livre, no caso duma funcao, pode ser umavariavel global definido fora da funcao considerada.

Dado um termo, e relativamente facil determinar o conjunto das suas var-iaveis livre e o conjunto das suas variaveis ligadas. Consideramos, por exem-plo, as duas funcoes recursivas BV : Λ → ℘(V) e FV : Λ → ℘(V) seguintescalculam respectivamente o conjunto das variaveis ligadas dum termo e o con-junto das variaveis livres.

1Veremos a seguir uma definicao precisa da nocao de “debaixo”.

Page 10: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 10 de 100

Retroceder

Ecra Todo

Fechar

Sair

BV (M) =

∅ se M = xBV (P ) ∪ {x} se M = (λx.P )BV (P ) ∪BV (Q) se M = (PQ)

FV (M) =

{x} se M = xFV (P )− {x} se M = (λx.P )FV (P ) ∪ FV (Q) se M = (PQ)

Designaremos por Λ0 a classe dos termos fechados (tambem designadospor combinadores), isto e a classe dos termos sem variaveis livres: t ∈ Λ0 seFV (t) = ∅.

4.2. Subtermos

Uma nocao importante nas linguagens de termos, na qual se insere o calculo λe a nocao de subtermos. Um subtermo de um termo t e uma palavra contidaem t que tambem e λ-termo. O conjunto dos subtermos de um λ-termo Mpode ser obtido pela funcao Sub : Λ→ ℘(Λ) seguinte:

Sub(M) =

{x} se M = xSub(P ) ∪ {(λx.P )} se M = (λx.P )Sub(P ) ∪ Sub(Q) ∪ {(PQ)} se M = (PQ)

4.3. Contextos

No ambito o estudo do calculo λ vamos precisar de estudar termos que naoestao completamente definidos, isto e, que contem “buracos”. Tais termos sao

Page 11: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 11 de 100

Retroceder

Ecra Todo

Fechar

Sair

qualificados de contextos, no sentido que podemos obter um termo “tradi-cional” preenchendo os buracos por termos λ. Se notarmos esses buracos por[] entao a classe dos contextos e definida da seguinte forma:

Definicao 4.2 (Contextos λ)A classe C[] dos contextos λ e a classe definida indutivamente por:

x ∈ Vx ∈ C[] [] ∈ C[]

C1 ∈ C[] C2 ∈ C[](C1C2) ∈ C[]

C1 ∈ C[](λx.C1) ∈ C[]

Para designar a operacao que consiste em preencher o contexto aberto C[]por um termo t utilizaremos a notacao C[t]. Por exemplo, dado o contextoC , ((λx.[]x)M) e o termo t , (λy.y), o termo C[t] e ((λx.(λy.y)x)M)

Repare que as variaveis livre de t podem ficar ligadas no termo C[t].

4.4. Teoria da Convertibilidade λ

Vamos agora apresentar a teoria da igualdade (ou convertibilidade) de ter-mos λ. Utilizaremos mais uma vez o formalismo das definicoes indutivas paradefinir o que entendemos por igualdade de termos λ. Para esse efeito, uti-lizaremos a notacao M [x := N ] para designar a operacao de substituicao queconsiste em substituir todas as ocorrencias livres de x em M por N . Daremosmais enfase a esta nocao na seccao seguinte.

Definicao 4.3A relacao de igualdade entre dois termos λ, designada por convertibilidade, e

Page 12: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 12 de 100

Retroceder

Ecra Todo

Fechar

Sair

definida indutivamente por

β(λx.M)N = M [x := N ] M = M

M = NN = M

M = N N = LM = L

M = NMZ = NZ

M = NZM = ZN

ξM = N

λx.M = λx.N

A regra (ξ) e, por vezes, chamada regra de extensao fraca e estabelece aigualdade entre funcoes. A regra (β) corresponde a igualdade entre a aplicacaode uma funcao a um parametro e o seu resultado (por exemplo, se aceitamospor enquanto algumas “facilidades sintacticas”, entre o termo (λx.x + 1)4 e otermo 5).

Para designar os teoremas produzidos por esta teoria, utilizaremos a no-tacao λ `M = N que designa que os termos M e N sao convertıveis (iguais)na teoria λ ou seja que M = N e um teorema.

Teorema 4.1 (Teorema do Ponto Fixo)

∀F ∈ Λ,∃X ∈ Λ. FX = X

ou seja, qualquer termo possuı um ponto fixo.

Demonstracao: Dado F , basta considerar o termo W , λx.F (xx).Se escolhermos o termo X como sendo WW entao vemos que

Page 13: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 13 de 100

Retroceder

Ecra Todo

Fechar

Sair

X ≡ WW ≡ (λx.F (xx))W = F (WW ) ≡ FX�

X e chamado ponto fixo de F .

4.5. Substituicoes

4.5.1. Captura de Variaveis

A operacao de substituicao notada M [x := N ] e utilizada da regra β da teorianecessita dum cuidado particular que detalharemos nesta seccao.

O perigo de uma operacao de substituicao sem cuidados e a transformacaoabusiva de termos. Por exemplo

(λxy.yx)y 6= λy.yy

Se tomarmos um exemplo fora enquadramento do calculo λ, dum programaC por exemplo

i n t x ;. . .i n t f ( i n t y ) { re turn x+y ;}. . .

Se quisermos trocar o identificador x por y, nao iremos de certeza trans-formar no programa anterior em

in t y ;. . .

Page 14: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 14 de 100

Retroceder

Ecra Todo

Fechar

Sair

i n t f ( i n t y ) { re turn y+y ;}. . .

mas em

in t y ;. . .i n t f ( i n t z ) { re turn y+z ;}. . .

O fenomeno indesejavel que consiste em alterar o estatuto das variaveisque ocorrem numa expressao (passar de livre a ligadas ou o oposto) chama-secaptura de variavel.

Para evitar este problema aquando da substituicao e preciso impor certasrestricoes. Existem varias abordagens para definir um quadro adequado assubstituicoes. Vamos aqui abordar tres delas.

A abordagem classica Trata-se da abordagem original de Church que de-fine a substituicao como a operacao seguinte:

Seja t e N dois termos λ, x uma variavel

t[x := N ] ,

N se t = xy se t = y ∧ x 6= yλx.M se t = λx.Mλy.(M [x := N ]) se t = λy.M ∧ x 6∈ FV (M) ∨ y 6∈ FV (N)λz.((M [y := z])[x := N ]) se t = λy.M ∧ x ∈ FV (M) ∧ y ∈ FV (N)

∧ z variavel fresca(M1[x := N ]M2[x := N ]) se t = M1M2

Page 15: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 15 de 100

Retroceder

Ecra Todo

Fechar

Sair

Uma variavel fresca e uma variavel nova, isto e uma variavel que naoocorre no termo considerado (nao havendo assim riscos que haja captura devariaveis).

As regras nao naturais sao as regras 3, 4 e 5 que vamos descrever com maiscuidado:

• a regra 3 se aplica quando a variavel para ser substituıda esta ligada aonıvel mais exterior do termo considerado (pelo λ). Neste caso nenhumaocorrencias de x esta livre. Logo a substituicao nao tera nenhum efeito.

• regra 4 se aplica quando nao ha risco de captura de variavel. Ou x naoocorre livre em M ou y nao ocorre livre em N . Em ambos os casosnao existe o risco de captura de variavel. Logo a substituicao pode serefectuada em M sem problemas.

• regra 5 se aplica quando ha riscos de o fenomeno de captura de variavelocorrer. Isto e, quando x e livre em M e y em N . Neste caso e necessariorealizar mudanca de nome de variavel para se precaver. Para esse efeitoescolhe-se uma variavel que nao ocorra nos termos considerados, umavariavel fresca, que substituira y.

A regra 5 funciona se aceitamos que o nome dos parametros de uma funcaosao poucos importantes. Esta hipotese e realista, principalmente se pensar-mos em termos de programacao. Podemos, para ficar convencidos, voltaraos exemplos C mais acima. A funcao int f( int y) {return x+y;} e igual aint f( int z) {return x+z;}

A formulacao original da teoria da convertibilidade λ considerava o axiomasuplementar seguinte:

Page 16: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 16 de 100

Retroceder

Ecra Todo

Fechar

Sair

αy 6∈ FV (M)

λx.M = λy.M [x := y]

A notacao de De Bruijn Outra forma de resolver o problema e de modi-ficar o calculo λ de forma a que as variaveis desaparecem. Esta escolha, quevamos detalhar ja a seguir, tem uma particular importancia: e a abordagemque e computacionalmente mais razoavel ao ponto que e a opcao preferidaquando se implementa o calculo λ.

O conceito subjacente consiste em referenciar as variaveis por um numeroque representa a distancia entre a variavel e o λ que os liga. Por exemploλ.λ.2 representa λxy.x.

Formalmente redefinimos o conjunto Λ da forma seguinte:

Varn ∈ N∗

n ∈ Λ

AppM ∈ Λ N ∈ Λ

(M N) ∈ ΛAbs

M ∈ Λ(λ M) ∈ Λ

Neste caso a regra β e redefinido como β(λ P )Q = P [1 := Q]

onde

t[m := N ] ,

n se t = n ∧ n < mn− 1 se t = n ∧ n > mrenamen,1(N) se t = n ∧ n = m(M1[m := N ]M2[m := N ]) se t = M1M2

y se t = y ∧ x 6= yλ(M [m + 1 := N ]) se t = λ M

Page 17: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 17 de 100

Retroceder

Ecra Todo

Fechar

Sair

e

renamem,i(M) ,

j se M = j ∧ j < ij + m− 1 se M = j ∧ j ≥ irenamem,i(N1) renamem,i(N2) se M = (N1 N2)λ renamem,i+1(N) se M = (λ N)

Uma propriedade interessante desta notacao e o facto de termos α equiv-alentes serem representado pelo mesmo termo em notacao De Bruijn.

A convencao de variaveis A ultima abordagem consiste na hipotese deque quando efectuamos uma substituicao estamos sistematicamente na situ-acao em que nao ocorre problema nenhum.

Para tal introduzimos dois conceitos:

Definicao 4.4 (Mudanca de variaveis ligadas) Seja C[] um contextocom um buraco. Diz-se que M ′ e produzido a partir de M por mudanca devariaveis ligadas se M , C[λx.N ] e M ′ , C[λy.(N [x := y])] tal que y naoocorre (nem de forma livre nem de forma ligada) em N .

Definicao 4.5 (α-congruencia) Um termo M e α-congruente a N (notacaoM ≡α N), se N resulta de M a partir de uma sequencia de mudancas devariaveis ligadas.

Por exemplo λx.xy ≡α λz.zy mas λx.xy 6≡α λy.yy.Tendo definido a congruencia ≡α, podemos entao considerar um termo t

como o representante de todos os termos de [t]≡α

Page 18: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 18 de 100

Retroceder

Ecra Todo

Fechar

Sair

Assim tendo em conta um problema de substituicao M [x := N ], podemosconsiderar um termo de [M ]≡α e um termo de [N ]≡α tais que todas as variaveisligadas sejam distintas. Basicamente isto corresponde em adoptar a convencaoseguinte:

Definicao 4.6 Se M1, . . . ,MN ocorrem num determinado contexto entaonesses termos todas as variaveis ligadas sao escolhidas de forma a serem todasdiferentes das variaveis livres.

Desta hipotese inicial podemos entao redefinir a substituicao da seguinteforma:

t[x := N ] ,

N se t = xy se t = y ∧ y 6= x(M1[x := N ]M2[x := N ]) se t = M1M2

λy.(M [x := N ]) se t = λy.M

Embora a notacao de De Bruijn seja a mais importante em termo deaplicacao (e a notacao realmente utilizada nos sistemas implementados) uti-lizaremos esta abordagem por ser a mais intuitiva e simples.

4.5.2. O Lema da Substituicao

O resultado interessante seguinte permite-nos reorganizar consoante as neces-sidades as varias substituicoes pendentes.

Page 19: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 19 de 100

Retroceder

Ecra Todo

Fechar

Sair

Lema 4.1 (Lema da Substituicao) Sejam M , N e L tres termos. Se x ey sao variaveis distintas e x 6∈ FV (L), entao

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

A substituicao usufrui de outras propriedades interessantes:

Lema 4.2

• M = M ′ → M [x := N ] = M ′[x := N ]

• N = N ′ → M [x := N ] = M [x := N ′]

• M = M ′, N = N ′ → M [x := N ] = M ′[x := N ′]

Lema 4.3 (Transparencia referencial) Seja C[] um contexto, entao

N = N ′ → C[N ] = C[N ′]

4.6. Extensionalidade

A relacao de convertibilidade (=) e uma relacao de igualdade por intensao.Isto e, dois termos sao iguais se codificam o mesmo algoritmo. O problemae que esta relacao nao identifica termos que calculam a mesma coisa mas deforma diferente (que nao utilizam o mesmo algoritmo para o mesmo fim).

Assim a igualdade seguinte λx.(M x) = M nao e um teorema da teoria λapesar de intuitivamente a aceitarmos como valida.

Existem duas abordagens“historicas”que extendem a teoria λ com mecan-ismos de igualdade por extensao.

Page 20: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 20 de 100

Retroceder

Ecra Todo

Fechar

Sair

A primeira propoe a juncao da nova regra

extMx = Nx x 6∈ FV (M) ∪ FV (N)

M = N

Tal teoria e designada por λ + ext.A segunda abordagem, proposta pelo proprio Church, contempla o axioma

seguinte:

ηx 6∈ FV (N)

λx.Mx = M

Tal teoria e designada por λη.

Lema 4.4 λ + ext e λη sao equivalentes.

Demonstracao:Basta demonstrar as seguintes duas propriedades relativamente simples:

• λ + ext ` λx.Mx = M desde que x 6∈ FV (N)

• λη ` ext

Page 21: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 21 de 100

Retroceder

Ecra Todo

Fechar

Sair

4.7. Consistencia e Completude

Para que uma teoria seja util, e preciso que tenha teoremas e que nem todas asformulas fechadas (formulas sem variaveis livres) sejam teoremas. A primeirapropriedade e satisfeita se, por exemplo, se conseguir exibir um axioma. Asegunda propriedade, mais subtil e complicada, e designada por consistenciaou ainda por correccao. Informalmente, um sistema consistente e um sistemaque so gera frases validas.

Todas as teorias λ que ate aqui apresentamos sao consistentes, mas veremosque e muito facil, para uma teoria, deixar de o ser.

Definicao 4.7 (Equacao) Uma equacao e uma formula que segue o segue opadrao seguinte M = N onde ambos M e N sao termos de Λ.

Definicao 4.8 (Equacao Fechada) Uma equacao e fechada se M ∈ Λ0 eN ∈ Λ0

Definicao 4.9 (Consistencia) Se uma teoria T e uma teoria onde as for-mulas sao equacoes entao T e consistente, notado Con(T ), se nao prove qual-quer equacao fechada.

Se T e um conjunto de equacoes entao λ+T e a teoria obtida ao acrescentartodas as equacoes de T como axiomas a λ. Neste caso T e consistente, notadoCon(T ) se Con(λ + T ).

Definicao 4.10 (Incompatibilidade) Sejam M, N ∈ Λ, M e N sao in-compatıveis, notado M]N , se ¬Con(λ + (M = N))

Page 22: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 22 de 100

Retroceder

Ecra Todo

Fechar

Sair

A nocao de incompatibilidade leva a definicao de uma muito util tecnicade demonstracao da inconsistencia:

• utilizar a extensionalidade fraca for fim a gerar uma equacao fechada;

• escolher arbitrariamente termos que serao aplicados aos termos fechadosobtidos de cada lado da igualdade por fim a eliminar todos os λ exterioresaos dois termos da equacao;

• utilizar a regra β quanto possıvel;

• instanciar os termos arbitrarios com termos fechados (constantes) e ten-tar derivar a equacao

termo arbitrario = termo constante

Constantes importantes sao os combinadores seguintes:

S , λxyz.xz(yz)

K , λxy.x

I , λx.x

Um exemplo e a demonstracao de que xx]xy

Demonstracao:

Page 23: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 23 de 100

Retroceder

Ecra Todo

Fechar

Sair

xx = xy→ λxy.xx = λxy.xy por duas aplicacoes da extensionalidade fraca→ (λxy.xx)MN = (λxy.xy)MN M e N termos quaisquer→ MM = MN por duas aplicacoes da regra β→ I = N se escolhermosM ≡ I

Outra propriedade importante quando se fala de teorias e a completude.Esta ultima garante que a teoria em questao e capaz de produzir todas as frasesvalidas. No contexto da teoria λ, isto significa que qualquer par de termosconvertıveis pode ser verificado pela teoria. Dito de outra forma, uma teoriae completa se nao falhar. Vemos assim que a consistencia e a completude saopropriedades importantes e complementares. A primeira estabelece que todosos teoremas da teoria considerada sao validos e a segunda estabelece que nadade valido “escapa” a teoria.

Para expressar formalmente o que entendemos por completude no en-quadramento do calculo λ, introduzimos as nocoes centrais seguintes:

Definicao 4.11 (Formas Normais) Seja M ∈ Λ, M e uma β-forma nor-mal, notado β − nf ou nf , se M nao tem sub-termos da forma (λx.R)S. Otermo M tem um uma forma normal se existir um termo N em forma normaltal que M = N .

De forma similar, M e uma βη-forma normal se nao conter nenhum sub-termo da forma (λx.R)S ou da forma (λx.Rx) em que x 6∈ FV (R)

Page 24: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 24 de 100

Retroceder

Ecra Todo

Fechar

Sair

Proposicao 4.1 1. M ∈ Λ tem uma βη-forma normal se e so se M temuma β-forma normal;

2. se M, N ∈ Λ sao β-formas normais distintas entao M = N nao e umteorema de λ (nem de λη);

3. se M e N sao βη-formas normais distintas entao M]N .

Proposicao 4.2 (Completude) Sejam M e N dois termos com forma nor-mal. Entao ou λη `M = N ou λη + (M = N) e inconsistente.

Page 25: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 25 de 100

Retroceder

Ecra Todo

Fechar

Sair

5. Reducoes e Igualdade

Ate agora preocupamo-nos em estabelecer a relacao de convertibilidade entretermos. Se olharmos bem a regra β:

β(λx.M)N = M [x := N ]

reparamos que ela permite igualar o termo (λx.M)N com o que intuitivamenteentendemos ser o resultado da aplicacao da funcao (λx.M) ao parametro N .Destacamos tambem termos particulares que sao as formas normais. Essestermos tem a particularidade de nao conter nenhum sub-termo representandouma funcao por aplicar. De certa forma a ideia que temos dum calculo, quenao e explıcita na teoria λ, e exactamente “reduzir” um termo aplicando todasfuncoes por aplicar ate obter um valor que veremos ser uma forma normal. Ateoria λ sublinha mais a relacao entre termos que representam o mesmo valordo que a transformacao permitindo obter este valor.

Vamos assim ter nesta seccao uma visao computacional da teoria λ quejustifica o nome de calculo λ.

A ideia base para transformar teoria λ num calculo e relativamente simples:seguir a intuicao de que M [x := N ] e o resultado de (λx.M)N . Dito de outraforma, para termos um calculo basta orientar a regra β. Obtemos assim aregra de reducao β:

(λx.M)N .β M [x := N ]

O calculo do valor dum termo t e entao a iteracao do processos codificadopela regra .β a todos os sub-termos ate que nao seja mais possıvel aplicar

Page 26: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 26 de 100

Retroceder

Ecra Todo

Fechar

Sair

.β. O termo obtido, se o processo terminar, e necessariamente uma formaβ-normal.

Iremos a seguir apresentar toda a maquinaria envolvida a volta deste pro-cesso de reducao. Apresentaremos tambem alguns resultados.

No entanto, varias questoes surgem desde ja da descricao informal dadadeste processo de calculo.

Terminacao: quando pensamos na reducao no calculo λ como um calculo,esperamos que este processo acaba. Tera a reducao no calculo λ estapropriedade?

Confluencia: dado um termo t de Λ, existem varias formas de o reduzir(porque, por exemplo, varios subtermos de t sao da forma (λx.M)N)logo alvo de reducao β), logo temos de escolher, e a escolha nao e unica,com que sub-termo comecar). Sera que todas as escolhas levam aomesmo resultado?

Estrategia de reducao optima: havera uma escolha (ou estrategia de re-ducao) mais adequada do que as outras?

As respostas a essas questoes serao, tambem, o alvo das seccoes seguintes.

Page 27: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 27 de 100

Retroceder

Ecra Todo

Fechar

Sair

6. Propriedades

6.1. Relacoes de Reducao

Vamos comecar por definir formalmente o que entendemos por relacao dereducao e enunciar algumas definicoes e propriedades das relacoes de reducao.Aplicaremo-las entao ao caso da reducao β que introduzimos no inıcio daseccao.

Definicao 6.1 Seja R uma relacao binaria sobre Λ (R ⊆ Λ2). R e compatıvelse para todos termos t e t′ e para todo o contexto com um buraco C[], (t R t′)→(C[t] R C[t′]).

Definicao 6.2 Seja R uma relacao binaria sobre Λ (R ⊆ Λ2), R e umarelacao de igualdade (congruencia) se for uma relacao de equivalencia com-patıvel.

Definicao 6.3 Seja R uma relacao binaria sobre Λ (R ⊆ Λ2), R e umarelacao de reducao se for uma relacao reflexiva, transitiva e compatıvel.

Definicao 6.4 Uma nocao de reducao R e, simplesmente, uma relacaobinaria sobre Λ. Utilizaremos preferencialmente a notacao .R para representa-las.

A definicao de nocao de reducao so faz sentido se realizarmos que a relacao.β definida, relembremos, por (λx.M)N.βM [x := N ] e uma nocao de reducao.O que pretendemos e definir uma relacao de reducao com base nela.

Page 28: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 28 de 100

Retroceder

Ecra Todo

Fechar

Sair

Definicao 6.5 (R-reducao num passo) Seja .R uma nocao de reducao.Uma R-reducao num passo, notado →R, e o fecho compatıvel de .R. Ex-plicitamente o fecho compatıvel e obtido extendendo .R da seguinte forma:

M .R N

M →R N

M →R N

MZ →R NZ

M →R N

ZM →R ZN

M →R N

λx.M →R λx.N

A relacao→β que reduz um dos subtermos dum termo t que tiver a forma(λx.M)N e uma reducao num passo. Por outras palavras, →β e a reducaonum passo induzida por .β. Se M →β N diz-se que M se (β-)reduz num passoem N .

Definicao 6.6 (R-reducao) A relacao de reducao induzida por .R, desig-nada por �R, e o fecho transitivo e reflexivo de →R. Explicitamente temos:

Page 29: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 29 de 100

Retroceder

Ecra Todo

Fechar

Sair

M →R N

M �R N

M �R N

M �R N N �R L

M �R L

Se M �β N diz-se que M se (β-)reduz em N .

Definicao 6.7 (R-conversao) A relacao de conversao induzida por .R, des-ignada por =R, e a relacao de equivalencia induzia por �R. Isto e, =R e fechosimetrico de �R. Explicitamente temos:

M �R N

M =R N

M =R N

N =R M

M =R N N =R L

M =R L

Se M =β N diz-se que M e (β-)convertıvel com N .

Page 30: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 30 de 100

Retroceder

Ecra Todo

Fechar

Sair

Lema 6.1 Seja .R uma nocao de reducao. →R, �R e =R sao relacoes com-patıveis.

Lema 6.2 Para todos os M, N, N ′ ∈ Λ e para toda a nocao de reducao SeN �R N ′ entao M [x := N ] �R M [x := N ′]

6.2. Confluencia

A questao que vamos abordar nesta seccao e a da unicidade do valor calculado.Definiremos por forma normal o que entendemos por resultado dum calculoe veremos que o calculo λ tem uma propriedade designada por Churh-Rosserque garante que se existe uma forma normal, entao essa e unica.

Definicao 6.8 Sejam M e N termos e .R uma nocao de reducao. SeMtrianglerightRN , diz-se que M e um R-redex (abreviatura de reducibleexpression) e N um R-contractum.

Se um termo t esta em R-forma normal (ou em R-nf) se nenhum dos seussubtermos e um R-redex. Um termo u e uma R-forma normal de t se u e umaR-forma e t =R u.

Lema 6.3 Seja .R uma nocao de reducao, seja M uma R-forma normal entao

• Nao existe nenhum N tal que M →R N

• Se M �R N entao M ≡ N .

Page 31: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 31 de 100

Retroceder

Ecra Todo

Fechar

Sair

Definicao 6.9 (A propriedade do diamante �)Seja I uma relacao binaria sobre Λ. Diz-se de I que verifica a propriedade�, notacao I|= �, se

∀M, M1, M2 ∈ Λ. (M I M1∧M I M2) −→ ∃M3 ∈ Λ. (M1 I M3∧M2 I M3)

Definicao 6.10 (Relacao Church-Rosser)Uma nocao de reducao .R e dita Church-Rosser (ou CR) se �R |= �.

Teorema 6.1 (Teorema de Church-Rosser)Seja .R uma nocao de reducao verificando CR. Entao

∀M, N ∈ ΛM =R N −→ ∃Z.(M �R Z ∧N �R Z)

Corolario 6.1 Seja .R uma nocao de reducao verificando CR. Entao

• Sejam N ; M ∈ Λ, se N e uma R-nf de M entao M �R N ;

• um termo tem no maximo uma R-forma normal

Desses teoremas podemos deduzir que se .β for CR entao a resposta asegunda questao (tera um calculo um resultado unico) e positiva.

A verificacao de tal resultado exige toda uma tecnologia matematica quenao exploraremos aqui. Referiremos somente o enunciado que nos interessa:

Teorema 6.2 (Teorema de Confluencia)

• .β e Church-Rosser

Page 32: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 32 de 100

Retroceder

Ecra Todo

Fechar

Sair

• .βη e Church-Rosser

Aqui .βη representa a nocao de reducao induzida pela regra β e pela regraη.

A custa do resultado da confluencia podemos enunciar:

Teorema 6.3

M =β N ←→ λ `M = N

6.3. Terminacao

Aqui olhamos para a primeira questao: sera que todos os processos de calculoterminam. Ja sabemos que se terminar entao o resultado e unico. Vamosagora explorar a pertinencia da hipotese enunciada na frase anterior.

Definicao 6.11 (normalizacao forte)Sejam .R uma nocao de reducao e M um termo:

• M R-normaliza fortemente (notacao R-SN(M), e SN como abreviaturade Strongly Normalize) se nao existir R-reducoes infinitas a partir deM ;

• M e R-infinito se nao R-normaliza fortemente;

• .R e fortemente normalizavel (notacao .R e SN) se

∀M ∈ Λ. R-SN(M)

Page 33: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 33 de 100

Retroceder

Ecra Todo

Fechar

Sair

Teorema 6.4 (Teorema da (nao) normalizacao forte).β nao e fortemente normalizavel.

Demonstracao:Basta considerar a β reducao do termo (λx.xx)(λx.xx).�

O ponto anterior e particularmente forte em termos de consequencias. Hacalculos que nao acabam. Nao podemos descartar a hipotese da terminacao.

Certas extensoes do calculo λ adquiram no entanto esta propriedade aoaceitar perder um pouco da expressividade (proibir as construcoes que levama calculo infinitos). Uma dessas extensoes, o calculo λ tipificado, e mais par-ticularmente a teoria dos tipos, e essencial as ligacoes que o calculo λ tem coma matematica e com a ciencia da computacao.

6.4. Normalizacao e Estrategias de Reducao

Ja sabemos que um termo pode conter varios redex, logo existe varias escolhasde reducoes em um passo (basicamente uma por cada redex). Sabemos tam-bem que essas escolhas podem conduzir a um processo de reducao “infinita”.A situacao e de facto problematica. O termo seguinte:

(λxy.x)(λz.z)((λt.tt)(λu.uu))

pode ser reduzido em um passo em (λz.z) se escolhermos o redex mais aesquerda ou levar a uma reducao infinita se escolhermos o redex mais a direita.

A questao aqui e entao de saber se existe uma escolha, ou melhor estrategia,pertinente e determinista dos redex por reduzir.

Page 34: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 34 de 100

Retroceder

Ecra Todo

Fechar

Sair

6.4.1. Resıduos

Vamos utilizar nas definicoes seguintes a nocao de resıduo que nao definiremosde forma formal (consultar a bibliografia para tal). Um resıduo e o descendentede um redex. Esta nocao e utilizada para “tracejar” as reducoes efectuadase assim obter de forma grafica um historico (uma evolucao) da vida de umredex.

Por exemplo, dado o redex inicialmente sublinhado, os resıduos sao ossubtermos sublinhados no termo sujeito a reducao β seguinte:

(λxy.(λzw.xz)y)MN →β (λxy.(λzw.Mz)y)N →β (λzw.Mz)N →β λw.MN

Repare que no ultimo termo o redex de que seguimos o rasto foi comple-tamente reduzido por isso deixou de existir, logo o resıduo tambem.

6.4.2. Formas Normais de Cabeca

Definicao 6.12 (Formas Normais de Cabeca e Redex de Cabeca)M ∈ Λ e uma forma normal de cabeca (hnf, de Head Normal Form) se Mtem a forma seguinte:

λx1 . . . xn.xM1 . . . Mm x ∈ V ∧ n, m ≥ 0

Neste caso x e designada por a variavel de cabeca.Se M ≡ λx1 . . . xn.(λx.M0)M1 . . . Mm (com n ≥ 0 e m ≥ 1) entao

(λx.M0)M1 e designado por redex de cabeca de M .

Page 35: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 35 de 100

Retroceder

Ecra Todo

Fechar

Sair

Num termo que nao esta em forma normal de cabeca designaremos porredex mais a esquerda o redex “geograficamente” mais a esquerda de todos: eo redex tal que a sua primeira ocorrencia do sımbolo λ esta a esquerda de qual-quer outra ocorrencia de λ de qualquer outro redex. Consultar a bibliografiapara uma definicao mais formal.

Teorema 6.5 (Teorema de estandardizacao) Seja t um termo. Se t temuma forma normal u entao a estrategia que consiste em escolher sempre oredex mais a esquerda se reduz em u.

Designaremos esta estrategia pela sua terminologia inglesa, isto e call by valueou normal order reduction

Existem varias estrategias de grande interesse (ver em particular [6]), maso teorema da estandardizacao nos garante que o call by value encontra a formanormal se essa existir.

Estas consideracoes concluem as problematicas discutidas.

Page 36: Teoria da Computação - Introdução ao Cálculo Lambda

Aviso Previo

Bibliografia

Introducao

Notacoes e Teoria . . .

Reducoes e Igualdade

Propriedades

Pagina Pessoal

Pagina de Rosto

JJ II

J I

Pagina 36 de 100

Retroceder

Ecra Todo

Fechar

Sair

References

[1] H. P. Barendregt. The Lambda Calculus, its Syntax and Semantics, vol-ume 103 of Studies in Logic and the Foundations of Mathematics. North-Holland, revised edition, 1984.

[2] H.P. Barendregt. Lambda calculi with types. In S. Abramsky, Dov M.Gabbay, and T.S.E Maibaum, editors, Handbook of Logic in ComputerScience, volume 2, pages 117–310. Oxford University Press, New York,1992.

[3] G. Dowek. Theories des types. DEA Programmation, Paris VII, 2002.http://www.lix.polytechnique.fr/~dowek/Cours/theories_des_types.ps.gz

[4] J-Y. Girard, Y. Lafont, and P. Taylor. Proofs and Types. CambridgeTracts in Theoretical Computer Science 7. Cambridge University Press,1988.

[5] Chris Hankin. Lambda Calculi: A Guide for Computer Scientists, volume 3of Graduate Texts in Computer Science. Clarendon Press, Oxford, 1994.

[6] G. Huet. Constructive computation theory. Course Notes,DEA Informatique Universite Bordeaux I, October 1992.http://pauillac.inria.fr/~huet/CCT/

[7] J. L. Krivine. Lambda-Calculus, Types and Models. Ellis Horwood, 1993.