



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Este documento aborda os conceitos de cálculo lambda, forma normal e ordem de redução em programação funcional, incluindo exemplos e teoremas de church-rosser. Além disso, é apresentada a solução para a recursividade usando o combinador de ponto fixo y.
Tipologia: Notas de aula
1 / 6
Esta página não é visível na pré-visualização
Não perca as partes importantes!




(+ (* 3 4) (* 7 8))
ou
(+ (* 3 4) (* 7 8)) -> (+ (* 3 4) 56) -> ( 12 56) -> 68
(λx.x x)(λx.x x) -> (λx.x x)(λx.x x) -> (λx.x x)(λx.x x)
(λx.3) (D D)
Então E 1 <-> E 2 e, pelo CRT1, deve haver uma expressão F tal que E 1 -> F e E 2 -> F.
Como tanto E 1 como E 2 não possuem redexes, logo E 1 = F = E (^2)
Se E 1 -> E 2 , e E 2 está na forma normal, então existe uma ordem normal de seqüência
de redução de E 1 para E 2.
A Ordem Normal de Redução especifica que o redex mais à esquerda mais externo deverá ser reduzido primeiro.
FAC = (λfac.(λn. (...fac...)))FAC
FAC = H FAC (2.1)
H = (λfac.(λn. (...fac...)))
x 2 - 2 = x
H = (λfac.λn. IF (= n 0) 1 (* n (fac (- n 1 ))))
->(lfac.ln.IF (= n 0) 1 (* n (fac (- n 1))))(Y H) 1 ->(ln.IF (= n 0) 1 (* n (Y H (- n 1)))) 1 -> IF (= 1 0) 1 (* 1 (Y H (- 1 1))) -> * 1 (Y H 0) = * 1 (H (Y H) 0) = * 1 ((lfac.ln.IF (= n 0) 1 (* n (fac (- n 1))))(Y H) 0) -> * 1 ((ln.IF (= n 0) 1 (* n (Y H(- n 1)))) 0) -> * 1 (IF (= 0 0) 1 (* n (Y H(- 0 1)))) -> * 1 1 -> 1
Y = (λh. (λx.h (x x)) (λx. h (x x)))
= (λh. (λx.h (x x)) (λx. h (x x))) H <-> (λx.H (x x)) (λx. H (x x)) <-> H ((λx.H (x x)) (λx. H (x x))) <-> H (Y H)