SlideShare una empresa de Scribd logo
1 de 69
Descargar para leer sin conexión
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.

Más contenido relacionado

La actualidad más candente

Teoria de la medida
Teoria de la medidaTeoria de la medida
Teoria de la medida
jhorkham
 
ΑΕΠΠ: 7ο Φύλλο Εργασίας
ΑΕΠΠ: 7ο Φύλλο ΕργασίαςΑΕΠΠ: 7ο Φύλλο Εργασίας
ΑΕΠΠ: 7ο Φύλλο Εργασίας
Nikos Michailidis
 

La actualidad más candente (17)

19 convolução em sinais contínuos
19 convolução em sinais contínuos19 convolução em sinais contínuos
19 convolução em sinais contínuos
 
Teoria de la medida
Teoria de la medidaTeoria de la medida
Teoria de la medida
 
Slides sobre Matematica Financeira - UERJ.pdf
Slides sobre Matematica Financeira - UERJ.pdfSlides sobre Matematica Financeira - UERJ.pdf
Slides sobre Matematica Financeira - UERJ.pdf
 
MODELOS MATEMATICOS (FLUJO).pptx
MODELOS MATEMATICOS (FLUJO).pptxMODELOS MATEMATICOS (FLUJO).pptx
MODELOS MATEMATICOS (FLUJO).pptx
 
Reciproca Teoremei lui Thales
Reciproca Teoremei lui ThalesReciproca Teoremei lui Thales
Reciproca Teoremei lui Thales
 
Variável aleatória1
Variável  aleatória1Variável  aleatória1
Variável aleatória1
 
Laboratorio 1 cruz_jose
Laboratorio 1 cruz_joseLaboratorio 1 cruz_jose
Laboratorio 1 cruz_jose
 
Signals and Systems 1.pptx
Signals and Systems 1.pptxSignals and Systems 1.pptx
Signals and Systems 1.pptx
 
Función de Transferencia y Diagrama de Bloques
Función de Transferencia y Diagrama de BloquesFunción de Transferencia y Diagrama de Bloques
Función de Transferencia y Diagrama de Bloques
 
5ª aula pratica com inversor de frequencia
5ª aula pratica com inversor de frequencia5ª aula pratica com inversor de frequencia
5ª aula pratica com inversor de frequencia
 
101545233 exercicios-resolvidos-de-sinais-e-sistemas
101545233 exercicios-resolvidos-de-sinais-e-sistemas101545233 exercicios-resolvidos-de-sinais-e-sistemas
101545233 exercicios-resolvidos-de-sinais-e-sistemas
 
Aula 3 mapa de veitch-karnaugh.
Aula 3  mapa de veitch-karnaugh.Aula 3  mapa de veitch-karnaugh.
Aula 3 mapa de veitch-karnaugh.
 
レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成レプリカ交換モンテカルロ法で乱数の生成
レプリカ交換モンテカルロ法で乱数の生成
 
Exercícios po3
Exercícios po3Exercícios po3
Exercícios po3
 
Funcion arcoseno en matlab
Funcion arcoseno en matlabFuncion arcoseno en matlab
Funcion arcoseno en matlab
 
ΑΕΠΠ: 7ο Φύλλο Εργασίας
ΑΕΠΠ: 7ο Φύλλο ΕργασίαςΑΕΠΠ: 7ο Φύλλο Εργασίας
ΑΕΠΠ: 7ο Φύλλο Εργασίας
 
PDS Unidad 2 Sección 2.5: Sistemas discretos LTI
PDS Unidad 2 Sección 2.5: Sistemas discretos LTIPDS Unidad 2 Sección 2.5: Sistemas discretos LTI
PDS Unidad 2 Sección 2.5: Sistemas discretos LTI
 

Similar a Funções Recursivas e Cálculo Lambda

Similar a Funções Recursivas e Cálculo Lambda (20)

Calculo1 aula07
Calculo1 aula07Calculo1 aula07
Calculo1 aula07
 
Calculo1 aula07
Calculo1 aula07Calculo1 aula07
Calculo1 aula07
 
[Alexandre] 2. Geometria
[Alexandre] 2. Geometria[Alexandre] 2. Geometria
[Alexandre] 2. Geometria
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10
 
