18 votos

Las "funciones" de tipo lambda cálculo no son (conjunto teórico) funciona así, cuáles son?

No puedes modelo de $\lambda$ funciones como conjunto de funciones debido a que el dominio de una $\lambda$ función incluye la función de sí mismo. Esto viola la fundación.

Sin embargo lo que está claro que algún tipo de flecha. Son las flechas de $\lambda$ cálculo propio de la cosa o pueden ser representados de alguna otra manera?

27voto

Giorgio Mossa Puntos 7801

En realidad es posible interpretar $\lambda$-términos (supongo que el uso de $\lambda$-función como sinónimo de $\lambda$plazo) como algún tipo de funciones.

Esto es debido a un resultado de Dana Scott, que presentó el dominio de la teoría de la exactamente con el propósito de dar una función-como base de la semántica de la (sin) $\lambda$-cálculo.

La idea es modelar el universo de la $\lambda$-términos como una muy especial de dominio $D$, que es un poset la satisfacción de algunas de sus propiedades. Una de estas propiedades particulares de este dominio es que hay un isomorfismo entre el dominio $D$ y el dominio $[D,D]$ de la scott funciones continuas de $D$ dentro de sí mismo.

A través de dicho isomorfismo es posible interpretar cada una de las $\lambda$plazo (es decir, un elemento de $D$) como una función (como un elemento de $[D,D]$) y, por otro lado, cada función en $[D,D]$ (es decir, corresponde a través del isomorfismo) $\lambda$plazo.

El punto crítico aquí es que $[D,D]$ no es el conjunto de funciones de $D$ en sí: no sería posible representar todas estas funciones a través de $\lambda$-términos debido a razones de cardinalidad, pero es posible representar a $\lambda$-términos como muy bien subconjunto de funciones de más de un conjunto.

18voto

Mitchell Spector Puntos 371

He añadido una sección en la parte inferior de mi respuesta en un enfoque más general que muestra cómo se pueden tratar las funciones que se pueden aplicar a sí mismos dentro de la teoría de conjuntos, los representa como algo distinto de conjuntos de pares ordenados.


En primer lugar, a pesar del nombre, un $\lambda$-la función no es una función en el sentido matemático. Es una cadena (o algún equivalente objeto matemático) que representa un algoritmo — en otras palabras, es un programa de ordenador. (Esto es similar en el sentido en que la palabra "función" se utiliza en los lenguajes de computador, que es diferente de la habitual matemáticos de uso.)

Funciones matemáticas son extensional; en otras palabras, si $f$ $g$ tienen los mismos valores en todos sus argumentos, a continuación, $f=g.$ Esta es la razón por funciones pueden ser consideradas como conjuntos de pares ordenados. Sólo el argumento de pares de valores de la materia, no de cómo se calculan o se determinen.

Los programas de ordenador, en contraste, son intensional. Dos diferentes programas que calculan los mismos valores en todos sus argumentos siguen siendo diferentes programas. De hecho no tenemos ninguna manera de incluso de determinar (a través de algoritmos) si dos programas de ordenador calcular la misma función.

Un nombre mejor que el de "$\lambda$-función" es "$\lambda$-expresión", porque estas cosas son las expresiones o las cadenas de un idioma, no funciones reales ellos mismos.

Formalmente, si usted tiene un alfabeto $A$ e si $S$ es el conjunto de cadenas sobre el alfabeto, $\lambda$- expresión de $e$ es un miembro de $S$ la satisfacción de ciertos requisitos sintácticos. No es una función, pero sí describe un algoritmo que calcula una función determinada $\phi_e\colon D_e\to S$ algunas $D_e \subseteq S$ (el dominio $D_e$ no puede ser todos los de $S$ debido a que el programa informático que $e$ describe no puede detener en todas las posibles cadenas de entrada). Desde $e\in S,$, se puede calcular el $\phi_e(e)$ tal como se puede calcular el $\phi_e(x)$ cualquier $x\in S$ (por supuesto, cualquier cálculo puede o no se puede detener, así que es posible que $\phi_e(x)$ no tiene un valor).

Ahora $\phi_e$ es algo normal en función matemática; se puede considerar como un conjunto de pares ordenados. Desde ese punto de vista, $\phi_e \subseteq S\times S.$ Aviso que $e$ es miembro de sólo $S.$ Usted puede tener $e_1\ne e_2$ (diferentes programas), sino $\phi_{e_1}=\phi_{e_2}$ (de los diferentes programas suceder siempre calcular el mismo resultado si la misma entrada).

Así que nunca aplicar una función a sí mismo. Podemos aplicar una función a una cadena, y también nos sucede a utilizar las cadenas como los programas de ordenador que pueden ser utilizados para calcular funciones.

Por cierto, usted también puede definir la aplicación de la función de $\alpha$ asignación de algún subconjunto de $S\times S$ $S$mediante el establecimiento $\alpha(x,y)=\phi_x(y);$ el par ordenado $\langle x,y \rangle$ pertenece al dominio de la $\alpha$ fib de la cadena de $x$ $\lambda$- expresión y el cálculo de $\phi_x(y)$ se detiene.

Y no hay ningún problema de codificación de todo esto dentro de ZF.


