Posso avere un "tipo di coprodotto dipendente"?


14

Sto leggendo il libro HoTT e ho una domanda (probabilmente molto ingenua) sulle cose nel primo capitolo.

Il capitolo introduce il tipo di funzione e quindi lo generalizza rendendo B dipendente da x : A B : A U ,

f:UNB
BX:UN e questo è chiamatotipo di funzione dipendente.
B:UNU,g:ΠX:UNB(X)

Passando, il capitolo introduce quindi il tipo di prodotto e quindi lo generalizza rendendo B dipendente da x : A B : A U ,

f:UN×B
BX:UN e questo è chiamatotipo di coppia dipendente.
B:UNU,g:ΣX:UNB(X)

Posso sicuramente vedere uno schema qui.

Passando, il capitolo introduce quindi il tipo di coprodotto e ... combobreaker ... non si discute della versione dipendente di questo tipo.

f:UN+B

C'è qualche restrizione fondamentale su questo o è irrilevante per l'argomento del libro? In ogni caso qualcuno può aiutarmi con intuizione sul perché funzione e tipi di prodotto? Cosa rende quei due così speciali da poter essere generalizzati a tipi dipendenti e poi usati per costruire tutto il resto?

Risposte:


18

UN×B UN+BUN×B

UNBP:BoolUP(fun'lSe)=UNP(true)=BΣB:BoolP(B)UN+BUN×BΠB:BoolP(B)

ΣΠ


ΣΠ

UN

1

Parlerò di questo più ingegneria del software.

Stai parlando di un tipo di coprodotto i cui ultimi costruttori possono fare riferimento a quelli precedenti (che, sembra abbastanza simile a un prodotto i cui ultimi campi possono fare riferimento a quelli precedenti)? Questo è possibile in Agda dopo l'introduzione di HIT (nella versione 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

Seguendo questo documento , se il verificatore del tipo controlla le definizioni definite utilizzando la sintassi presentata nella figura "(26)", credo che sia abbastanza semplice supportare "coprodotti dipendenti".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.