Bisakah saya memiliki "tipe coproduct tergantung"?

14

Saya membaca buku HoTT dan saya punya (mungkin sangat naif) pertanyaan tentang hal-hal di bab satu.

Bab ini memperkenalkan tipe fungsi

f:AB
dan kemudian menyamaratakannya dengan membuat B bergantung pada x:A
B:AU,g:x:AB(x)
dan itu disebuttipe fungsi dependen.

Bergerak maju, bab kemudian memperkenalkan jenis produk dan kemudian menggeneralisasikannya dengan membuat B bergantung pada x : A B : A U ,

f:A×B
Bx:A dan itu disebuttipe pasangan dependen.
B:AU,g:x:AB(x)

Saya pasti bisa melihat polanya di sini.

Bergerak maju , bab kemudian memperkenalkan tipe produk dan ... combobreaker ... tidak ada diskusi tentang versi dependen dari jenis ini.

f:A+B

Apakah ada batasan mendasar pada hal itu atau hanya tidak relevan untuk topik buku ini? Bagaimana pun, bisakah seseorang membantu saya dengan intuisi tentang mengapa fungsi dan jenis produk? Apa yang membuat keduanya begitu istimewa sehingga mereka bisa digeneralisasikan ke tipe dependen dan kemudian digunakan untuk membangun yang lainnya?

Kostya
sumber

Jawaban:

18

A×B A+BA×B

ABP:boolUP(false)=AP(true)=Bb:boolP(b)A+BA×Bb:boolP(b)

Andrej Bauer
sumber
A
1

Saya akan membicarakan ini lebih banyak software-engineering-ly.

Apakah Anda berbicara tentang jenis produk yang konstruktor terakhirnya dapat merujuk ke yang sebelumnya (yang, terlihat sangat mirip dengan produk yang bidang terakhirnya dapat merujuk ke yang sebelumnya)? Ini dimungkinkan di Agda setelah HIT diperkenalkan (dalam versi 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

Dengan mengikuti makalah ini , jika pemeriksa tipe Anda memeriksa definisi yang didefinisikan menggunakan sintaks yang disajikan dalam gambar "(26)", saya percaya itu cukup sederhana untuk mendukung "coproducts dependen".

ice1000
sumber