Hay un enfoque algo diferente a todo esto, que es más general. Vamos a ver la pregunta como preguntando: ¿Cómo pueden las funciones que se pueden aplicar a sí mismos ser manejados, a la luz del hecho de que una función en la teoría de conjuntos no es nunca un miembro de su propio dominio?

Para evitar confusiones, voy a llamar a estas hipotéticas nuevas funciones *funciones sólo para distinguirlas de las funciones reales de la teoría de conjuntos.

Para ello, debemos comenzar con un conjunto $F$ (que está destinado a servir eventualmente como el dominio de estas *-funciones y el conjunto de todos *-funciones), un subconjunto $D$ $F\times F,$ y una función de $\alpha\colon D\to F.$ tenga en cuenta que estas están definidas en la teoría de conjuntos; en particular, $\alpha$ es una función, no un *la función. La función de $\alpha$ es destinado a representar la aplicación de un *la función de un argumento.

Así que ahora vamos a definir una *la función de ser un miembro de $F.$ Si $f$ $g$ *- funciones, definiremos $f(g) = \alpha(f, g)$ si $\langle f,g \rangle \in D;$ si $\langle f,g \rangle \not\in D,$ $f(g)$ es indefinido. Básicamente, esto significa que se puede usar cada *la función como una parcial "función" de $F$ $F,$es decir, una "función" de algún subconjunto de $F$ $F.$(he puesto "función" en citas aquí, ya que estos no son conjuntos de pares ordenados, como funciones son generalmente definida, pero que puede ser utilizada como funciones debido a que tenemos una definición de lo $f(x)$ significa que para cualquier $f$ $x$ $F$ . Por otro lado, para cada una de las $f\in F,$ la función de $x \mapsto \alpha(f,x)$ es sólo una normal función matemática; que podríamos llamar, decir, $\varphi_f,$ y tratarlo como un conjunto de pares ordenados, como de costumbre. Incluso podríamos haber comenzado con la función de $f\mapsto \varphi_f$ en lugar de $\alpha.$, Pero aviso de que, en línea con la extensionality/intensionality distinción en la primera parte de esta respuesta, es posible tener $\varphi_f=\varphi_g$, incluso cuando se $f\ne g.)$

Por cierto, si quieres evitar tener parcial "funciones"," sólo distinguir un elemento en $F,$, lo que voy a llamar a $\uparrow.$ $\alpha$ total de la función ahora, con dominio de todos los de $F\times F.$ Si $\alpha(x,y)$ fueron indefinidos, el conjunto es igual a $\uparrow$ ahora. También se establece $\alpha(x,\uparrow)=\alpha(\uparrow,x)=\,\uparrow$ todos los $x\in F.$ Pero creo que el enfoque con parciales de "funciones" es más clara, ya que representa mejor la situación.

Lo que realmente subyace en todo este enfoque es que la definición de la función como un conjunto de pares ordenados no es sacrosanta; es sólo conveniente de codificación que se ha adoptado para representar funciones como conjuntos. Algunos otros códigos estaría bien también (como los números reales pueden ser representados como secuencias de Cauchy o de Dedekind cortes o algo más, mientras que ellos tienen el derecho propiedades). La clave para las funciones es que necesitamos tener una forma de aplicar una función de un argumento.

5voto

Hurkyl Puntos 57397

Podemos definir la composición

$$ f \circ g = \lambda x. f(gx) $$

(donde $x$ es elegido de manera que no aparecen en $f$ o $g$)

Si usted toma $\alpha$, $\beta$, y $\eta$ de reducción como la especificación de que los dos términos son iguales, entonces la composición es asociativa, operación binaria con identidad

$$ i = \lambda x.x $$

y así, el lambda de términos con esta operación forma un monoid $\Lambda$, y así usted puede hacer todo de la habitual monoid cosas con ella.

Monoids puede actuar sobre los conjuntos. Cualquier monoid puede actuar sobre el conjunto de sus elementos (por ejemplo, donde la acción está dada por la monoid operación). Aplicación de lambda términos da otra forma interesante para $\Lambda$ a actuar sobre sí misma.


Desde que usted trae a la categoría de teoría, el mecanografiada $\lambda$-cálculo es muy importante — en un buen sentido, mecanografiada $\lambda$ cálculos y cartesiana cerrada categorías son nociones equivalentes.

5voto

user21820 Puntos 11547

Lo que te falta es que $f(f)$ es no es el mismo como $f(code(f))$. Una función de $f$ puede ser codificado como otro objeto $code(f)$, lo que puede ser en el dominio de $f$. En teoría de la computación, λ-funciones son codificadas como las cuerdas de una determinada forma, que pueden ser considerados como programas de algún tipo. La aplicación de un programa de $p$ a otro programa $q$ requiere de una maquina o de un intérprete para realizar la aplicación, tales como una máquina de Turing universal $U$, de tal manera que $U(p,x)$ es el resultado de la ejecución del programa de $p$ en la entrada $x$. $U$ en sí no es un programa, sino que corresponde a uno, es decir,$code(U)$. Múltiples entradas pueden ser codificadas, por ejemplo podemos tener una función $pair$ de tal manera que un programa determinado $pair(x,y)$ obtener $x$$y$. De hecho, podríamos diseñar $code(U)$ tal que $U(code(U),pair(p,x)) = U(p,x)$. Así mismo, se $f(code(f)) = U(code(f),code(f))$.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X