Es una ilusión que las reglas de cálculo "definen" o "construyen" los objetos de los que hablan. Usted observó correctamente que la ecuación para no la "define", pero no pudo observar que lo mismo es cierto en otros casos también. Consideremos el principio de inducción para la unidad tipo 1 , que parece particularmente "determinado". De acuerdo con la Sección 1.5 del libro HoTT, tenemos
i n d 1 : ∏ C : 1 → T y p e C ( ⋆ ) → ∏ x : 1 Pind=A1
con la ecuación
ind1:∏C:1→TypeC(⋆)→∏x:1P(x)
¿Esta "definir" o "constructo"
i n d 1 en el sentido de que no deja ninguna duda en cuanto a lo
i n d 1 "hace"? Por ejemplo, establezca
C(x)= N y
a=42, y considere lo que podríamos decir sobre
i n d 1 (C,42,ind1(C,c,⋆)=c.
ind1ind1C(x)=Na=42
para una expresión dada
e de tipo
1ind1(C,42,e)
e1 . Su primer pensamiento podría ser que podemos reducir esto a
porque "
⋆ es el único elemento de
1 ". Pero para ser bastante precisos, la ecuación para
i n d 1 es aplicable solo si mostramos
e ≡ ⋆ , que es imposible cuando
e es una variable, por ejemplo. Podemos tratar de evitar esto y decir que solo estamos interesados en el cálculo con términos cerrados, por lo que
e debería estar cerrado.
42⋆1ind1e≡⋆ee
¿No es el caso de que cada término cerrado de tipo 1 es juiciosamente igual a ⋆ ? Eso depende de detalles desagradables y pruebas complicadas de normalización, en realidad. En el caso de HoTT, la respuesta es "no" porque e podría contener instancias del Axioma de Univalencia, y no está claro qué hacer al respecto (este es el problema abierto en HoTT).e1⋆e
Podemos eludir el problema con univalance considerando una versión de la teoría tipo que no tiene buenas propiedades de manera que cada término cerrado de tipo es igual a judgmentally ⋆ . En ese caso, es justo decir que sí sabemos cómo calcular con i n d 1 , pero:1⋆ind1
Lo mismo se aplicará al tipo de identidad, ya que cada término cerrado de un tipo de identidad será igual a algunos , y entonces la ecuación para i n d = A nos dirá cómo calcular.refl(a)ind=A
El hecho de que sepamos cómo calcular con términos cerrados de un tipo, no significa que hayamos definido realmente algo porque hay más de un tipo que sus términos cerrados , como intenté explicar una vez.
Por ejemplo, la teoría de tipos de Martin-Löf (sin los tipos de identidad) se puede interpretar teóricamente en el dominio de tal manera que contenga dos elementos ⊥ y ⊤ , donde ⊤ corresponde a ⋆ y ⊥ a la no terminación. Por desgracia, dado que no hay forma de escribir una expresión sin terminación en la teoría de tipos, no se puede nombrar ⊥ . En consecuencia, la ecuación para i n d 1 no no nos dice cómo calcular el ⊥ (las dos opciones obvias ser "entusiasmo" y "pereza").1⊥⊤⊤⋆⊥⊥ind1⊥
En términos de ingeniería de software, diría que tenemos una confusión entre la especificación y la implementación . Los axiomas HoTT para los tipos de identidad son una especificación . La ecuación no nos dice cómo calcular o cómo construir i n d = Cind=C(C,c,x,x,refl(x))≡c(x)ind=C , sino más bien que sin embargo está "implementado", requerimos que satisfaga la ecuación. Es una pregunta separada si tal i n d = C se puede obtener de manera constructiva.ind=Cind=C
Por último, estoy un poco cansado de cómo usas la palabra "constructivo". Parece que piensas que "constructivo" es lo mismo que "definido". Según esa interpretación, el oráculo de detención es constructivo, porque su comportamiento se define por el requisito que le imponemos (es decir, que genera 1 o 0 según si la máquina dada se detiene). Es perfectamente posible describir objetos que solo existen en un entorno no constructivo. Por el contrario, es perfectamente posible hablar de manera constructiva sobre propiedades y otras cosas que en realidad no se pueden calcular. Aquí hay uno: la relación definida por
H ( n , d )H⊆N×{0,1}
es constructiva, es decir, no hay nada de malo en esta definición desde un punto de vista constructivo. Sucede que de manera constructiva no se puede demostrar que H es una relación total, y su mapa característico χ H : N × { 0 , 1 } → P r o p no factoriza a través de b o o l
H(n,d)⟺(d=1⇒n-th machine halts)∧(d=0⇒n-th machine diverges)
HχH:N×{0,1}→Propbool, por lo que no podemos "calcular" sus valores.
Anexo: El título de su pregunta es "¿Es la inducción de ruta constructiva?" Después de haber aclarado la diferencia entre "constructivo" y "definido", podemos responder la pregunta. Sí, se sabe que la inducción de ruta es constructiva en ciertos casos:
Si nos limitamos a la teoría de tipos sin Univalencia para que podamos mostrar una fuerte normalización, entonces la inducción de ruta y todo lo demás es constructivo porque hay algoritmos que realizan el procedimiento de normalización.
Existen modelos de realizabilidad de la teoría de tipos, que explican cómo cada término cerrado en la teoría de tipos corresponde a una máquina de Turing. Sin embargo, estos modelos satisfacen el Axioma K de Streicher, que descarta la Univalencia.
Hay una traducción de la teoría de tipos (nuevamente sin Univalencia) a la teoría de conjuntos constructiva CZF. Una vez más, esto valida el axioma K. de Streicher.
Hay un modelo de grupo dentro de los modelos de realizabilidad que nos permite interpretar la teoría de tipos sin Streicher's K. Este es un trabajo preliminar de Steve Awodey y yo.
Realmente necesitamos resolver el estado constructivo de la Univalencia.