Cálculo de construcciones: comprime la expresión a su forma más pequeña

11

Soy consciente de que el cálculo de construcciones se está normalizando fuertemente, lo que significa que cada expresión tiene una normalidad que no puede ser beta, eta-reducida aún más. De hecho, esta es la expresión más eficiente que calcula el mismo valor que la expresión original.

Pero en ciertos casos, la normalización puede reducir una pequeña expresión a una gran expresión (en términos de tamaño).

¿Hay una forma más pequeña de expresiones? Un formulario que calcula el mismo valor con el tamaño más pequeño.

En otras palabras, en lugar de una forma normal eficiente en el tiempo, una eficiente en el espacio.

usuario47376
fuente

Respuestas:

8

λ

nn¯nsucc0MMM

t,u:natnattunNtn¯sn¯

natnat

S:nat×natnatnNMS(M,n¯)1¯Tn0¯n

Z1,,Zkλx:nat.0λx:nat.0λx:nat.0λx:nat.0

M

u:=λx:nat.S(M,x)
Mun¯0¯nλx:nat.0MuZ1,,ZkMZ1,,Zk

β

Andrej Bauer
fuente
¿Cómo se calcula Z1, .. Zk?
user47376
No tienes que hacerlo Es decir, el algoritmo que estoy describiendo está disponible, y no sabemos con precisión qué es, pero eso es irrelevante. En realidad no estoy tratando de ejecutar el algoritmo, solo necesito su existencia para mostrar que su algoritmo no existe.
Andrej Bauer
Sí, pero su argumento dice que si mi algoritmo existe, podemos resolver el problema de detención. Para determinar si una máquina Turing M detiene su algoritmo, normaliza uy comprueba si es uno de Z1, .. Zk. Por lo tanto, debe poder enumerarlos; de lo contrario, es posible que no se detenga.
user47376
Z1,,ZkkZkZ[i]
7

(λx:T.C x x) uβC u u
u

En este sentido, se sabe cómo reducir los términos sin tipo de una manera óptima, reduciendo el intercambio lo más posible. Esto se explica aquí: /programming//a/41737550/2059388 y la cita relevante es el algoritmo de J. Lamping para la reducción óptima del cálculo lambda . Hay pocas dudas de que el teorema del cálculo sin tipo puede extenderse al CIC.

Otra pregunta relevante es la cantidad de información de tipo que se puede borrar al realizar la conversión de tipo, o incluso cómo realizar una conversión eficiente, que es un campo activo de investigación, ver, por ejemplo , la tesis de Mishra-Linger .

cody
fuente
6

Permítanme insistir en el punto de vista tocado por la respuesta de Cody.

λλλλ

Mf

Mx¯l(|x|)f(x)¯
l(|x|)l(n)=O(nk)kf

λΘ(n)Θ(2n)λλ

λλ

λ

Esta misma sintaxis se puede utilizar para demostrar que, contrariamente a la intuición ingenua, la respuesta a la pregunta anterior es sí, de hecho: el número de pasos más a la izquierda de la forma normal es una medida de costo razonable, incluso si el tamaño explota, porque de hecho, hay otra forma de representar el mismo cálculo (usando sustituciones lineales explícitas) en el que:

  1. el tamaño no explota;
  2. λ

Todo esto se explica en el artículo de Accattoli y Dal Lago "La reducción beta es invariable, de hecho" (LICS 2014 y luego creo que hay una versión más reciente de la revista).

λ

Damiano Mazza
fuente
Lo que tenía en mente es, por ejemplo, un término que despliega un millón de pasos para generar una lista de un millón de elementos. Esto se normaliza a la lista real, que es la representación más eficiente de ese valor (es el resultado final real, no se necesitan más pasos). Pero el término desplegado en sí mismo puede ser muy pequeño.
user47376
β
Sí, es imposible como dijo Andrej. Eso respondió mi pregunta.
user47376