¿Es la inducción de ruta constructiva?

17

Estoy leyendo el libro de HoTT y tengo dificultades con la inducción del camino.

Cuando miro el tipo en la sección 1.12.1 :

ind=A:C:x,y:A(x=Ay)U((x:AC(x,x,reflx))x,y:Ap:x=AyC(x,y,p)),
no tengo problemas para entender lo que eso significa (acabo de escribir el tipo de memoria, para comprobarlo).

Con lo que tengo problemas es con la siguiente declaración:
mi primera impresión fue que esta última expresión nodefinela función resultante f : x , y : A p : x = A y C ( x , y , p ) , pero soloestablece su propiedad.

with the equalityind=A(C,c,x,x,reflx):≡c(x)
f:x,y:Ap:x=AyC(x,y,p),

Esto contrasta con los ejemplos anteriores de los principios de inducción , ind A + B o ind N - existen ecuaciones definitorias para esos elementos - en realidad sabemos cómo construir la función resultante, dadas las premisas. Lo cual está de acuerdo con la "constructividad" de la teoría de tipos anunciada en todo el capítulo.indA×BindA+BindN

Volviendo a , sospechaba que (parece) que no está definido. Afirmar que el elemento f simplemente existe parece estar fuera de sintonía con el resto del capítulo. Y, de hecho, la sección 1.12.1 parece enfatizar que mi impresión es incorrecta y de hecho hemos definidoind=AF

... la función definida por la inducción de ruta de c : x : A C ( x , x , refl x ) , que además satisface f ( x , x , refl x )f:x,y:Ap:x=AyC(x,y,p),
c:x:AC(x,x,reflx)
...f(x,x,reflx):≡c(x)

Eso me deja completamente confundido, pero tengo la sensación de que este punto es muy importante para todos los desarrollos posteriores. Entonces, ¿con cuál de las dos lecturas para debería ir? ¿O, probablemente, me falta alguna sutileza importante y la respuesta es "ninguna"? ind=A

Kostya
fuente
Por cierto, esta no es realmente una pregunta específica de HoTT, sino una pregunta más general de "tipos dependientes".
cody

Respuestas:

12

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:1TypeC()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, establezcaC(x)= N ya=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 1
ind1(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.421ind1eee

¿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).e1e

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 sabemos cómo calcular con i n d 1 , pero:1ind1

  1. 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

  2. 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").1ind1

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 )HN×{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=1n-th machine halts)(d=0n-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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Andrej Bauer
fuente
Creo que esta respuesta está ahora (parcialmente) desactualizada
WorldSEnder
De hecho, mientras tanto, la teoría del tipo cúbico dio una respuesta positiva: hay un modelo constructivo de la teoría del tipo univalente.
Andrej Bauer el
7

No soy una persona de HoTT, pero arrojaré mis dos centavos.

fA:x,y:Ap:x=AyC(x,y,p)
How would we do this? Well, suppose we're given any x,y:A and a proof of their equality p:x=Ay. Since I know nothing about the arbitrary type A, I know nothing about the `structure' of x,y. However, I know something about the specific equality type: it has a single constructor,
refla:a=Aa, for any a:A
Hence, prefla for some a:A, but this would force x=a=y. Hence, if we had an element of C(x,x,reflx) for any x:A; ie if we had a function
baseC:x:AC(x,x,reflx)
(for our specific C), then our function fA can be defined as follows:
fA(x,y,p):=baseC(x,x,p)
.

Getting rid of the subscripts leads to the general inductive definition.

Hope that helps!


PS. I'm no HoTT guy, so I'm assuming `Axiom K'. More precisely, I'm assuming that an element e of type E must be the result of repeated applications of constructor of E. Hasta donde sé, HoTT, probablemente el capítulo 2 en adelante, desecha esta noción ... y eso no tiene absolutamente ningún sentido para mí.

Musa Al-hassy
fuente
1
Quizás pueda entenderlo, o al menos preocuparse por sus intuiciones actuales al consultar math.andrej.com/2013/08/28/the-elements-of-an-inductive-type donde trato de explicar por qué Es perjudicial pensar que los términos cerrados de un tipo son todo lo que hay para un tipo.
Andrej Bauer
2
By the way, you need not asssume Axiom K. For your answer to make sense, you need to know that every closed term of an identity type normalizes to refl. This has nothing to do with Axiom K, as such a normalization property does not prove axiom K, nor does it follow from axiom K.
Andrej Bauer
3

Soy un tipo aficionado de HoTT, así que intentaré complementar la ya excelente respuesta de Moisés. Déjame tomar el tipoUN×si as an example. The basic principle of constructive type theory, as outlined by Martin-Löf, is that *every element of A×B is described as being in the image of the constructor:

pair : ABA×B
This philosophy allows us to define elimination: to build a function f out of A×B, it suffices to describe its action on the image of pair.

But since pair is a constructor (and so is in particular injective), this means exactly that to build a function f:A×BC, it suffices to describe it's action on a pair of elements in A and B, so

f:ABC
is sufficient to describe such an f. In conclusion, there is a canonical way to define functions out of A×B, and this can be encapsulated in the type
(ABC)(A×BC)
but this is exactly the type of indA×B.

But this is only half of the story: what happens if this newly constructed f is applied to a given pair(a,b)? Well then f should agree with its defining function f, i.e.

F(pagunyor(un,si)) : = F un si
es decir
yonortereUN×si F pagunyor(un,si) : = F un si
y esto debería tener definición (o computacionalmente ), lo que significa que los dos deberían ser completamente intercambiables en todas las situaciones (que es muy diferente de la= en HoTT).

Entonces verá que la definición de un eliminador para el tipo inductivo con constructores dados viene en 2 pasos:

  1. Un principio de existencia , que describe el tipo deyonortere.

  2. a coherence principle which defines the computational behavior of ind. In category theory, this would correspond to uniqueness of the eliminator in some sense.


Let me argue that this is the same for the =A type. We want to build, given x,y:A and p:x=y, an element of C (we're forgetting the dependencies for simplification). To do that, we need to assume that p was built using a constructor for the type x=y, which can only be refl(z) for some z. This means that to give a function

F:ΠX,y:UN,X=yC
es suficiente para dar una función
F:Πz:UN,C
que se define para rmiFl(z) (de nuevo, olvidando las dependencias en C)

Ahora, ¿qué dice el principio de coherencia? Bueno, simplemente que si se aplica a un constructor conocido,F debería comportarse como F, lo que significa

F z z rmiFl(z): =F z

¡Pero eso es exactamente lo que tienes arriba! El mismo principio que nos dio la existencia y coherencia para el eliminador deUN×si nos da la existencia y coherencia para el eliminador de =UN.

cody
fuente