



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
Os melhores documentos à venda: Trabalhos de alunos formados
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
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
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)