Funções Recursivas e Cálculo Lambda
-
Upload
carlos-campani -
Category
Technology
-
view
5.099 -
download
6
description
Transcript of Funções Recursivas e Cálculo Lambda
1 INTRODUCAO 2
1 Introducao
• Funcoes parciais recursivas sao equivalentes ao
formalismo Maquina de Turing;
• Representam as funcoes que podem ser computadas
em uma maquina.
1 INTRODUCAO 3
Tipos de formalismos para especificar algoritmos:
Operacional Maquinas abstratas (Maquina de Turing);
Axiomatico Regras definem os componentes da
linguagem (Gramaticas);
Funcional ou Denotacional Funcoes construıdas de
forma a serem compostas – linguagem-λ (Alonzo
Church) e funcoes parciais recursivas (Kleene).
1 INTRODUCAO 4
Equivalencias entre maquinas e gramaticas (hierarquia de
Chomsky):
• Automatos finitos ≡ Gramaticas regulares;
• Automatos de pilha nao-determinısticos ≡Gramaticas livres de contexto;
• Maquinas universais (Maquina de Turing) ≡Gramaticas irrestritas.
2 CALCULO-λ 5
2 Calculo-λ
• Formalismo para representar funcoes proposto por
Alonzo Church (1941);
• Fornece um sistema axiomatico para o calculo com as
expressoes da linguagem-λ;
• Linguagem-λ ≡ linguagem funcional (LISP).
2 CALCULO-λ 6
2.1 Definicao de Expressao-λ
Definicao 1 ( expressao-λ ou termo-λ)
1. Uma variavel e uma expressao-λ;
2. Se M e uma expressao-λ e x e uma variavel, entao
λxM e uma expressao-lambda, interpretada como
“uma funcao com argumento x”;
3. Se F e A sao expressoes-λ, entao (FA) e uma
expressao-λ, interpretada como “F aplicado ao
argumento A”;
4. Nada mais e expressao-λ.
2 CALCULO-λ 7
Exemplos 1
1. λxM︷︸︸︷x ;
2. (
F︷︸︸︷λxx (yz)︸︷︷︸
A
);
3. (
F︷ ︸︸ ︷λx (xx)︸︷︷︸
M
A︷︸︸︷y );
4. (λxx︸︷︷︸F
λxx︸︷︷︸A
);
5. λxλy(xy)︸ ︷︷ ︸M
.
2 CALCULO-λ 9
2.2 Variaveis Livres e Limitadas
Se uma ocorrencia de uma variavel x esta no escopo de
um λx, entao sua ocorrencia e dita limitada, caso
contrario e dita livre.
2 CALCULO-λ 11
2.3 Substituicao de Variaveis
M [x← A] denota a substituicao uniforme de todas as
ocorrencias livres de x por A.
Exemplo 2 (xλxλy(xy))[x← λzz] = (λzzλxλy(xy)).
2 CALCULO-λ 12
2.4 Reducoes do Calculo-λ
(FA)
F funcional;
A argumento.
(λxM︸ ︷︷ ︸F
A)⇒M [x← A]
Exemplo 3
(λxx(yz))⇒ (yz)
2 CALCULO-λ 13
Exemplos 2
1. (λxxλxx)⇒ λxx;
2. ((λxλy(xy)λxx)x)⇒ (λy(λxxy)x)⇒ (λxxx)⇒ x;
3. (λx(xx)λx(xx))⇒ (λx(xx)λx(xx)) (irredutıvel);
4. (λxyz)⇒ y (jogar fora alguma coisa).
2 CALCULO-λ 14
Exercıcio 2 Efetue as seguintes reducoes:
1. (λz(λyzx)(xx))
2. (λxxλxx)
3. (λx(xx)λyy(xx))
2 CALCULO-λ 15
2.5 Currying
• Ocorre quando da aplicacao de um termo-λ em que
existem menos argumentos que variaveis limitadas;
(λxλy(xy)z)⇒ λy(zy)
• Na matematica: f(x, y), fixando um x qualquer,
resulta em uma funcao de y;
• Natural de fazer na programacao funcional/difıcil de
fazer na programacao procedural (necessario editar o
fonte e atribuir os valores que nao serao lidos).
2 CALCULO-λ 16
2.6 Aplicacao-λ e Abstracao-λ
Abstracao-λ M ⇒ λxM ;
Aplicacao-λ (λxMA)⇒M [x← A].
(λxMA)︸ ︷︷ ︸redex
⇒M [x← A]︸ ︷︷ ︸contractum
2 CALCULO-λ 17
Definicao 2 Uma expressao-λ que nao pode ser mais
reduzida e chamada forma normal.
Exemplo 4 λxx e uma forma normal.
Exemplo 5 (λxx(yz)) nao e uma forma normal.
Exemplo 6 (λx(xx)λx(xx)) nao e uma forma normal.
2 CALCULO-λ 18
2.7 Teorema de Church-Rosser
• Podem existir mais de uma reducao possıveis (mais
de um redex)
(λx(xx)(λyzλxx))ow gggggggggggggggg
&.UUUUUUUUUUUU
((λyzλxx)(λyzλxx))®¶ '/WWWWWWWW
WWWWWWWW(λx(xx)z)
u} ttttttttttttt
ttttttttttttt
(z(λyzλxx))
'/WWWWWWWWWWWWW
WWWWWWWWWWWWW((λyzλxx)z)
®¶(zz)
2 CALCULO-λ 19
• Pode haver caminhos sem saıda
redex1︷ ︸︸ ︷(λxy (λx(xx)λx(xx))︸ ︷︷ ︸
redex2
)
(λxy(λx(xx)λx(xx)))
s{ nnnnnnnnnn
nnnnnnnnnn
'/VVVVVVVVVVV
VVVVVVVVVVV
y (λxy(λx(xx)λx(xx)))
ow gggggggggggggggg
gggggggggggggggg
""DD
DD
DD
D
y
2 CALCULO-λ 20
• Considerando os diversos caminhos, seria a resposta
da avaliacao das expressoes unica? Ou seja, seriam as
formas normais identicas?
2 CALCULO-λ 21
Teorema 1 (Teorema de Church-Rosser)
Para qualquer expressao-λ P e para quaisquer Q e R,
se P ⇒ Q e P ⇒ R, entao existe um S tal que
Q⇒ S e R⇒ S.
P
¾#??
???
????
?
{¤ ÄÄÄÄ
ÄÄÄ
ÄÄÄ
R
{¤ ÄÄÄÄ
ÄÄÄ
ÄÄÄ
Q
¾#??
???
????
?
S
2 CALCULO-λ 22
2.8 Teorema da Normalizacao
Sempre usar o redex mais a esquerda e mais externo
primeiro em uma reducao.
estrategia normal ≈ call by name ≈ eal ≈ menor ponto
fixo
2 CALCULO-λ 23
2.9 Representacao dos Conectivos da
Logica
if A then B else C
T ≡ λxλyx
((Ta)b) ≡ ((λxλyxa)b)⇒ (λyab)⇒ a
F ≡ λxλyy
((Fa)b) ≡ ((λxλyya)b)⇒ (λyyb)⇒ b
2 CALCULO-λ 26
2.10 Manipulacao de Listas
Usar F e T como seletores de elementos de listas
(if-then-else aninhados).
• T ≡ λxλyx (primeiro elemento da lista);
• FT ≡ λxλy(yλxλyx) ≡ λxλy(yT ) (segundo elemento
da lista);
• F 2T ≡ λxλy(yλxλy(yλxλyx)) ≡ λxλy(yFT )
(terceiro elemento da lista);
• F i+1T ≡ λxλy(yF iT ) (o (i+ 2)-esimo elemento).
2 CALCULO-λ 27
〈φ0, φ1, . . . , φn−1〉• 〈φ0〉 ≡ λx((xφ0)ψ) (ψ e o terminador de lista);
• 〈φ0, φ1〉 ≡ λx((xφ0)λx((xφ1)ψ)) ≡ λx((xφ0) 〈φ1〉);• 〈φ0, φ1, . . . , φn−1〉 ≡ λx((xφ0) 〈φ1, . . . , φn−1〉).
2 CALCULO-λ 28
(obtendo o primeiro elemento de uma lista)
(〈φ0〉T ) ≡ (λx((xφ0)ψ)λxλyx)⇒ ((λxλyxφ0)ψ)⇒⇒ (λyφ0ψ)⇒ φ0
2 CALCULO-λ 29
(obtendo o segundo elemento de uma lista)
(〈φ0, φ1, φ2〉FT ) ≡≡ (λx((xφ0)λx((xφ1)λx((xφ2)ψ)))λxλy(yλxλyx)︸ ︷︷ ︸)⇒⇒ ((λxλy(yλxλyx) φ0︸︷︷︸)λx((xφ1)λx((xφ2)ψ)))⇒⇒ (λy(yλxλyx)λx((xφ1)λx((xφ2)ψ))︸ ︷︷ ︸)⇒⇒ (λx((xφ1)λx((xφ2)ψ))λxλyx︸ ︷︷ ︸)⇒⇒ ((λxλyx φ1︸︷︷︸)λx((xφ2)ψ))⇒⇒ (λyφ1 λx((xφ2)ψ)︸ ︷︷ ︸)⇒ φ1
2 CALCULO-λ 30
2.11 Relacao com a Programacao
Funcional (LISP)
T ≡ CAR F ≡ CDR ψ ≡ nil
(CAR (CDR (CAR QUOTE((A B C) D))))=B
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︸ ︷︷ ︸
T︸ ︷︷ ︸FT
) ≡ FFT ≡ 2
2 CALCULO-λ 33
Da observacao que podemos escrever as expressoes-λ
para pred, +, −, mult etc. concluimos que
Calculo-λ ≈ maquina de Turing
2 CALCULO-λ 34
2.13 Igualdade do Calculo-λ
Definicao 3 (Reducao beta) (λxMA)⇒M [x← A].
Definicao 4 (Reducao alfa) λxM ⇒ λyM [x← y].
As reducoes alfa e beta induzem uma igualdade das
expressoes-λ (igualdade extensional).
= igualdade extensional;
≡ igualdade intencional (baseada na equivalencia de
abreviaturas).
2 CALCULO-λ 35
2.14 Sistema Axiomatico do Calculo-λ
Serve para julgar a igualdade extensional entre termos do
calculo-λ.
λ `M = N se e somente se existe uma deducao de
M = N .
2 CALCULO-λ 36
2.14.1 Axiomas/Regras de Inferencia
M = M
(λxMA) = M [x← A]
M = N
N = MM = N,N = K
M = KM = N
(MA) = (NA)
M = N
(FM) = (FN)
M = N
λxM = λxN
3 FUNCOES PARCIAIS RECURSIVAS 38
3 Funcoes Parciais Recursivas
• Propostas por Kleene (1936);
• Equivalentes ao formalismo Maquina de Turing e
linguagem-λ.
3 FUNCOES PARCIAIS RECURSIVAS 39
3.1 Funcoes e Funcionais
Definicao 5 Uma funcao parcial e uma relacao
f ⊆ A×B onde cada elemento de A se relaciona com,
no maximo, um elemento de B. O conjunto A e chamado
de domınio da funcao e o conjunto B de co-dominio.
Notacao: Denotamos a funcao f ⊆ A×B como
f : A→ B e diz-se que o tipo de f e A→ B. < a, b >∈ fe denotado por f(a) = b.
3 FUNCOES PARCIAIS RECURSIVAS 40
Exemplo 8 Seja a funcao f : N→ N, definida como
f(x) = x2. Assim, f(3) = 9.
3 FUNCOES PARCIAIS RECURSIVAS 41
• Uma funcao e total se ela esta definida para todo o
seu domınio;
• Uma funcao f : A→ B e parcial se
∃x ∈ A(6 ∃y ∈ Bf(x) = y). Exemplo: f : R→ R,
f(x) = 1/x. Observe que f(0) nao esta definido.
3 FUNCOES PARCIAIS RECURSIVAS 42
Definicao 6 Um funcional e uma funcao que possui
uma ou mais funcoes como argumentos.
Exemplo 9 Seja o funcional h : (N→ N)× N→ N, tal
que h(f, x) = f(x) e f : N→ N.
3 FUNCOES PARCIAIS RECURSIVAS 43
3.2 Definicao de Funcao Parcial
Recursiva
• Funcoes parciais recursivas sao funcoes construıdas
sobre funcoes basicas usando cinco tipos de
construcoes: composicao; condicional; recursao
primitiva, recursao while e minimizacao;
• Funcao Turing-computavel ≡ funcao parcial
recursiva;
• Funcao Turing computavel para maquina que sempre
para ≡ funcao recursiva (total).
3 FUNCOES PARCIAIS RECURSIVAS 44
3.2.1 Funcoes Basicas
Funcao sucessor s : N→ N, definida como
s(x) = x+ 1;
Funcao predecessor p : N→ N, definida como
p(x) =
x− 1 se x > 0
0 se x = 0;
Projecao pin : Nn → N, definida como
pin(x1, x2, . . . xn) = xi, para 1 ≤ i ≤ n.
3 FUNCOES PARCIAIS RECURSIVAS 45
3.2.2 Composicao Generalizada
Definicao 7 Sejam g, f1, f2, f3, . . . , fk funcoes parciaistais que g : Nk → N e fi : Nn → N para 1 ≤ i ≤ k. Afuncao parcial h, definida como
h(x1, x2, . . . , xn) = g(f1(x1, x2, . . . , xn), f2(x1, x2, . . . , xn), . . . , fk(x1, x2, . . . , xn))
e a composicao das funcoes g, f1, f2, f3, . . . , fk.
3 FUNCOES PARCIAIS RECURSIVAS 46
Exemplo 10 A funcao soma2 : N→ N, definida como
soma2(x) = s(s(x)), usa a construcao composicao e
resulta numa funcao que soma dois ao valor de seu
argumento.
3 FUNCOES PARCIAIS RECURSIVAS 47
3.2.3 Condicional
Definicao 8 A funcao cond : {V, F} × N× N→ N,
definida como
cond(b, g1, g2) =
g1 se b = V
g2 se b = F,
e a construcao condicional, onde b e uma expressao
logica, g1 e g2 sao dois valores quaisquer.
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.
3 FUNCOES PARCIAIS RECURSIVAS 50
3.2.4 Recursao Primitiva
Definicao 9 A funcao f : Nn+1 → N, definida como
f(x1, . . . , xn, y) = cond(y = 0, g(x1, . . . , xn), h(x1, . . . , xn, p(y),
f(x1, . . . , xn, p(y))))
e chamada de recursao primitiva. Na definicao,
h : Nn+2 → N e g : Nn → N sao duas funcoes quaisquer.
3 FUNCOES PARCIAIS RECURSIVAS 51
f(x1, . . . , xn, y) =
8<:
g(x1, . . . , xn) se y = 0
h(x1, . . . , xn, p(y), f(x1, . . . , xn, p(y))) se y 6= 0
3 FUNCOES PARCIAIS RECURSIVAS 52
Exemplo 12
zero(x) = cond(x = 0, p11(x), p
22(p(x), zero(p(x)))), define
uma funcao que resulta no valor constante zero.
3 FUNCOES PARCIAIS RECURSIVAS 53
3.2.5 Recursao While
Definicao 10 A funcao
f(x1, x2, . . . , xn) =
8<:
g(x1, . . . , xn) se xi = 0
f(h1(x1, . . . , xn), . . . , hn(x1, . . . , xn)) se xi > 0
e chamada de recursao while.
3 FUNCOES PARCIAIS RECURSIVAS 54
3.2.6 Minimizacao
A funcao f(x1, . . . , xn) = µy : h(x1, . . . , xn, y), definida
como o menor valor y tal que h(x1, . . . , xn, y) = 0 e para
todo z < y, h(xn, . . . , xn, z) esta definido, e chamada de
minimizacao.
3 FUNCOES PARCIAIS RECURSIVAS 55
3.2.7 Definicoes
Definicao 11 As funcoes while recursivas compreendem
a menor classe de funcoes que inclui as funcoes basicas e
e fechado sobre a composicao generalizada, condicional e
recursao while.
3 FUNCOES PARCIAIS RECURSIVAS 56
Definicao 12 As funcoes primitivas recursivas
compreendem a menor classe de funcoes que inclui as
funcoes basicas e e fechado sobre a composicao
generalizada e recursao primitiva.
3 FUNCOES PARCIAIS RECURSIVAS 57
Definicao 13 As funcoes parciais recursivas
compreendem a menor classe de funcoes que inclui as
funcoes basicas e e fechado sobre a composicao
generalizada, recursao primitiva e minimizacao.
3 FUNCOES PARCIAIS RECURSIVAS 58
funcoes Turing computaveis ≡ funcoes while recursivas ≡funcoes parciais recursivas
funcoes primitivas recursivas v funcoes parciais recursivas
3 FUNCOES PARCIAIS RECURSIVAS 59
Exemplo 13 (Funcao while recursiva)
soma(x, y) =
x se y = 0
s(soma(x, p(y))) se y > 0
3 FUNCOES PARCIAIS RECURSIVAS 60
Exercıcio 3 Escreva as seguintes funcoes while
recursivas:
1. sub(x, y) = x− y;2. mult(x, y) = x× y;3. fat(x) = x!.
3 FUNCOES PARCIAIS RECURSIVAS 61
Exemplo 14 Avaliacao da funcao parcial recursiva
f(x) = cond(x = 0, s(zero(x)), s(p22(p(x), f(p(x))))):
3 FUNCOES PARCIAIS RECURSIVAS 62
f(3) = cond(3 = 0, s(zero(3)), s(p22(p(3), f(p(3))))) =
= s(p22(p(3), f(p(3)))) = s(f(p(3))) =
= s(cond(p(3) = 0, s(zero(p(3))),
s(p22(p(p(3)), f(p(p(3)))))) =
= s(s(p22(p(p(3)), f(p(p(3)))))) = s(s(f(p(p(3))))) =
= s(s(cond(p(p(3))) = 0,
s(zero(p(p(3))))), s(p22(p(p(p(3)))),
f(p(p(p(3)))))))))) =
= s(s(s(p22(p(p(p(3)))), f(p(p(p(3)))))))))))) =
= s(s(s(f(zero(x))))) =
3 FUNCOES PARCIAIS RECURSIVAS 63
= s(s(s(cond(0 = 0, s(zero(0)), s(p22(p(0),
f(p(0)))))))) = s(s(s(s(zero(0)))))
Observe-se que “3” e uma abreviatura para
“s(s(s(zero(x)))).”
4 PONTOS FIXOS 64
4 Pontos Fixos
• Ja vimos uma interpretacao computacional das
funcoes recursivas;
• Pontos fixos: Interpretacao matematica das funcoes
recursivas.
4 PONTOS FIXOS 65
4.1 Definicoes
Definicao 14 A funcao ⊥ : N→ N, definida como
⊥(x) = undef, e chamada de funcao totalmente
indefinida.
Definicao 15 A relacao v sobre F × F , onde F e o
conjunto das funcoes sobre N→ N, definida como f1 v f2
se f1(x) = y → f2(x) = y, onde f1, f2 ∈ F , e uma relacao
de ordem parcial sobre F .
Observacao: ⊥ v f , para qualquer f ∈ F .
4 PONTOS FIXOS 66
Definicao 16 Um conjunto de funcoes {fi|i ≥ 0} e
chamado de cadeia se f1 v f2 v f3 v · · · .Definicao 17 Uma funcao f e chamada ponto fixo do
funcional F se F (f) = f .
4 PONTOS FIXOS 67
Teorema 2 O ponto fixo f0 do funcional F e o supremo
da cadeia F i(⊥), f0 = t{F i(⊥)|i ≥ 0}.Observacoes:
• F i = F ◦ F i−1;
• F 0(⊥) v F 1(⊥) v F 2(⊥) v · · · ;• Identificamos o ponto fixo do funcional com a funcao
computada pelo programa associado a este funcional.
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))