A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.

Apresentações semelhantes


Apresentação em tema: "04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB."— Transcrição da apresentação:

1 04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB

2 -calculus 04(c) 2007 Gustavo Motta 2 Sumário Definições recursivas e o combinador Y

3 -calculus 04(c) 2007 Gustavo Motta 3 Definições recursivas e o combinador Y Definições recursivas Definição fácil em linguagens de alto nível Devem ser definíveis no -calculus Solução formal para equações recursivas Combinador Y (Y)E (E)(Y)E para toda expressão- E. Isso implica que (Y)E (E)(E)...(E)(Y)E para um número qualquer de iterações em E Questão Existe uma expressão- fechada com essa propriedade?

4 -calculus 04(c) 2007 Gustavo Motta 4 Definições recursivas e o combinador Y Resposta Sim. A partir da expressão- ( x.(x)x) x.(x)x que se reduz para ela mesma, ad infinitum, acrescentamos um prefixo da forma (E) y.( x.(y)(x)x) x.(y)(x)x e então ( y.( x.(y)(x)x) x.(y)(x)x)E ( x.(E)(x)x) x.(E)(x)x que se reduz para (E)( x.(E)(x)x) x.(E)(x)x

5 -calculus 04(c) 2007 Gustavo Motta 5 Definições recursivas e o combinador Y Logo O combinador Y é definidor por Y y.( x.(y)(x)x) x.(y)(x)x É uma função de alta ordem que computa o ponto fixo de outras funções ponto fixo Usado para encontrar solução para definições recursivas da forma f = (E)f com f não ocorrendo livre em E

6 -calculus 04(c) 2007 Gustavo Motta 6 Definições recursivas e o combinador Y A solução desta equação f = (E)f é o ponto fixo da função de alta ordem E e pode ser obtida substituindo-se f por (Y)E, obtendo (Y)E = (E)(Y)E e essa equação é verdadeira para todo E pela definição de Y Y passa a ser um achador universal de pontos fixos, denominado de combinador de ponto fixo

7 -calculus 04(c) 2007 Gustavo Motta 7 Definições recursivas e o combinador Y Exemplo – solução para função fatorial (fact)n = if n = 0 then 1 else ((*)n)(fact)(pred)n em notação- (fact)n = (((zero)n)1)((*)n)(fact)(pred)n que é equivalente a fact = n.(((zero)n)1)((*)n)(fact)(pred)n Agora, abstraindo a ocorrência livre de fact fact = ( f. n.(((zero)n)1)((*)n)(f)(pred)n)fact Temos que fact é o ponto fixo da expressão f. n.(((zero)n)1)((*)n)(f)(pred)n

8 -calculus 04(c) 2007 Gustavo Motta 8 Definições recursivas e o combinador Y Exemplo – solução para função fatorial Logo, a função fatorial é definida pelo combinador fact = (Y) f. n.(((zero)n)1)((*)n)(f)(pred)n Técnica aplicável a toda definição recursiva Independe da forma da expressão do lado direito O -cálculo possui uma técnica universal de remoção de recursividade Aplicável até quando não há solução realística x = x + 1 aplicando-se a técnica, tem-se x = (Y) x.((+)x)1, que redunda num número infinito de reduções, por não ter forma normal