Lista de integração
Lista de integraçãoLista de integração
Lista de integração
 
O que é logaritmo matematica
O que é logaritmo matematicaO que é logaritmo matematica
O que é logaritmo matematica
 
Funções 1
Funções 1Funções 1
Funções 1
 
Calculo1 aula04
Calculo1 aula04Calculo1 aula04
Calculo1 aula04
 
Calculo1 aula04
Calculo1 aula04Calculo1 aula04
Calculo1 aula04
 
Função logarítmica
Função logarítmicaFunção logarítmica
Função logarítmica
 
000004 logaritmo
000004 logaritmo000004 logaritmo
000004 logaritmo
 
Limites2
Limites2Limites2
Limites2
 
Apostila 3 funções
Apostila 3 funçõesApostila 3 funções
Apostila 3 funções
 
Sistemas dinâmicos caóticos [com minha participação]
Sistemas dinâmicos caóticos [com minha participação]Sistemas dinâmicos caóticos [com minha participação]
Sistemas dinâmicos caóticos [com minha participação]
 
Anexo ma aula_fd_unidade1
Anexo ma aula_fd_unidade1Anexo ma aula_fd_unidade1
Anexo ma aula_fd_unidade1
 
aula02-clculodelimites-versocorrigida-121028114252-phpapp02.pdf
aula02-clculodelimites-versocorrigida-121028114252-phpapp02.pdfaula02-clculodelimites-versocorrigida-121028114252-phpapp02.pdf
aula02-clculodelimites-versocorrigida-121028114252-phpapp02.pdf
 
Mat limites 001
Mat limites  001Mat limites  001
Mat limites 001
 
Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo Haskell
 
Aula4 introbusto
Aula4 introbustoAula4 introbusto
Aula4 introbusto
 
Revisaoestatistica
RevisaoestatisticaRevisaoestatistica
Revisaoestatistica
 

Más de Carlos Campani (20)

Técnicas de integração
Técnicas de integraçãoTécnicas de integração
Técnicas de integração
 
Lista de exercícios 3
Lista de exercícios 3Lista de exercícios 3
Lista de exercícios 3
 
Lista de exercícios 2
Lista de exercícios 2Lista de exercícios 2
Lista de exercícios 2
 
Aplicações da integração
Aplicações da integraçãoAplicações da integração
Aplicações da integração
 
Lista de exercícios 1
Lista de exercícios 1Lista de exercícios 1
Lista de exercícios 1
 
Integral
IntegralIntegral
Integral
 
Semana 14
Semana 14 Semana 14
Semana 14
 
Semana 13
Semana 13 Semana 13
Semana 13
 
Semana 12
Semana 12Semana 12
Semana 12
 
Semana 11
Semana 11Semana 11
Semana 11
 
Semana 10
Semana 10 Semana 10
Semana 10
 
Semana 9
Semana 9 Semana 9
Semana 9
 
ANÁLISE COMPLETA DE UMA FUNÇÃO
ANÁLISE COMPLETA DE UMA FUNÇÃOANÁLISE COMPLETA DE UMA FUNÇÃO
ANÁLISE COMPLETA DE UMA FUNÇÃO
 
PROPRIEDADES DAS FUNÇÕES
PROPRIEDADES DAS FUNÇÕESPROPRIEDADES DAS FUNÇÕES
PROPRIEDADES DAS FUNÇÕES
 
Funções, suas propriedades e gráfico
Funções, suas propriedades e gráficoFunções, suas propriedades e gráfico
Funções, suas propriedades e gráfico
 
Solução de equações modulares
Solução de equações modularesSolução de equações modulares
Solução de equações modulares
 
Equações polinomiais
Equações polinomiaisEquações polinomiais
Equações polinomiais
 
PROVAS DE TEOREMAS
PROVAS DE TEOREMASPROVAS DE TEOREMAS
PROVAS DE TEOREMAS
 
Instruções de Aprendiz
Instruções de AprendizInstruções de Aprendiz
Instruções de Aprendiz
 
Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...
Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...
Álgebra básica, potenciação, notação científica, radiciação, polinômios, fato...
 

Último

Último (8)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Funções Recursivas e Cálculo Lambda

  • 1. 1 Fun¸oes Parciais Recursivas e 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.