¿Puedo tener un "tipo de coproducto dependiente"?


14

Estoy leyendo el libro de HoTT y tengo una pregunta (probablemente muy ingenua) sobre las cosas en el capítulo uno.

El capítulo presenta el tipo de función y luego lo generaliza haciendo que dependa de y eso se llama el tipo de función dependiente .

f:AB
Bx:A
B:AU,g:x:AB(x)

Continuando, el capítulo presenta el tipo de producto y luego lo generaliza haciendo que dependa de B: A \ to \ mathcal {U}, \ qquad g: \ sum_ {x: A} B (x) y eso se llama el tipo de par dependiente .

f:A×B
Bx:A
B:AU,g:x:AB(x)

Definitivamente puedo ver un patrón aquí.

Continuando, el capítulo luego presenta el coproducto tipo

f:A+si
y ... combobreaker ... no hay discusión sobre la versión dependiente de este tipo.

¿Hay alguna restricción fundamental sobre eso o simplemente es irrelevante para el tema del libro? En cualquier caso, ¿alguien puede ayudarme con la intuición de por qué funcionan y los tipos de productos? ¿Qué hace que esos dos sean tan especiales que se generalicen a tipos dependientes y luego se usen para construir todo lo demás?

Respuestas:


18

La suma dependiente es una generalización común tanto de la cartesiano producto y el coproducto . Sucede que el libro HoTT introduce una suma dependiente generalizando , porque eso no requiere que el tipo booleano se defina primero.A + B A × BUN×si UN+siUN×si

El coproducto es un caso especial de suma dependiente. Tipos dados y , consideran el tipo de familia definida por y . La suma dependiente de es equivalente a . Por cierto, también puede obtener como producto dependiente .B P : b o o lU P ( f a l s e ) = A P ( t r u e ) = B b : b o o l P ( b ) A + B A × B b : b o o l P ( b )UNsiPAG:sioolUPAG(Funlsmi)=UNPAG(trtumi)=sisi:sioolPAG(si)UN+siUN×sisi:sioolPAG(si)

Pregunta qué tiene de especial los productos y los tipos de funciones. Hay muchas, muchas razones por las que y son "necesarios". En términos de lógica, son necesarios porque corresponden a y por la correspondencia de proposiciones como tipos (pero eso solo cambia la pregunta a "¿por qué son y necesarios?"). En términos de teoría de categorías, y son necesarios porque son los adjuntos izquierdo y derecho a la sustitución. Haga una pregunta más específica si desea saber más.


Hola. ¿Puedo preguntar cómo puede mostrar que " y están a la izquierda y a la derecha junto a la sustitución"? ¿Qué categorías se usarían?
ChoMedit

Supongo que la sustitución es algo así como un functor diagonal y funciona como la categoría índice de la misma. Entonces, tal vez la categoría presunta es la categoría de tipos. UN
ChoMedit

1

Hablaré sobre esto más ingeniería de software.

¿Estás hablando de un tipo de coproducto cuyos últimos constructores pueden referirse a los anteriores (que se parece bastante a un producto cuyos últimos campos pueden referirse a los anteriores)? Esto es posible en Agda después de la introducción de HIT (en la versión 2.6.0):

-- Auxiliary definition: Nat
data Nat : Set where
  zero : Nat
  succ : Nat -> Nat

-- The HIT I was talking about
data Int : Set where
  positive : Nat -> Int
  negative : Nat -> Int
  -- Note this constructor uses `positive` and `negative`.
  zeroPath : positive zero ≡ negative zero

Siguiendo este documento , si su verificador de tipo verifica las definiciones definidas usando la sintaxis presentada en la figura "(26)", creo que es bastante simple admitir "coproductos dependientes".

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.