1 / 28

O  Cálculo como Linguagem de Programação

O  Cálculo como Linguagem de Programação. Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco - Recife - Brasil. O  -Cálculo: Sintaxe. < expr  ::   variável  |  expr  expr  aplicação

kamin
Download Presentation

O  Cálculo como Linguagem de Programação

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. O Cálculo como Linguagem de Programação Rafael Dueire Lins Departamento de Informática Universidade Federal de Pernambuco - Recife - Brasil

  2. O -Cálculo: Sintaxe <expr ::variável | exprexpr aplicação | variável.expr abstração| constante abc = (ab)caplicação é associativa à esquerda

  3. O -Cálculo: Semântica Operacional • Conversão-a: • Conversão-: Substituição de parâmetros reais por parâmetros formais (x.t ) s [ s / x ] t • A Conversão-: Extensionalidade do sistema (x.x ) 

  4. O -CálculoTeoremas de Church-Rosser 1.Formas normais são únicas. (módulo conversão-) 2. -reduzir a expressão mais externa e mais à esquerda a cada ponto numa sequência de reduções leva a forma normal, se ela existir.

  5. Operações Booleanas • Valores Lógicos true = false = ((true)P)Q P ((false)P)Q Q

  6. Comando If-Then-Else if C then P else Q C P Q Assim: if true then P else QP if false then P else Q Q

  7. Operadores Booleanos Not = b. if b then false else true Or = b. c.if b then true else c And = b. c.if b then c else false

  8. Lemas • not true = false • not false = true • or true true = false • or true false = true • or false false = false • and true true = true • and true false = false • and false true = false • and false false = false

  9. Numerais de Church • Representação dos Números Naturais em Lambda Calculus • Definições: • 0 = f. x.x • succ = n. f. x.f ( n f x ) • repita n vezes f em x = n f x

  10. Sucessor de um Número succ 0 = n. f. x.f( n f x ) 0 f. x.f( 0 f x ) = f. x.f(( f. x.x) f x ) f. x.f(( x.x) x ) f. x.fx Assim, se ( f. x.fx)recebe o valor de 1: 3 = succ(succ(succ(0)))

  11. Numerais de Church 0 = f. x.x 1 = f. x.fx 2 = f. x.f x ... n = f. x.f x n+1 = f. x.f x 2 n+1

  12. Numerais de Church: Adição A adição entre dois Numerais de Church m e npode ser feita computando-se o sucessor de n m vezes, o combinador da adição seria representado por: add = m. n. repita m vezes succ sobre n

  13. Adição addab = ( m. n.m succ n) ab a succ b succ b = succ(succ(...(succ b)...)) ... succ(succ(...(succ b+1)...)) succ(b + a - 1) b + a a a vezes (a - 1) vezes

  14. Numerais de Church: Multiplicação A multiplicação entre dois números m e n pode ser definida como sendo a adição de n a 0, um número m de vezes. mult = m. n. repita m vezes add n sobre0

  15. Multiplicação mult ab = ( m. n.m(add n) 0 ) ab a (add b) 0 = (addb) 0 = addb(addb(...(addb0)...) ... addb(addb(...(addb + b)...) addb(b + b + b ... + b + b) b + b + b ... + b + b = a * b a a vezes (a - 1) vezes (a - 1) vezes a vezes

  16. Numerais de Church: Exponenciação n A exponenciação de m pode ser definida como a multiplicação de m a 1, um número n de vezes. exp = m. n. repita n vezes mult m sobre 1

  17. Exponenciação exp ab = ( m. n.n(mult m) 1) ab b (multa) 1 (multa) 1 = mult a(mult a(...(mult a1)..) ... mult a(a * a * ... * a * a) b b vezes (b - 1) vezes a

  18. Pares Ordenados Um Par Ordenado é uma estrutura algébrica para a manipulação de elementos aos pares. De modo que uma operação realizada sobre um dado elemento não afete o comportamento do outro. <a,b> ->lx.x a b

  19. Pares Ordenados Para obtermos cada elemento de um par ordenado, devemos definir os combinadores fste snd: fst = p.ptrue snd = p.p false Representação: <fst, snd>

  20. Pares Ordenados • Função Predecessor predecessor x = x - 1, se x > 0 0 , se x <= 0 CombinadorPRED : pred = n.snd (repitanvezesFsobre<0 . 0> Onde: F = p. <(fst p) + 1, fstp>

  21. Numerais de Church: Subtração Especificada como: minus a b= a - b, se a >= b = 0, se a < b Combinador: minus = m. n.(repitam vezes predsobre n)

  22. Fatorial O combinador que computa o fatorial de um numeral de Church pode ser definido como: fat = n.fst ( repitan vezes F sobre <1,1>) Onde F é: F = p.<(fst p)*(snd p),(snd p) + 1>

  23. Operadores Relacionais Primeiramente, definamos um operador chamado IsZero especificado como: IsZeron= true, se n = 0 false, se n > 0 Correspondente a : IsZero= n.n(K false)(true)

  24. Operadores Relacionais Analogamente, temos : NoZeron= true, se n > 0 false, se n = 0 Definido como : NoZero = n.n(K true)(false)

  25. Operadores Relacionais Maior Que gt = n. m.(NoZero (minus n m)) Maior ou Igual A ge = n. m.(IsZero(minus m n))

  26. Operadores Relacionais Menor Que lt = n. m.(NoZero(minus m n)) Menor ou Igual A le = n. m.(IsZero(minus n m))

  27. Operadores Relacionais Igual A Um número n é igual a outro número m quando m - n e n - m são iguais a zero: eq= n. m.(and(IsZero(minus n m)) (IsZero(minus m n)))

  28. Amanhã: • Recursividade no l-Cálculo. • Introdução a Lógica Combinatorial. • Máquina de Turner.

More Related