Funções Recursivas e Cálculo Lambda

69
1 Fun¸ oes Parciais Recursivas e C´ alculo-λ Carlos A. P. Campani 4 de novembro de 2008

description

Lâminas para um curso sobre funções recursivas e cálculo lambda (teoria da computação)

Transcript of Funções Recursivas e Cálculo Lambda

1

Funcoes Parciais Recursivas e Calculo-λ

Carlos A. P. Campani

4 de novembro de 2008

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-λ 8

Exercıcio 1 Determine as expressoes validas:

1. λxx;

2. λx;

3. λxλyx.

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-λ 10

Exemplo 1 (xλxλy(xy))

Primeira ocorrencia de x e livre, a segunda e limitada.

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-λ 24

not ≡ λx((xF )T )

Exemplo 7 (notF )

(λx((xF )T )F )⇒ ((FF )T )⇒ T

2 CALCULO-λ 25

and ≡ λxλy((xy)F )

or ≡ λxλy((xT )y)

→≡ λxλy((xy)T )

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-λ 31

2.12 Representacao de Numeros Inteiros

i ≡ F iT

0 ≡ T

1 ≡ FT

2 ≡ FFT

...

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

2 CALCULO-λ 37

Calculo-λ=linguagem-λ+sistema axiomatico

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 48

cond(b, g1, g2) = se b entao g1 senao g2

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))

4 PONTOS FIXOS 69

Exercıcio 4 Calcular F 3(⊥).

Observacao: t{F i(⊥)|i ≥ 0} = fatorial.