funsplit y polaridad de los tipos Pi

18

En un hilo reciente en la lista de correo de Agda, surgió la cuestión de las leyes , en la que Peter Hancock hizo un comentario estimulante .η

Tengo entendido que las leyes η vienen con tipos negativos, es decir. conectivos cuyas reglas de introducción son invertibles. Para deshabilitar η para las funciones, Hank sugiere usar un eliminador personalizado, funsplit , en lugar de la regla de aplicación habitual. Me gustaría entender el comentario de Hank en términos de polaridades.

Por ejemplo, hay dos presentaciones Σ tipos Sigma . Existe el eliminador de división tradicional Martin-Löf , en un estilo positivo:

Γf:(a:A)(b:Ba)C(a,b)Γp:Σa:A.BΓsplitfp:Cp

Y hay una versión negativa:

Γp:Σa:A.BΓπ0p:AΓp:Σa:A.BΓπ1p:B[π0p/a]

Esta última presentación facilita la obtención de η para pares, es decir. (π0p,π1p)==p para cualquier par p (donde == representa la igualdad de definición). En términos de demostrabilidad, esta diferencia no importa: intuitivamente, puede implementar proyecciones con división, o al revés.

Ahora, los tipos Π son usualmente (y sin controversia, creo) tomados negativamente:

Γf:Πa:A.BΓs:AΓfs:B[s/a]

Lo que nos da η para funciones: λx.fx==f .

