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
                                                                                D4
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.

Funções Recursivas e Cálculo Lambda

  • 1.
    1 Fun¸oes Parciais Recursivase C´lculo-λ c˜ a Carlos A. P. Campani 4 de novembro de 2008
  • 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)
  • 13.
    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).
  • 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
  • 27.
    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 ).
  • 28.
    2 ´ CALCULO-λ 28 (obtendo o primeiro elemento de uma lista) ( φ0 T ) ≡ (λx((xφ0 )ψ)λxλyx) ⇒ ((λxλyxφ0 )ψ) ⇒ ⇒ (λyφ0 ψ) ⇒ φ0
  • 29.
    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
  • 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
  • 58.
    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˜
  • 59.
    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
  • 60.
    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!.
  • 61.
    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
  • 62.
    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))))) =
  • 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.