SlideShare une entreprise Scribd logo
1  sur  69
Télécharger pour lire hors ligne
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.

Contenu connexe

Tendances

Slides da aula sobre Coordenadas Polares e Integrais Duplas em Coordenadas Po...
Slides da aula sobre Coordenadas Polares e Integrais Duplas em Coordenadas Po...Slides da aula sobre Coordenadas Polares e Integrais Duplas em Coordenadas Po...
Slides da aula sobre Coordenadas Polares e Integrais Duplas em Coordenadas Po...Izabela Marques
 
Logaritmo e exponencial
Logaritmo e exponencialLogaritmo e exponencial
Logaritmo e exponencialdidicadoida
 
Aula 8 inducao matematica
Aula 8   inducao matematicaAula 8   inducao matematica
Aula 8 inducao matematicawab030
 
Congruências Quadráticas
Congruências QuadráticasCongruências Quadráticas
Congruências QuadráticasLuciana Martino
 
Números complexos
Números complexos Números complexos
Números complexos Jorge Barros
 
Estudo Geral das Funções Trigonométricas
Estudo Geral das Funções TrigonométricasEstudo Geral das Funções Trigonométricas
Estudo Geral das Funções TrigonométricasGabriela Maretti
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em PrologNatã Melo
 
Semelhança de triângulos
Semelhança de triângulosSemelhança de triângulos
Semelhança de triângulosELIZEU GODOY JR
 
Exercicios-resolvidos-de-calculo-i (1)
Exercicios-resolvidos-de-calculo-i (1)Exercicios-resolvidos-de-calculo-i (1)
Exercicios-resolvidos-de-calculo-i (1)Gi Olli
 
PUNTO DE UNA RECTA QUE EQUIDISTA DE DOS PLANOS
PUNTO DE UNA RECTA QUE EQUIDISTA DE DOS PLANOSPUNTO DE UNA RECTA QUE EQUIDISTA DE DOS PLANOS
PUNTO DE UNA RECTA QUE EQUIDISTA DE DOS PLANOSJose Gonzalez Garcia
 

Tendances (20)

Cônicas - Elipse
Cônicas - ElipseCônicas - Elipse
Cônicas - Elipse
 
Slides da aula sobre Coordenadas Polares e Integrais Duplas em Coordenadas Po...
Slides da aula sobre Coordenadas Polares e Integrais Duplas em Coordenadas Po...Slides da aula sobre Coordenadas Polares e Integrais Duplas em Coordenadas Po...
Slides da aula sobre Coordenadas Polares e Integrais Duplas em Coordenadas Po...
 
Sistema cartesiano ortogonal
Sistema cartesiano ortogonalSistema cartesiano ortogonal
Sistema cartesiano ortogonal
 
Logaritmo e exponencial
Logaritmo e exponencialLogaritmo e exponencial
Logaritmo e exponencial
 
05a-integrais de linha
05a-integrais de linha05a-integrais de linha
05a-integrais de linha
 
Aula 8 inducao matematica
Aula 8   inducao matematicaAula 8   inducao matematica
Aula 8 inducao matematica
 
Congruências Quadráticas
Congruências QuadráticasCongruências Quadráticas
Congruências Quadráticas
 
Números complexos
Números complexos Números complexos
Números complexos
 
Función dominio y recorrido-ejercicios
Función   dominio y recorrido-ejerciciosFunción   dominio y recorrido-ejercicios
Función dominio y recorrido-ejercicios
 
Sistemas lineares
Sistemas linearesSistemas lineares
Sistemas lineares
 
Potenciação e radiciação
Potenciação e radiciaçãoPotenciação e radiciação
Potenciação e radiciação
 
ΠΛΗ31 ΜΑΘΗΜΑ 3.4
ΠΛΗ31 ΜΑΘΗΜΑ 3.4ΠΛΗ31 ΜΑΘΗΜΑ 3.4
ΠΛΗ31 ΜΑΘΗΜΑ 3.4
 