9 -calculus 04(c) 2007 Gustavo Motta 9 Definições recursivas e o combinador Y Exemplo – aplicação da função fatorial ((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)5 (( f. n.(((zero)n)1)((*)n)(f)(pred)n)(Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)5 ( n.(((zero)n)1)((*)n)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)n)5 (((zero)5)1)((*)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)5 (((zero)5)1)((*)5)(( f. n.(((zero)n)1)((*)n)(f)(pred)n)(Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)5 (((zero)5)1)((*)5)( n.(((zero)n)1)((*)n)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)n)(pred)5 (((zero)5)1)((*)5)(((zero)(pred)5)1)((*)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)(pred)5 ((false)1)((*)5)((false)1)((*)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)(pred)5 ((*)5)((*)(pred)5)(( f. n.(((zero)n)1)((*)n)(f)(pred)n)(Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)(pred)5 ((*)5)((*)(pred)5)( n.(((zero)n)1)((*)n)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)n)(pred)(pred)5 ((*)5)((*)(pred)5)(((zero)(pred)(pred)5)1)((*)(pred)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred) (pred)(pred)5 ((*)5)((*)(pred)5)((false)1)((*)(pred)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)(pred)(pred)5

10 -calculus 04(c) 2007 Gustavo Motta 10 Definições recursivas e o combinador Y Exemplo – aplicação da função fatorial ((*)5)((*)(pred)5)((*)(pred)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)(( f. n.(((zero)n)1)((*)n)(f)(pred)n)(Y) f. n.(((zero)n)1)((*)n)(f)(pre d)n)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)( n.(((zero)n)1)((*)n)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)n)( pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)(((zero)(pred)(pred)(pred)5)1)((*)(pred)(pred)(pred)5)((Y) f. n.(((z ero)n)1)((*)n)(f)(pred)n)(pred)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)((false)1)((*)(pred)(pred)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred )n)(pred)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)((*)(pred)(pred)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred) (pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)((*)(pred)(pred)(pred)5)(( f. n.(((zero)n)1)((*)n)(f)(pred)n)(Y) f. n. (((zero)n)1)((*)n)(f)(pred)n)(pred)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)((*)(pred)(pred)(pred)5)( n.(((zero)n)1)((*)n)((Y) f. n.(((zero)n)1)(( *)n)(f)(pred)n)(pred)n)(pred)(pred)(pred)(pred)5

11 -calculus 04(c) 2007 Gustavo Motta 11 Definições recursivas e o combinador Y Exemplo – aplicação da função fatorial ((*)5)((*)(pred)5)((*)(pred)(pred)5)((*)(pred)(pred)(pred)5)(((zero)(pred)(pred)(pred)(pred)5)1)((*) (pred)(pred)(pred)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)(pred)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)((*)(pred)(pred)(pred)5)((false)1)((*)(pred)(pred)(pred)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)(pred)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)((*)(pred)(pred)(pred)5)((*)(pred)(pred)(pred)(pred)5)((Y) f. n.((( zero)n)1)((*)n)(f)(pred)n)(pred)(pred)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)((*)(pred)(pred)(pred)5)((*)(pred)(pred)(pred)(pred)5)(( f. n.(((zer o)n)1)((*)n)(f)(pred)n)(Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)(pred)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)((*)(pred)(pred)(pred)5)((*)(pred)(pred)(pred)(pred)5)( n.(((zero)n )1)((*)n)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred)n)(pred)(pred)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)((*)(pred)(pred)(pred)5)((*)(pred)(pred)(pred)(pred)5)(((zero)(pred )(pred)(pred)(pred)(pred)5)1)((*)(pred)(pred)(pred)(pred)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n )(pred) (pred)(pred)(pred)(pred)(pred)5 ((*)5)((*)(pred)5)((*)(pred)(pred)5)((*)(pred)(pred)(pred)5)((*)(pred)(pred)(pred)(pred)5)((true)1)((*)( pred)(pred)(pred)(pred)(pred)5)((Y) f. n.(((zero)n)1)((*)n)(f)(pred)n)(pred) (pred)(pred)(pred)(pred)(pred)5

12 -calculus 04(c) 2007 Gustavo Motta 12 Definições recursivas e o combinador Y Exemplo – aplicação da função fatorial ((*)5)((*)(pred)5)((*)(pred)(pred)5)((*)(pred)(pred)(pred)5)((*)(pred)(pred)(pred)(pred)5)1 ((*)5)((*)4)((*)(pred)4)((*)(pred)(pred)4)((*)(pred)(pred)(pred)4)1 ((*)5)((*)4)((*)3)((*)(pred)3)((*)(pred)(pred)3)1 ((*)5)((*)4)((*)3)((*)2)((*)(pred)2)1 ((*)5)((*)4)((*)3)((*)2)((*)1)1 ((*)5)((*)4)((*)3)((*)2)1 ((*)5)((*)4)((*)3)2 ((*)5)((*)4)6 ((*)5)24 120

