Cálculo lambda reducción de funciones

Soy muy nuevo en el cálculo lambda y mientras leía un tutorial, me encontré con esto. Aquí está mi ecuación.

Y = ƛf.( ƛx.f(xx)) ( ƛx.f(xx))

Ahora, si aplicamos otro término, digamos F (YF), entonces, ¿cómo podemos reducir esto? Si estoy en lo correcto de acuerdo con la reducción beta, podemos reemplazar todos los f in ( ƛx.f(xx)) by ( ƛx.f(xx)), es esto correcto y si es así, ¿cómo podemos hacer eso?

Muchas Gracias

preguntado el 04 de julio de 12 a las 03:07

1 Respuestas

Pasos de reducción:

Y = ƛf.( ƛx.f(xx)) ( ƛx.f(xx)) = ƛf.( f ( ƛx.f(xx) ƛx.f(xx) ) ) 
  = ƛf.( f ( f (ƛx.f(xx) ƛx.f(xx)))) 
  = ƛf.( f ( f ( f (ƛx.f(xx) ƛx.f(xx)))) 
  = ƛf.( f ( f ( f ( f (ƛx.f(xx) ƛx.f(xx))))) = ...

Así que este término Lambda entra en un bucle infinito...

Explicación:
Veamos el término ( ƛx.f(xx) ƛx.f(xx) ) nosotros sustituimos ƛx.f(xx) f'
lo que significa (f' f') => activando el término f' en sí mismo.
Podría ser más fácil verlo así:
( ƛy.f(yy) ƛx.f(xx) ) ahora cuando activas el ƛy.f(yy) y proporcionar la entrada (que sustituye y ƛx.f(xx) ) el resultado es: f(ƛx.f(xx) ƛx.f(xx)) que a su vez, puede repetir el mismo proceso una y otra vez y la expresión lambda solo gastará...


Observación:
Está mal escribir:
Y = ƛf.( ƛx.f(xx)) ( ƛx.f(xx)) en realidad debería ser: Y = ƛf.(ƛx.f(xx) ƛx.f(xx))
La diferencia entre los ƛx.f(xx) y (ƛx.f(xx)) es que este último es una activación de ƛx.f(xx) - no tiene sentido activarlo así (ƛx.f(xx)) ya que necesitamos un x (entrada) para activarlo.

Por último:
Y = ƛf.( ƛx.f(xx)) ( ƛx.f(xx)) = ƛf.( f ( ƛx.f(xx) ƛx.f(xx) ) )
significado:
YF = ( ƛx.F(xx)) ( ƛx.F(xx)) = F(ƛx.F(xx)) ( ƛx.F(xx)) = F(YF)

Respondido 04 Jul 12, 07:07

¿Podría indicarme los pasos a seguir o las técnicas que puedo utilizar? Pradeep

No entiendo cómo obtuviste ƛf.( f ( ƛx.f(xx) ƛx.f(xx) ) ) ¿Podrías decir el teorema utilizado? Pradeep

Entonces, si escribimos una activación como YF, ¿es igual a ( ƛx.F(xx)) ( ƛx.F(xx)) - Pradeep

( ƛx.F(xx)) es una activación de ƛx.F(xx) sin parámetros (lo que no significa nada en nuestro caso porque solo se puede activar en un parámetro). Sin embargo, no estoy seguro de qué quisiste decir con YF. - Nir Alfasi

Encontré esto mientras intentaba probar que Y es un combinador de primer punto. Entonces, mi objetivo es probar que si F es cualquier término, entonces F(YF) = YF - Pradeep

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.