Estudo Geral das Funções Trigonométricas
Estudo Geral das Funções TrigonométricasEstudo Geral das Funções Trigonométricas
Estudo Geral das Funções Trigonométricas
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em Prolog
 
Trigonometria 2
Trigonometria  2Trigonometria  2
Trigonometria 2
 
Equacoes do 2-_grau
Equacoes do 2-_grauEquacoes do 2-_grau
Equacoes do 2-_grau
 
Semelhança de triângulos
Semelhança de triângulosSemelhança de triângulos
Semelhança de triângulos
 
Exercicios-resolvidos-de-calculo-i (1)
Exercicios-resolvidos-de-calculo-i (1)Exercicios-resolvidos-de-calculo-i (1)
Exercicios-resolvidos-de-calculo-i (1)
 
Polinômios
PolinômiosPolinômios
Polinômios
 
PUNTO DE UNA RECTA QUE EQUIDISTA DE DOS PLANOS
PUNTO DE UNA RECTA QUE EQUIDISTA DE DOS PLANOSPUNTO DE UNA RECTA QUE EQUIDISTA DE DOS PLANOS
PUNTO DE UNA RECTA QUE EQUIDISTA DE DOS PLANOS
 

Similaire à Funções Recursivas e Cálculo Lambda

[Alexandre] 2. Geometria
[Alexandre] 2. Geometria[Alexandre] 2. Geometria
[Alexandre] 2. Geometrialapodcc
 
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#10Ismar Silveira
 
O que é logaritmo matematica
O que é logaritmo matematicaO que é logaritmo matematica
O que é logaritmo matematicagustavo-516
 
000004 logaritmo
000004 logaritmo000004 logaritmo
000004 logaritmojosewammes
 
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]Elton Ribeiro da Cruz
 
Anexo ma aula_fd_unidade1
Anexo ma aula_fd_unidade1Anexo ma aula_fd_unidade1
Anexo ma aula_fd_unidade1Carmem Almeida
 
aula02-clculodelimites-versocorrigida-121028114252-phpapp02.pdf
aula02-clculodelimites-versocorrigida-121028114252-phpapp02.pdfaula02-clculodelimites-versocorrigida-121028114252-phpapp02.pdf
aula02-clculodelimites-versocorrigida-121028114252-phpapp02.pdfEfraimAlmeida1
 
Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellSérgio Souza Costa
 

Similaire à 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
 

Plus de Carlos Campani

Técnicas de integração
Técnicas de integraçãoTécnicas de integração
Técnicas de integraçãoCarlos Campani
 
Lista de exercícios 3
Lista de exercícios 3Lista de exercícios 3
Lista de exercícios 3Carlos Campani
 
Lista de exercícios 2
Lista de exercícios 2Lista de exercícios 2
Lista de exercícios 2Carlos Campani
 
Aplicações da integração
Aplicações da integraçãoAplicações da integração
Aplicações da integraçãoCarlos Campani
 
Lista de exercícios 1
Lista de exercícios 1Lista de exercícios 1
Lista de exercícios 1Carlos Campani
 
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ÇÃOCarlos Campani
 
PROPRIEDADES DAS FUNÇÕES
PROPRIEDADES DAS FUNÇÕESPROPRIEDADES DAS FUNÇÕES
PROPRIEDADES DAS FUNÇÕESCarlos Campani
 
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áficoCarlos Campani
 
Solução de equações modulares
Solução de equações modularesSolução de equações modulares
Solução de equações modularesCarlos Campani
 
Equações polinomiais
Equações polinomiaisEquações polinomiais
Equações polinomiaisCarlos Campani
 
Instruções de Aprendiz
Instruções de AprendizInstruções de Aprendiz
Instruções de AprendizCarlos Campani
 
Á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...Carlos Campani
 

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

Dernier

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.docx2m Assessoria
 
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 exemploDanilo Pinotti
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
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.docx2m Assessoria
 
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.docx2m Assessoria
 
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 CalisthenicsDanilo Pinotti
 

Dernier (6)

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
 
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
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
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 - 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
 
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
 

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.