13 -calculus 04(c) 2007 Gustavo Motta 13 Definições recursivas e o combinador Y O combinador Y converte toda recursividade em iteração, mas não é capaz por si mesmo de terminar a sucessão de iterações Paradoxo de Curry As propriedades lógicas usuais do operador (implica) são inconsistentes com a igualdade- Prova O operador deve satisfazer o axioma (P (P Q)) (P Q) e a regra de inferência modus ponens se ambos P e (P Q) são verdadeiros, então Q também é

14 -calculus 04(c) 2007 Gustavo Motta 14 Definições recursivas e o combinador Y Paradoxo de Curry Considere que imp denota a versão curried de O axioma anterior pode ser escrito como ((imp)((imp)P)((imp)P)Q)((imp)P)Q Para um Q arbitrário, pode-se definir N como N = x.((imp)x)((imp)x)Q sendo P = (Y)N o ponto fixo de N. Então, obtém-se ((imp)P)((imp)P)Q = (N)P = (N)(Y)N = P

15 -calculus 04(c) 2007 Gustavo Motta 15 Definições recursivas e o combinador Y Paradoxo de Curry Pela substituição no axioma, tem-se ((imp)((imp)P)((imp)P)Q)((imp)P)Q = ((imp)P)((imp)P)Q = P Agora, como o axioma deve ser verdadeiro para quaisquer P e Q P = (Y)N = true deve ser o caso para qualquer Q, usado em N Mas, a partir do modus ponens e do axioma, pode- se concluir que Q = true para um Q arbitrário, o que é um paradoxo

16 -calculus 04(c) 2007 Gustavo Motta 16 Definições recursivas e o combinador Y Observações A aplicabilidade universal do combinador Y não oferece solução prática para toda equação de ponto fixo x = 3x – 10 que é x = ((–)((*)3)x)10 então, podemos obter x = ( x.((–)((*)3)x)10)x e a forma explícita x = (Y) x.((–)((*)3)x)10

17 -calculus 04(c) 2007 Gustavo Motta 17 Definições recursivas e o combinador Y Observações O lado esquerdo da equação x = (Y) x.((–)((*)3)x)10 reduz para ( x.((–)((*)3)x)10)(Y) x.((–)((*)3)x)10 que reduz para ((–)((*)3)(Y) x.((–)((*)3)x)10)10 e assim indefinidamente... O lado direito não tem forma normal, logo não se pode obter um resultado finito desse desenvolvimento infinito

18 -calculus 04(c) 2007 Gustavo Motta 18 Definições recursivas e o combinador Y Observações Entretanto, numa recursividade bem fundada, a iteração gerada pelo combinador Y terminará precisamente no momento certo É o caso da forma explícita da função fatorial, graças as presenças da segunda abstração, com prefixo n., e do predicado zero Infelizmente, não é decidível, em geral, se uma definição recursiva é computável num número finito de passos (i. e., tem uma forma normal), quando aplicada a um certo argumento

19 -calculus 04(c) 2007 Gustavo Motta 19 Definições recursivas e o combinador Y Existem outros combinadores de ponto fixo, além do combinador Y, como T ( x. y.(y)((x)x)y) x. y.(y)((x)x)y proposto por Turing. É fácil observar que (T)E (E)(T)E para toda expressão- E. De fato, existe uma seqüência infinita de combinadores de ponto fixo Y 1 Y Y 2 (Y)G, em geral, Y n + 1 (Y n )G onde G x. y.(y)(x)y

20 -calculus 04(c) 2007 Gustavo Motta 20 Bibliografia Revesz, G. E. Lambda-Calculus, Combinators, and Functional Programming. Cambridge University Press, 1988.


Carregar ppt "04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB."

Apresentações semelhantes


Anúncios Google