No todos los tipos son iguales en complejidad: algunos son triviales (contractibles), otros tienen a lo sumo un elemento (proposiciones), otros se comportan como conjuntos discretos, y otros tienen estructura de caminos arbitrariamente compleja. Los niveles de homotopía (h-levels) clasifican esta complejidad.
Equivalencias
A veces queremos que los tipos se comporten como proposiciones (sin estructura). Otras veces nos interesa su estructura. Necesitamos una buena noción de "ser equivalencia" que sea ella misma una proposición.
Definición 1 — Equivalencia
Una función f:A→B es una equivalencia si:
isEquiv(f):≡∏b:BisContr(∑a:Af(a)=b)
Es decir, cada fibra ∑a:Af(a)=b es contractible.
Escribimos A≃B:≡∑f:A→BisEquiv(f).
Ejemplo 1
Todo tipo contractible es equivalente a 1.
Teorema 2 — Reflexividad de equivalencias
Para todo tipo A, A≃A. Luego podemos definir una función:
idtoequiv:(A=B)→(A≃B)
El axioma de univalencia
Axioma 1 — Axioma de Univalencia
ua:isEquiv(idtoequiv)
Es decir, la función canónica (A=B)→(A≃B) es ella misma una equivalencia. Luego:
(A=B)≃(A≃B)
Niveles de homotopía
Definición 2 — h-level
Un tipo T tiene h-level 0 (es contractible) si:
hlevel0T:≡∑t:T∏s:Ts=t
Un tipo T tiene h-level S(n) si:
hlevel(Sn)T:≡∏s,t:Thleveln(s=t)
Esto define una función hlevel:N→Type→Type.
h-level 0: Contractibles
Definición 3 — Tipos contractibles
Un tipo T es contractible si tiene un centro de contracción: un punto t:T tal que todo otro punto es igual a t.
Ejemplo 3
1 es contractible.
h-level 1: Proposiciones
Definición 4 — Proposiciones (isProp)
Un tipo T es una proposición si cualesquiera dos elementos son iguales:
isProp(T):≡∏x,y:Tx=y
Equivalentemente, T tiene h-level 1.
Ejemplo 4
∅ y 1 son proposiciones.
Teorema 5 — Proposición habitada es contractible
Si una proposición está habitada, entonces es contractible.
Intuitivamente, una proposición es ∅ o 1. Así, las proposiciones se comportan como las proposiciones lógicas clásicas, donde Σ se comporta como ∃, etc.
Teorema 6 — Contractible implica proposición
Todo tipo contractible es una proposición.
h-level 2: Conjuntos
Definición 5 — Conjuntos (isSet)
Un tipo T es un conjunto si todos sus tipos de igualdad son proposiciones:
isSet(T):≡∏s,t:TisProp(s=t)
Equivalentemente, T tiene h-level 2.
Ejemplo 7
bool y N son conjuntos (de hecho, sus tipos de igualdad son proposiciones).
h-level 3: Groupoids
Definición 6 — Groupoids
Un tipo de h-level 3 es un groupoid: sus tipos de igualdad son conjuntos.
Teorema 8 — Type tiene h-level al menos 3
El tipo universo U tiene h-level al menos 3 (es un groupoid).
Teorema 9 — Cumulative h-levels
Si un tipo T tiene h-level n, entonces tiene h-level n+1.
Univalencia para la lógica y los conjuntos
Definición 7 — Subtipos
Dado un tipo T y un predicado P:T→Prop, el subtipo de T dado por P es:
∑t:TP(t)
La proyección π1:∑t:TP(t)→T nos da la "inclusión".
Ejemplo 10
isContr, isProp y isSet son todos predicados (sus valores son proposiciones). Luego son predicados U→Prop.
Definición 8 — Prop y Set
Prop:≡∑P:TypeisProp(P)Set:≡∑S:TypeisSet(S)
Teorema 11 — Univalencia para proposiciones
El axioma de univalencia implica:
(P=PropQ)≃(P↔Q)
donde P↔Q es una proposición. Luego Prop es un conjunto.
Teorema 12 — Univalencia para conjuntos
El axioma de univalencia implica:
(P=SetQ)≃(P≅Q)
donde P≅Q es un conjunto. Luego Set es un groupoid.
donde ≅ denota isomorfismo de grupos. Luego Grp es un groupoid.
Teorema 14 — Principio de univalencia para estructuras algebraicas
El mismo principio vale para cualquier estructura algebraica sobre un conjunto: la igualdad en el tipo de tales estructuras coincide con el isomorfismo.
Moraleja: la univalencia nos permite hacer matemáticas up to la noción apropiada de equivalencia en cada tipo. Esto se conoce como el principio de identidad de estructura (Aczel, Coquand) o la identidad de los indiscernibles (Leibniz).