Kategori tertutup bicartesian untuk pesanan lengkap sebagian ketat (Hask)

8

Tampaknya menjadi terkenal bahwa bahasa pemrograman tidak dapat memiliki jumlah, produk, dan nonterminasi bersama.

Q1 . Apakah ini benar? Di bawah ini (atau di tautan di atas saya berikan) adalah argumen parsial.

Namun, pemrograman Generik Hinze dengan Adjunctions mengabaikan masalah ini, bahkan setelah membahas dengan tepat kategori mana yang terlibat. Secara khusus, ia berbicara (tampaknya tanpa keberatan) tentang Haskell dimodelkan oleh kategori pesanan parsial terus menerus yang ketat dan memiliki jumlah dan produk. Tetapi kita tahu bahwa Haskell tidak memiliki jumlah (benar?). (Bagian dari makalah ini menggunakan S e t sebagai gantinya, tetapi itu tidak memungkinkan untuk non-penghentian).SCpoSet

Q2 Jadi, apa yang saya lewatkan? Saya melihat empat opsi:

  • Orang-orang sering mengabaikan non-terminasi dengan sengaja ketika mendiskusikan Haskell. Mungkin makalah ini juga melakukannya. Tapi mengapa orang menyebutkan CPO?
  • Hambatan yang saya diskusikan dapat dihindari dengan cara yang cerdas. Secara khusus, kertas memodelkan fungsi Haskell yang tidak ketat dengan fungsi yang ketat f : A B , karena alasan lain.f:ABf:AB
  • Makalah itu menyebutkan batasannya dan saya melewatkannya. Saya telah berusaha untuk mencari sebutan ini dan gagal menemukannya.
  • Ini adalah kesalahan aktual, dan karena semua orang terus-menerus mengklaim Haskell memang tidak memiliki jumlah kategorikal (seperti yang disepakati orang lain), meskipun makalah itu mengklaim Eitherhal semacam itu. Semuanya bekerja dengan baik dalam bahasa total dengan tipe induktif dan coinductive.

Latar Belakang

AA×1A×00A

Ini berarti, misalnya, bahwa kategori set runcing , dengan objek nolnya, tidak dapat ditutup bicartesian.

ωCPOCPO

Blaisorblade
sumber

Jawaban:

11

Ya, tidak mungkin untuk memiliki CCC yang tidak muncul kembali dengan rekursi umum dan produk kategorikal. Referensi standar untuk ini adalah:

H. Huwig dan A. Poigne. Catatan tentang ketidakkonsistenan yang disebabkan oleh fixpoints dalam kategori tertutup kartesian. Ilmu Komputer Teoritis, 73: 101–112, 1990.

Namun, saya dan (kebanyakan orang lain yang saya temui) mempelajarinya dari Achim Jung dan buku pegangan Samson Abramsky bab Teori Domain , yang telah mereka sediakan gratis.

Sebagian besar kategori domain tempat orang bekerja adalah subkategori DCPO, kategori predomain, dan fungsi kontinyu. Karena predomain tidak harus memiliki titik tetap paling sedikit, kategori ini adalah bi-CCC, tetapi titik tetap hanya ada untuk fungsi ke dalam domain.

Di halaman 46 dari catatan ini, ada tabel besar yang memberi tahu Anda di mana subkategori konstruksi DCPO berbeda ada di.

Neel Krishnaswami
sumber