Por favor perdonen si no ortodoxa de la notación o errores evidentes aquí... estoy tratando de conseguir una intuición para la dependencia escribió idiomas, así que estoy empezando a cabo por ver qué analogías que se pueden tomar desde el mecanografiada mundo. En una ML-como el lenguaje nos puede codificar existencial tipos en términos de universales tipos:
$\exists a.T(a) \equiv \forall x.(\forall a.T(a) \rightarrow x) \rightarrow x$
Del mismo modo, también podemos definir la suma de los tipos en términos de universales tipos y tipos de producto:
$ a + b \equiv \forall x.(a \rightarrow x)\times(b \rightarrow x) \rightarrow x $
Esta correspondencia tiene sentido para mí, ya existencial tipos son como infinito sumas y universal tipos son como infinita de productos.
En un dependiente de lenguaje escrito, también va a ser posible definir dependiente de sumas de dinero en términos de dependiente de productos? Esto parece cerrar:
$\Sigma(b:B).T(b) \equiv \forall x.(\Pi(b:B).T(b) \rightarrow x) \rightarrow x$
$(a,t) : \Sigma(b:B).T(b) \equiv \lambda f. f\ a\ t$
$\text{fst}\ p \equiv p_B\ (\lambda(b:B).\lambda(\_:T(b)).b)$
$\text{snd}\ p \equiv p_{T (\text{fst}\ p)}\ (\lambda(b:B).\lambda(t:T(b)).t)$
Sin embargo, yo no puedo convencerme de que la definición de snd
está bien escrito porque no puedo demostrar que $t : T (\text{fst}\ p)$. Hay alguna manera de hacer este trabajo?