O documento apresenta uma introdução ao cálculo-λ, formalismo funcional proposto por Alonzo Church para representar funções. As principais ideias apresentadas são: 1) definição de expressões-λ; 2) variáveis livres e limitadas; 3) reduções do cálculo-λ; 4) representação de conectivos lógicos e manipulação de listas usando o cálculo-λ.
2. 1 ¸˜
INTRODUCAO 2
1 Introdu¸˜o
ca
• Fun¸oes parciais recursivas s˜o equivalentes ao
c˜ a
formalismo M´quina de Turing;
a
• Representam as fun¸oes que podem ser computadas
c˜
em uma m´quina.
a
3. 1 ¸˜
INTRODUCAO 3
Tipos de formalismos para especificar algoritmos:
Operacional M´quinas abstratas (M´quina de Turing);
a a
Axiom´tico Regras definem os componentes da
a
linguagem (Gram´ticas);
a
Funcional ou Denotacional Fun¸oes constru´
c˜ ıdas de
forma a serem compostas – linguagem-λ (Alonzo
Church) e fun¸˜es parciais recursivas (Kleene).
co
4. 1 ¸˜
INTRODUCAO 4
Equivalˆncias entre m´quinas e gram´ticas (hierarquia de
e a a
Chomsky):
• Autˆmatos finitos ≡ Gram´ticas regulares;
o a
• Autˆmatos de pilha n˜o-determin´
o a ısticos ≡
Gram´ticas livres de contexto;
a
• M´quinas universais (M´quina de Turing) ≡
a a
Gram´ticas irrestritas.
a
5. 2 ´
CALCULO-λ 5
2 C´lculo-λ
a
• Formalismo para representar fun¸oes proposto por
c˜
Alonzo Church (1941);
• Fornece um sistema axiom´tico para o c´lculo com as
a a
express˜es da linguagem-λ;
o
• Linguagem-λ ≡ linguagem funcional (LISP).
6. 2 ´
CALCULO-λ 6
2.1 Defini¸˜o de Express˜o-λ
ca a
Defini¸˜o 1 ( express˜o-λ ou termo-λ)
ca a
1. Uma vari´vel ´ uma express˜o-λ;
a e a
2. Se M ´ uma express˜o-λ e x ´ uma vari´vel, ent˜o
e a e a a
λxM ´ uma express˜o-lambda, interpretada como
e a
“uma fun¸˜o com argumento x”;
ca
3. Se F e A s˜o express˜es-λ, ent˜o (F A) ´ uma
a o a e
express˜o-λ, interpretada como “F aplicado ao
a
argumento A”;
4. Nada mais ´ express˜o-λ.
e a
7. 2 ´
CALCULO-λ 7
Exemplos 1
M
1. λx x ;
F
2. ( λxx (yz));
A
F A
3. (λx (xx) y );
M
4. (λxx λxx );
F A
5. λx λy(xy).
M
8. 2 ´
CALCULO-λ 8
Exerc´
ıcio 1 Determine as express˜es v´lidas:
o a
1. λxx;
2. λx;
3. λxλyx.
9. 2 ´
CALCULO-λ 9
2.2 Vari´veis Livres e Limitadas
a
Se uma ocorrˆncia de uma vari´vel x est´ no escopo de
e a a
um λx, ent˜o sua ocorrˆncia ´ dita limitada, caso
a e e
contr´rio ´ dita livre.
a e
10. 2 ´
CALCULO-λ 10
Exemplo 1 (xλxλy(xy))
Primeira ocorrˆncia de x ´ livre, a segunda ´ limitada.
e e e
11. 2 ´
CALCULO-λ 11
2.3 Substitui¸˜o de Vari´veis
ca a
M [x ← A] denota a substitui¸˜o uniforme de todas as
ca
ocorrˆncias livres de x por A.
e
Exemplo 2 (xλxλy(xy))[x ← λzz] = (λzzλxλy(xy)).
12. 2 ´
CALCULO-λ 12
2.4 Redu¸oes do C´lculo-λ
c˜ a
(F A)
F funcional;
A argumento.
(λxM A) ⇒ M [x ← A]
F
Exemplo 3
(λxx(yz)) ⇒ (yz)
14. 2 ´
CALCULO-λ 14
Exerc´
ıcio 2 Efetue as seguintes redu¸˜es:
co
1. (λz(λyzx)(xx))
2. (λxxλxx)
3. (λx(xx)λyy(xx))
15. 2 ´
CALCULO-λ 15
2.5 Currying
• Ocorre quando da aplica¸˜o de um termo-λ em que
ca
existem menos argumentos que vari´veis limitadas;
a
(λxλy(xy)z) ⇒ λy(zy)
• Na matem´tica: f (x, y), fixando um x qualquer,
a
resulta em uma fun¸˜o de y;
ca
• Natural de fazer na programa¸ao funcional/dif´ de
c˜ ıcil
fazer na programa¸ao procedural (necess´rio editar o
c˜ a
fonte e atribuir os valores que n˜o ser˜o lidos).
a a
16. 2 ´
CALCULO-λ 16
2.6 Aplica¸˜o-λ e Abstra¸˜o-λ
ca ca
Abstra¸˜o-λ M ⇒ λxM ;
ca
Aplica¸˜o-λ (λxM A) ⇒ M [x ← A].
ca
(λxM A) ⇒ M [x ← A]
redex contractum
17. 2 ´
CALCULO-λ 17
Defini¸˜o 2 Uma express˜o-λ que n˜o pode ser mais
ca a a
reduzida ´ chamada forma normal.
e
Exemplo 4 λxx ´ uma forma normal.
e
Exemplo 5 (λxx(yz)) n˜o ´ uma forma normal.
a e
Exemplo 6 (λx(xx)λx(xx)) n˜o ´ uma forma normal.
a e
18. 2 ´
CALCULO-λ 18
2.7 Teorema de Church-Rosser
• Podem existir mais de uma redu¸˜o poss´
ca ıveis (mais
de um redex)
(λx(xx)(λyzλxx))
U
gg UUUUUU
ow gggggg &F
((λyzλxx)(λyzλxx))
W
(λx(xx)z)
WWWWWWW
W 'G ttt
ttt
tt
ttt
(z(λyzλxx)) WW ((λyzλxx)z)tttt ttt
t
WWWWW
WWWWW ttt
u} tt
t
t
W 'G
(zz)
19. 2 ´
CALCULO-λ 19
• Pode haver caminhos sem sa´
ıda
redex1
(λxy (λx(xx)λx(xx)))
redex2
(λxy(λx(xx)λx(xx)))
V
n V VVVVV
nnnn VVVV
nnn V 'G
y s{ nn
(λxy(λx(xx)λx(xx)))
g D
ggggggg D
ggggg D
y ow ggg D
D
D
D4
20. 2 ´
CALCULO-λ 20
• Considerando os diversos caminhos, seria a resposta
da avalia¸ao das express˜es unica? Ou seja, seriam as
c˜ o ´
formas normais idˆnticas?
e
21. 2 ´
CALCULO-λ 21
Teorema 1 (Teorema de Church-Rosser)
Para qualquer express˜o-λ P e para quaisquer Q e R,
a
se P ⇒ Q e P ⇒ R, ent˜o existe um S tal que
a
Q ⇒ S e R ⇒ S.
P ??
?
???
?
??
?
{Ó 5
Q?
? R
??
???
??
?
5
{Ó
S
22. 2 ´
CALCULO-λ 22
2.8 Teorema da Normaliza¸˜o
ca
Sempre usar o redex mais ` esquerda e mais externo
a
primeiro em uma redu¸ao.
c˜
estrat´gia normal ≈ call by name ≈ eal ≈ menor ponto
e
fixo
23. 2 ´
CALCULO-λ 23
2.9 Representa¸˜o dos Conectivos da
ca
L´gica
o
if A then B else C
T ≡ λxλyx
((T a)b) ≡ ((λxλyxa)b) ⇒ (λyab) ⇒ a
F ≡ λxλyy
((F a)b) ≡ ((λxλyya)b) ⇒ (λyyb) ⇒ b
24. 2 ´
CALCULO-λ 24
not ≡ λx((xF )T )
Exemplo 7 (notF )
(λx((xF )T )F ) ⇒ ((F F )T ) ⇒ T
25. 2 ´
CALCULO-λ 25
and ≡ λxλy((xy)F )
or ≡ λxλy((xT )y)
→≡ λxλy((xy)T )
26. 2 ´
CALCULO-λ 26
2.10 Manipula¸˜o de Listas
ca
Usar F e T como seletores de elementos de listas
(if-then-else aninhados).
• T ≡ λxλyx (primeiro elemento da lista);
• F T ≡ λxλy(yλxλyx) ≡ λxλy(yT ) (segundo elemento
da lista);
• F 2 T ≡ λxλy(yλxλy(yλxλyx)) ≡ λxλy(yF T )
(terceiro elemento da lista);
• F i+1 T ≡ λxλy(yF i T ) (o (i + 2)-´simo elemento).
e
30. 2 ´
CALCULO-λ 30
2.11 Rela¸˜o com a Programa¸˜o
ca ca
Funcional (LISP)
T ≡ CAR F ≡ CDR ψ ≡ nil
(CAR (CDR (CAR QUOTE((A B C) D))))=B
31. 2 ´
CALCULO-λ 31
2.12 Representa¸˜o de N´ meros Inteiros
ca u
i ≡ F iT
0≡T
1 ≡ FT
2 ≡ FFT
.
.
.
32. 2 ´
CALCULO-λ 32
suc ≡ λzλxλy(yz)
(suc 1) ≡ (λzλxλy(yz)λxλy(yλxλyx)) ⇒
λxλy(y λxλy(y λxλyx) ≡ F F T ≡ 2
T
FT
33. 2 ´
CALCULO-λ 33
Da observa¸ao que podemos escrever as express˜es-λ
c˜ o
para pred, +, −, mult etc. concluimos que
C´lculo-λ ≈ m´quina de Turing
a a
34. 2 ´
CALCULO-λ 34
2.13 Igualdade do C´lculo-λ
a
Defini¸˜o 3 (Redu¸˜o beta) (λxM A) ⇒ M [x ← A].
ca ca
Defini¸˜o 4 (Redu¸˜o alfa) λxM ⇒ λyM [x ← y].
ca ca
As redu¸oes alfa e beta induzem uma igualdade das
c˜
express˜es-λ (igualdade extensional).
o
= igualdade extensional;
≡ igualdade intencional (baseada na equivalˆncia de
e
abreviaturas).
35. 2 ´
CALCULO-λ 35
2.14 Sistema Axiom´tico do C´lculo-λ
a a
Serve para julgar a igualdade extensional entre termos do
c´lculo-λ.
a
λ M = N se e somente se existe uma dedu¸˜o de
ca
M = N.
36. 2 ´
CALCULO-λ 36
2.14.1 Axiomas/Regras de Inferˆncia
e
M =M
(λxM A) = M [x ← A]
M =N
N =M
M = N, N = K
M =K
M =N
(M A) = (N A)
M =N
(F M ) = (F N )
M =N
λxM = λxN
37. 2 ´
CALCULO-λ 37
C´lculo-λ=linguagem-λ+sistema axiom´tico
a a
38. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 38
3 Fun¸oes Parciais Recursivas
c˜
• Propostas por Kleene (1936);
• Equivalentes ao formalismo M´quina de Turing e
a
linguagem-λ.
39. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 39
3.1 Fun¸˜es e Funcionais
co
Defini¸˜o 5 Uma fun¸ao parcial ´ uma rela¸˜o
ca c˜ e ca
f ⊆ A × B onde cada elemento de A se relaciona com,
no m´ximo, um elemento de B. O conjunto A ´ chamado
a e
de dom´ ınio da fun¸˜o e o conjunto B de co-dominio.
ca
Nota¸ao: Denotamos a fun¸ao f ⊆ A × B como
c˜ c˜
f : A → B e diz-se que o tipo de f ´ A → B. a, b ∈ f
e
´ denotado por f (a) = b.
e
40. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 40
Exemplo 8 Seja a fun¸˜o f : N → N, definida como
ca
f (x) = x2 . Assim, f (3) = 9.
41. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 41
• Uma fun¸ao ´ total se ela est´ definida para todo o
c˜ e a
seu dom´
ınio;
• Uma fun¸ao f : A → B ´ parcial se
c˜ e
∃x ∈ A( ∃y ∈ Bf (x) = y). Exemplo: f : R → R,
f (x) = 1/x. Observe que f (0) n˜o est´ definido.
a a
42. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 42
Defini¸˜o 6 Um funcional ´ uma fun¸˜o que possui
ca e ca
uma ou mais fun¸˜es como argumentos.
co
Exemplo 9 Seja o funcional h : (N → N) × N → N, tal
que h(f, x) = f (x) e f : N → N.
43. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 43
3.2 Defini¸˜o de Fun¸˜o Parcial
ca ca
Recursiva
• Fun¸oes parciais recursivas s˜o fun¸˜es constru´
c˜ a co ıdas
sobre fun¸oes b´sicas usando cinco tipos de
c˜ a
constru¸˜es: composi¸ao; condicional; recurs˜o
co c˜ a
primitiva, recurs˜o while e minimiza¸ao;
a c˜
• Fun¸ao Turing-comput´vel ≡ fun¸ao parcial
c˜ a c˜
recursiva;
• Fun¸ao Turing comput´vel para m´quina que sempre
c˜ a a
p´ra ≡ fun¸ao recursiva (total).
a c˜
44. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 44
3.2.1 Fun¸˜es B´sicas
co a
Fun¸˜o sucessor s : N → N, definida como
ca
s(x) = x + 1;
Fun¸˜o predecessor p : N → N, definida como
ca
x − 1 se x 0
p(x) = ;
0 se x = 0
Proje¸˜o pi : Nn → N, definida como
ca n
pi (x1 , x2 , . . . xn ) = xi , para 1 ≤ i ≤ n.
n
45. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 45
3.2.2 Composi¸˜o Generalizada
ca
Defini¸˜o 7 Sejam g, f1 , f2 , f3 , . . . , fk fun¸˜es parciais
ca co
tais que g : Nk → N e fi : Nn → N para 1 ≤ i ≤ k. A
fun¸˜o parcial h, definida como
ca
h(x1 , x2 , . . . , xn ) = g(f1 (x1 , x2 , . . . , xn ), f2 (x1 , x2 , . . . , xn ), . . . , fk (x1 , x2 , . . . , xn ))
´ a composi¸˜o das fun¸˜es g, f1 , f2 , f3 , . . . , fk .
e ca co
46. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 46
Exemplo 10 A fun¸˜o soma2 : N → N, definida como
ca
soma2(x) = s(s(x)), usa a constru¸˜o composi¸˜o e
ca ca
resulta numa fun¸˜o que soma dois ao valor de seu
ca
argumento.
47. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 47
3.2.3 Condicional
Defini¸˜o 8 A fun¸˜o cond : {V, F } × N × N → N,
ca ca
definida como
g se b = V
1
cond(b, g1 , g2 ) = ,
g2 se b = F
´ a constru¸˜o condicional, onde b ´ uma express˜o
e ca e a
l´gica, g1 e g2 s˜o dois valores quaisquer.
o a
48. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 48
cond(b, g1 , g2 ) = se b ent˜o g1 sen˜o g2
a a
49. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 49
Exemplo 11 maior : N × N → N, definida como
maior(x, y) = cond(x y, x, y), resulta no maior valor
entre x e y.
50. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 50
3.2.4 Recurs˜o Primitiva
a
Defini¸˜o 9 A fun¸˜o f : Nn+1 → N, definida como
ca ca
f (x1 , . . . , xn , y) = cond(y = 0, g(x1 , . . . , xn ), h(x1 , . . . , xn , p(y),
f (x1 , . . . , xn , p(y))))
´ chamada de recurs˜o primitiva. Na defini¸˜o,
e a ca
h : Nn+2 → N e g : Nn → N s˜o duas fun¸˜es quaisquer.
a co
51. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 51
8
g(x , . . . , x ) se y = 0
1 n
f (x1 , . . . , xn , y) =
: h(x1 , . . . , xn , p(y), f (x1 , . . . , xn , p(y))) se y = 0
52. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 52
Exemplo 12
zero(x) = cond(x = 0, p1 (x), p2 (p(x), zero(p(x)))), define
1 2
uma fun¸˜o que resulta no valor constante zero.
ca
53. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 53
3.2.5 Recurs˜o While
a
Defini¸˜o 10 A fun¸˜o
ca ca
8
g(x , . . . , x ) se xi = 0
1 n
f (x1 , x2 , . . . , xn ) =
: f (h1 (x1 , . . . , xn ), . . . , hn (x1 , . . . , xn )) se xi 0
´ chamada de recurs˜o while.
e a
54. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 54
3.2.6 Minimiza¸˜o
ca
A fun¸ao f (x1 , . . . , xn ) = µy : h(x1 , . . . , xn , y), definida
c˜
como o menor valor y tal que h(x1 , . . . , xn , y) = 0 e para
todo z y, h(xn , . . . , xn , z) est´ definido, ´ chamada de
a e
minimiza¸˜o.
ca
55. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 55
3.2.7 Defini¸oes
c˜
Defini¸˜o 11 As fun¸oes while recursivas compreendem
ca c˜
a menor classe de fun¸˜es que inclui as fun¸˜es b´sicas e
co co a
´ fechado sobre a composi¸˜o generalizada, condicional e
e ca
recurs˜o while.
a
56. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 56
Defini¸˜o 12 As fun¸oes primitivas recursivas
ca c˜
compreendem a menor classe de fun¸˜es que inclui as
co
fun¸oes b´sicas e ´ fechado sobre a composi¸˜o
c˜ a e ca
generalizada e recurs˜o primitiva.
a
57. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 57
Defini¸˜o 13 As fun¸oes parciais recursivas
ca c˜
compreendem a menor classe de fun¸˜es que inclui as
co
fun¸oes b´sicas e ´ fechado sobre a composi¸˜o
c˜ a e ca
generalizada, recurs˜o primitiva e minimiza¸˜o.
a ca
63. 3 ¸˜
FUNCOES PARCIAIS RECURSIVAS 63
= s(s(s(cond(0 = 0, s(zero(0)), s(p2 (p(0),
2
f (p(0)))))))) = s(s(s(s(zero(0)))))
Observe-se que “3” ´ uma abreviatura para
e
“s(s(s(zero(x)))).”
64. 4 PONTOS FIXOS 64
4 Pontos Fixos
• J´ vimos uma interpreta¸ao computacional das
a c˜
fun¸˜es recursivas;
co
• Pontos fixos: Interpreta¸˜o matem´tica das fun¸oes
ca a c˜
recursivas.
65. 4 PONTOS FIXOS 65
4.1 Defini¸oes
c˜
Defini¸˜o 14 A fun¸˜o ⊥ : N → N, definida como
ca ca
⊥(x) = undef, ´ chamada de fun¸ao totalmente
e c˜
indefinida.
Defini¸˜o 15 A rela¸˜o sobre F × F , onde F ´ o
ca ca e
conjunto das fun¸˜es sobre N → N, definida como f1 f2
co
se f1 (x) = y → f2 (x) = y, onde f1 , f2 ∈ F, ´ uma rela¸˜o
e ca
de ordem parcial sobre F.
Observa¸˜o: ⊥
ca f , para qualquer f ∈ F.
66. 4 PONTOS FIXOS 66
Defini¸˜o 16 Um conjunto de fun¸˜es {fi |i ≥ 0} ´
ca co e
chamado de cadeia se f1 f2 f3 · · · .
Defini¸˜o 17 Uma fun¸˜o f ´ chamada ponto fixo do
ca ca e
funcional F se F (f ) = f .
67. 4 PONTOS FIXOS 67
Teorema 2 O ponto fixo f0 do funcional F ´ o supremo
e
da cadeia F i (⊥), f0 = {F i (⊥)|i ≥ 0}.
Observa¸˜es:
co
• F i = F ◦ F i−1 ;
• F 0 (⊥) F 1 (⊥) F 2 (⊥) ···;
• Identificamos o ponto fixo do funcional com a fun¸˜o
ca
computada pelo programa associado a este funcional.
68. 4 PONTOS FIXOS 68
Exemplo 15 Seja f (x) = cond(x = 0, 1, x ∗ f (x − 1)).
Cadeia:
1. F 0 (⊥) = id(⊥) = ⊥ = undef;
2. F 1 (⊥) = F (⊥) = cond(x = 0, 1, x ∗ ⊥(x − 1)) =
cond(x = 0, 1, undef);
3. F 2 (⊥) = F ◦ F 1 (⊥) = cond(x = 0, 1, x ∗ (F 1 (⊥))(x −
1)) = cond(x = 0, 1, x ∗ cond(x − 1 = 0, 1, undef)) =
cond(x = 0, 1, x ∗ cond(x = 1, 1, undef))
69. 4 PONTOS FIXOS 69
ıcio 4 Calcular F 3 (⊥).
Exerc´
Observa¸˜o:
ca {F i (⊥)|i ≥ 0} = fatorial.