Funções Recursivas e Cálculo Lambda
Upcoming SlideShare
Loading in...5
×
 

Funções Recursivas e Cálculo Lambda

on

  • 6,553 views

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

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

Statistics

Views

Total Views
6,553
Views on SlideShare
6,510
Embed Views
43

Actions

Likes
2
Downloads
131
Comments
0

1 Embed 43

http://www.slideshare.net 43

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 1 Fun¸oes Parciais Recursivas e C´lculo-λ c˜ a Carlos A. P. Campani 4 de novembro de 2008
    • 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
    • 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
    • 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
    • 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).
    • 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
    • 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
    • 2 ´ CALCULO-λ 8 Exerc´ ıcio 1 Determine as express˜es v´lidas: o a 1. λxx; 2. λx; 3. λxλyx.
    • 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
    • 2 ´ CALCULO-λ 10 Exemplo 1 (xλxλy(xy)) Primeira ocorrˆncia de x ´ livre, a segunda ´ limitada. e e e
    • 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)).
    • 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)
    • 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 redu¸˜es: co 1. (λz(λyzx)(xx)) 2. (λxxλxx) 3. (λx(xx)λyy(xx))
    • 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
    • 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
    • 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
    • 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)
    • 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 D"4
    • 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
    • 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
    • 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
    • 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
    • 2 ´ CALCULO-λ 24 not ≡ λx((xF )T ) Exemplo 7 (notF ) (λx((xF )T )F ) ⇒ ((F F )T ) ⇒ T
    • 2 ´ CALCULO-λ 25 and ≡ λxλy((xy)F ) or ≡ λxλy((xT )y) →≡ λxλy((xy)T )
    • 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
    • 2 ´ CALCULO-λ 27 φ0 , φ1 , . . . , φn−1 • φ0 ≡ λx((xφ0 )ψ) (ψ ´ o terminador de lista); e • φ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 F T ) ≡ ≡ (λ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 Rela¸˜o com a Programa¸˜o ca ca Funcional (LISP) T ≡ CAR F ≡ CDR ψ ≡ nil (CAR (CDR (CAR QUOTE((A B C) D))))=B
    • 2 ´ CALCULO-λ 31 2.12 Representa¸˜o de N´ meros Inteiros ca u 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) ≡ F F T ≡ 2 T FT
    • 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
    • 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).
    • 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.
    • 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
    • 2 ´ CALCULO-λ 37 C´lculo-λ=linguagem-λ+sistema axiom´tico a a
    • 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-λ.
    • 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
    • 3 ¸˜ FUNCOES PARCIAIS RECURSIVAS 40 Exemplo 8 Seja a fun¸˜o f : N → N, definida como ca f (x) = x2 . Assim, f (3) = 9.
    • 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
    • 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.
    • 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˜
    • 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
    • 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
    • 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.
    • 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
    • 3 ¸˜ FUNCOES PARCIAIS RECURSIVAS 48 cond(b, g1 , g2 ) = se b ent˜o g1 sen˜o g2 a a
    • 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 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 3 ¸˜ FUNCOES PARCIAIS RECURSIVAS 58 fun¸oes Turing comput´veis ≡ fun¸oes while recursivas ≡ c˜ a c˜ fun¸oes parciais recursivas c˜ fun¸oes primitivas recursivas c˜ fun¸oes parciais recursivas c˜
    • 3 ¸˜ FUNCOES PARCIAIS RECURSIVAS 59 Exemplo 13 (Fun¸˜o while recursiva) ca   x se y = 0 soma(x, y) =  s(soma(x, p(y))) se y > 0
    • 3 ¸˜ FUNCOES PARCIAIS RECURSIVAS 60 Exerc´ ıcio 3 Escreva as seguintes fun¸˜es while co recursivas: 1. sub(x, y) = x − y; 2. mult(x, y) = x × y; 3. fat(x) = x!.
    • 3 ¸˜ FUNCOES PARCIAIS RECURSIVAS 61 Exemplo 14 Avalia¸˜o da fun¸˜o parcial recursiva ca ca f(x) = cond(x = 0, s(zero(x)), s(p2 (p(x), f (p(x))))): 2
    • 3 ¸˜ FUNCOES PARCIAIS RECURSIVAS 62 f(3) = cond(3 = 0, s(zero(3)), s(p2 (p(3), f (p(3))))) = 2 = s(p2 (p(3), f (p(3)))) = s(f (p(3))) = 2 = s(cond(p(3) = 0, s(zero(p(3))), s(p2 (p(p(3)), f (p(p(3)))))) = 2 = s(s(p2 (p(p(3)), f (p(p(3)))))) = s(s(f (p(p(3))))) = 2 = s(s(cond(p(p(3))) = 0, s(zero(p(p(3))))), s(p2 (p(p(p(3)))), 2 f (p(p(p(3)))))))))) = = s(s(s(p2 (p(p(p(3)))), f (p(p(p(3)))))))))))) = 2 = s(s(s(f (zero(x))))) =
    • 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)))).”
    • 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.
    • 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.
    • 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 .
    • 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.
    • 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 ıcio 4 Calcular F 3 (⊥). Exerc´ Observa¸˜o: ca {F i (⊥)|i ≥ 0} = fatorial.