12 votos

Si $f(x)=g(x)$ todos los $x:A$, ¿por qué no es cierto que $\lambda x{.}f(x)=\lambda x{.}g(x)$?

Hay algo en el cálculo lambda que me deja perplejo. Supongamos que tenemos $x:A\vdash f(x):P(x)$ $x:A\vdash g(x):P(x)$ para algunos dependiente del tipo de $P$ más de un tipo de $A$. Entonces, no es necesariamente cierto que $\lambda x{.}f(x)=\lambda x{.}g(x)$.

He tratado de entender este fenómeno y, a continuación, que es algo como esto: en realidad, el argumento que se pasa a $\lambda$ no es sólo $x{.}f(x)$, pero es la vinculación a la $x:A\vdash f(x):P(x)$. Por lo tanto, distintas razones por las $f(x):P(x)$ por cada $x:A$ dar diferentes funciones. Pero nunca he visto cosas como esta escrito en alguna parte, así que me siento bastante seguro acerca de.

Me gustaría saber por qué $\lambda x{.}f(x)$ no $\lambda x{.}g(x)$ incluso si $f(x)=g(x)$. A partir de un tipo de punto de vista teórico, pero tal vez también de un modelos de punto de vista. Si hay modelos que pueden explicar fácilmente qué tipo de comportamiento que podemos esperar de $\lambda$, que sería muy útil.


Edit. Debo añadir que el bit de cálculo lambda, que he aprendido de hacer dependiente el tipo de teoría (y más específicamente, Martin-Lof intensional tipo de teoría) en Coq. Allí, el producto que dependen de la $$\prod(x:A),\ P(x)$$ is defined for a dependent type $P:A\to\mathsf{Tipo}$ over a type $$ by introducing elements $\lambda x{.}f(x)$ for each $x:A\vdash f(x):P(x)$, with for each $f:\prod(x:),\ P(x)$ and each $a:A$, a term $\mathsf{aplica}(f,a):P(a)$. These are then required to satisfy the $\beta$- and $\eta$-reglas de conversión: $$ \begin{split} \beta.\qquad\qquad & \mathsf{apply}(\lambda x{.}f(x), a)=f(a)\\ \eta.\qquad\qquad & \lambda x{.}\mathsf{apply}(f,x)=f, \end{split} $$ pero no de la regla de $\xi$, que es la regla que dice que $\lambda x{.}f(x)=\lambda x.g(x)$ siempre $f(x)=g(x)$ todos los $x:A$. Pero yo no sé acerca de cualquier cosa que rompa la regla de $\xi$, de ahí mi pregunta.


He aquí un ejemplo concreto donde me enfrento a este problema.

Un ejemplo de este tipo de $f$ $g$ donde este problema me fastidiaron la mayoría viene de demostrar que el axioma de elección es una equivalencia. Supongamos que $A$ es un tipo, que $P$ es dependiente del tipo de más de $A$ y $R$ es dependiente del tipo de más de $P$, es decir,$R:\prod(x:A),\ (P(x)\to\mathsf{Type})$. A continuación, el tipo teórico axioma de elección es la función $$ \mathsf{ac}:\prod(x:)\sum (u:P(x)),\ R(x,u)\a\sum\Big(s:\prod(x:),\ P(x)\Big)\prod(x:),\ R(x,s(x)) $$ dada por $$ \lambda f.\langle \lambda x.\mathsf{proj_1}f(x),\lambda x.\mathsf{proj_2}f(x)\rangle $$ Un candidato a la inversa sería dada por $$ \mathsf{ac{-}inv}:=\lambda w.\lambda x.\langle\mathsf{proj_1}w(x),\mathsf{proj_2}w(x)\rangle. $$ Para demostrar que esto es un derecho inversa usted necesita el $\eta$-conversión en algún momento, pero para demostrar que está a la izquierda inversa, la identidad $$ \lambda x.\langle\mathsf{proj_1}f(x),\mathsf{proj_2}f(x)\rangle=\lambda x.f(x) $$ es necesario en algún momento. Aunque es bastante obvio que $\langle\mathsf{proj_1}f(x),\mathsf{proj_2}f(x)\rangle=f(x)$ por cada $x:A$, este no es un paso que usted puede hacer en Coq, porque no hay ninguna regla $\xi$ no (que yo sepa). Incluso $\eta$ tienes que introducir manualmente y que sólo es posible mediante el uso de la identidad de tipos de Martín-Lof. Mike Shulmann ha construido una forma de evitar este problema: hay una prueba de que el mapa de $\mathsf{ac}$ es de hecho una equivalencia. Entiendo que esta prueba, pero no el comportamiento de $\lambda$. ¿Qué puede $\lambda$ hacer si usted no tiene $\xi$ que prohíbe a mí de hacer este paso?

4voto

Estoy bastante seguro de que el $\xi$ regla es implementado en Coq. El doc dice que en algún lugar

Vamos a escribir E[Γ] ⊢ t ▷ u para el contexto del cierre de la relación t reduce a la u en el medio ambiente E y contexto Γ con uno de los anteriores de reducción de β, ι, δ o ζ.

El $\xi$ regla es generalmente ni siquiera es mencionado porque esto es una consecuencia de la contextuales cierre de la definición de igualdad que generalmente se supone.

En el ejemplo concreto, el problema no viene de$\xi$, pero desde el "bastante evidente" el hecho de que $\langle\mathsf{proj_1}f(x),\mathsf{proj_2}f(x)\rangle=f(x)$. Esto se llama $\eta$-igualdad dependientes de sumas, pero Coq no satisface este definitionally (ni siquiera Coq 8.4, que sólo ha $\eta$-igualdad de funciones).

Así que sí, en Coq tienes que demostrar $\eta$-igualdad dependientes sumas el uso de tipos de identidad, pero esto no tiene nada que ver con $\xi$.

En Agda no es $\eta$-igualdad dependientes de sumas (y en general de los registros), así que probablemente que estas dos funciones son definitionally inverso el uno al otro en Agda.

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