Sin embargo, en ese correo, Hank recuerda el eliminador de funsplit (Programación en teoría del tipo ML, [http://www.cse.chalmers.se/research/group/logic/book/], p.56). Se describe en el marco lógico por:

fΠ(A,B)C(v)Set[vΠ(A,B)]d(y)C(λ(y))[y(x)B(x)[xA]]funsplit(f,d)C(f)

Curiosamente, Nordstrom et al. Motive esta definición diciendo que "[esta] forma alternativa no canónica se basa en el principio de inducción estructural". Hay un fuerte olor a positividad en esta afirmación: las funciones serían 'definidas' por su constructor, λ .

Sin embargo, no puedo precisar una presentación satisfactoria de esa regla en la deducción natural (o, mejor aún, el cálculo consecuente). El uso (ab) del marco lógico para introducir parece crucial aquí.y

Entonces, ¿es funsplit una presentación positiva de los tipos ? ¿También tenemos algo similar en el cálculo secuencial (no dependiente)? ¿Cómo se vería?Π

¿Qué tan común / curioso es eso para los teóricos de la prueba en el campo?

pedagand
fuente

Respuestas:

12

La presentación de la eliminación funcional usando definitivamente no es una ocurrencia habitual en la mayoría de los tratamientos de la teoría de tipos. Sin embargo, creo que esta forma es de hecho la presentación "positiva" de la eliminación de los tipos funcionales. El problema aquí es que necesita una forma de coincidencia de patrones de orden superior, consulte, por ejemplo, Dale Miller .funsplit

Permítame reformular su regla de una manera que sea más clara para mí:

Γf:Πx:A.BΓ,z:Πx:A.BC:SetΓ,[x:A]F(x):Be:C{λx:A.F(x)/z}match f with λx:A.F(x)e:C{f/z}

Donde es un meta-variables de tipo en el contexto .BFBx:A

La regla de reescritura se convierte en:

match λx:A.t with λx:A.F(x)ee{t{u/x}/F(u)}

Esto le permite definir la aplicación como:

app(t,u)=match t with λx:A.F(x)F(u)

Más allá del hecho de que esto requiere un sistema de tipo "marco lógico" para ser válido, la molestia (y la necesidad limitada) de la unificación de orden superior hace que esta formulación sea impopular.

Sin embargo, hay un lugar donde la distinción positiva / negativa está presente en la literatura: la formulación de predicados de relación lógica . Las dos definiciones posibles (en el caso unario) son

[[Πx:A.B]]={tu[[A]],tu[[B]]xu}

y

[[Πx:A.B]]={ttλx.t,u[[A]],t{u/x}[[B]]xu}

La segunda versión es menos común, pero se puede encontrar, por ejemplo, en Dowek y Werner .

cody
fuente
1
Esto parece estar relacionado con la sintaxis abstracta de orden superior que se usa ampliamente en el marco lógico. En particular, la aquí parece ser la metafunción. F
día
13

Aquí hay una perspectiva ligeramente diferente de la respuesta de Fredrik. En general, las codificaciones de tipos de la Iglesia no son satisfactorias satisfarán las leyes pertinentes , pero no satisfarán las leyes .ηβη

Esto significa que podemos definir un par dependiente de la siguiente manera:

π 1 π 1 : x

x:X.Y[x]α:.(Πx:X.Y[x]α)α
Ahora, tenga en cuenta que es fácilmente definible: Sin embargo, no puede definir la segunda proyección - ¡pruébalo! Solo puede definir un eliminador débil para él, por eso lo escribí con un existencial.π1π 2 : Π p : ( x :
π1:x:X.Y[x]Xλp:(x:X.Y[x]).pX(λxy.x)
π2:Πp:(x:X.Y[x]).Y[π1p]

Sin embargo, la segunda proyección es realizable , y en un modelo paramétrico puede mostrar que también tiene el comportamiento correcto. (Vea mi borrador reciente con Derek Dreyer sobre parametricidad en el Cálculo de construcciones para obtener más información sobre esto). Así que creo que la proyección exige fundamentalmente algunas propiedades de extensionalidad para que tenga sentido.π2

En términos del cálculo posterior, el eliminador débil tiene una regla que se parece un poco a:

Γ,x:X,y:Y[x],Γe:CΓ,p:x:X.Y[x],Γlet(x,y)=pine:C
Aquí, las condiciones implícitas de buena formación implican que no puede ocurrir libre en o . Si relajamos esa condición, obtenemos la regla de división, que tiene una regla izquierda que se parece a Esa sustitución me recuerda muchísimo a la regla de eliminación de Girard / Schroeder-Heister para la igualdad. Hice una preguntapΓC
Γ,x:X,y:Y[x],[(x,y)/p]Γe:[(x,y)/p]CΓ,p:x:X.Y[x],Γlet(x,y)=pine:C
sobre esta regla hace un tiempo, y David Baelde y Gopalan Nadathur dan la versión más avanzada en su artículo LICS 2012, Combinando el módulo de deducción y la lógica de las definiciones de punto fijo . Creo que Conor McBride ha pasado algún tiempo pensando en la relación entre el tipo de identidad y la igualdad de Schroeder-Heister, por lo que es posible que desee ver lo que piensa.
Neel Krishnaswami
fuente
1
¡Realmente estoy disfrutando de todas estas respuestas! Creo que hay una noción de "introspección" (la capacidad de saber que un término tiene un valor) implícita en la respuesta de Fredrik que es el verdadero problema con eta: la parametricidad implica introspección implica eta.
cody
10

Richard Garner ha escrito un buen artículo sobre aplicación frente a funsplit, Sobre la solidez de los productos dependientes en la teoría de tipos de Martin-Löf (APAL 160 (2009)), que también analiza la naturaleza de orden superior de la regla de funsplit (con referencia a La extensión natural de la deducción natural de Peter Schroeder-Heister (JSL 49 (1984))).

Richard muestra que en presencia de tipos de identidad (y reglas de formación e introducción para los tipos ), funsplit es interderivable con la regla de aplicación anterior + eta proposicional, es decir, las dos reglas siguientes: Π

m:Π(A,B)η(m):IdΠ(A,B)(m,λx.mx)(Π-Prop-η)
x:Af(x):B(x)η(λ(f))=refl(λ(f)):IdΠ(A,B)(λ(f),λ(f))(Π-Prop-η-Comp)

Es decir, si tiene funsplit, puede definir la aplicación y como se indica arriba para que se . Lo que es más interesante, si tiene aplicación y las reglas eta proposicionales, puede definir funsplit.( Π -Prop- η -Comp )η(Π-Prop-η-Comp)

Además, funsplit es estrictamente más fuerte que la aplicación: las reglas de eta proposicionales no son definibles en una teoría con solo aplicación; por lo tanto, funsplit no es definible, ya que entonces las reglas de eta proposicionales también lo serían. Intuitivamente, esto se debe a que las reglas de aplicación le dan un poco más de holgura: a diferencia de funsplit (y eta), no le dicen qué funciones son, solo que se pueden aplicar a los argumentos. Creo que el argumento de Richard podría repetirse también para los tipos , para mostrar el mismo resultado para vs proyecciones.s p l i tΣsplit

Tenga en cuenta que si tuviera reglas eta definitorias, ciertamente también las tendría proposicionalmente (con ). Por lo tanto, creo que sus afirmaciones "[...] que nos dan para funciones" y "[...] esta última presentación hace que sea fácil obtener para pares" están equivocadas. Sin embargo, Agda implementa tanto para funciones como para pares (si se define como un registro), pero esto no se sigue solo de la aplicación.η η η Ση(m):=refl(m)ηηηΣ

Fredrik Nordvall Forsberg
fuente