Teori tipe konstruktif dengan interpretasi dasarnya di bawah korespondensi curry howard hanya terdiri dari total, fungsi yang dapat dihitung. Dalam literatur, beberapa telah dikatakan menggunakan "teori tipe komputasi" untuk mewakili non-terminasi dalam program fungsional, namun dalam makalah yang saya temui, ini tampaknya tidak menjadi motivasi utama untuk teori (Misalnya Benton menyebutkan non-determinisme, kelanjutan, dan pengecualian, tanpa menjelaskan lebih lanjut tentang non-terminasi), jadi saya belum menemukan makalah yang memberikan interpretasi kuat tentang non-terminasi menggunakan teori tipe komputasi.
Secara khusus, apa yang saya cari adalah cara yang memberikan jenis yang mewakili kemungkinan perhitungan tipe , mungkin tidak berakhir , harus ada beberapa gagasan bukti bahwa mengakhiri jenis , sehingga diberikan dan , kita dapat membangun sebuah istilah .T ( A ) x : T ( A ) H ( x ) x : T ( A ) p : H ( x ) ˜ x : A
Motivasi saya untuk ini adalah, saya ingin akhirnya dapat secara lebih formal menghubungkan gagasan dalam teori kompleksitas komputasi ke teori tipe konstruktif. Secara khusus, saya tertarik pada kekuatan apa sebagai teori konstruktif jenis mendapatkan dengan akses ke oracle berhenti, dan untuk melakukannya, saya tentu saja perlu benar-benar memiliki gagasan formal tentang kemungkinan non-pemutusan, dan bukti berhenti untuk pergi bersama dengan itu di dalam kerangka teori tipe.
sumber
Jawaban:
Karena salah satu aplikasi utama dari Teori Tipe dalam formalisasi adalah mempelajari bahasa pemrograman dan perhitungan secara umum, banyak pemikiran telah digunakan untuk mewakili kemungkinan program yang tidak berakhir.
Saya tidak akan membuat survei lengkap di sini, tapi saya akan mencoba dan memberikan petunjuk tentang arah utama dari berbagai arah.
Pendekatan "relasional": Anda dapat mendefinisikan program hipotetis Anda seperti kata relasi, yang berlaku jika didefinisikan pada dan . Ini biasanya dilakukan dengan predikat T-Kleene . Ini bekerja dengan baik dalam formalisasi teori tipe seperti halnya dalam logika klasik, (meskipun tentu saja Anda tidak dapat membuktikan ).f x f ( x ) = y ∀ x ( ∃ y , F x y ) ∨ ( ¬ ∃ y , F x y )F x y f x f(x)=y ∀x(∃y,F x y)∨(¬∃y,F x y)
Cara yang lebih canggih untuk melakukan ini adalah metode "Bove-Capretta" (lihat Pemodelan Rekursi dalam Teori Tipe , yang untuk setiap fungsi rekursif, mendefinisikan "predikat yang dapat diakses" yang mengkodekan fakta bahwa perhitungan yang diberikan adalah terbatas. Definisi fungsi mengambil argumen tambahan yang merupakan bukti bahwa input yang diberikan dapat diakses. Untuk mendefinisikan fungsi tanpa predikat tambahan ini, Anda perlu membuktikan bahwa setiap kombinasi input yang mungkin dapat diakses.
Pendekatan "koinduktif": ini mungkin pendekatan yang paling dieksplorasi, dan apa yang disebut komentar Andrej. Perhitungan tipe didefinisikan sebagai tipe induktif (dari tautan Andrej , oleh Capretta, Altenkirch & Uustalu:A
Ini mengkode aliran
Later
token yang kemungkinan tak terbatas ("ticks" of computation) mungkin berakhir dengan hasilNow a
. Non-terminasi setara dengan menjadi bisimilar dengan program iniloop = Loop selanjutnya dan terminasi dapat didefinisikan oleh predikat induktif atas
Delay A
:Saya pikir agda-istas memiliki banyak hal untuk dikatakan tentang hal ini yang mereka sebut sebagai parsialitas monad (lihat misalnya Danielsson ).
Pendekatan "teori tipe parsial" : ini sedikit lebih eksperimental (teorinya masih dikerjakan), tetapi ada beberapa teori tipe yang sedang dikembangkan untuk mengatasi kenyataan bahwa pada dasarnya ada dua jenis fungsi yang ingin kita lakukan. tulis dalam teori tipe: istilah bukti dan program. Ternyata menjadi sulit untuk mendapatkan teori yang masuk akal tentang hal-hal ini (dan mempertahankan konsistensi teori), tetapi upaya serius dilakukan di sini oleh Casinghino et al , dan upaya serupa oleh Kimmel et al .
Saya yakin ada pendekatan lain yang tidak saya sadari, dan saya akan senang jika seseorang ingin melengkapi daftar ini.
Saya mungkin harus mencatat bahwa menambahkan oracle terminasi ke (konsisten) teori jenis adalah banyak seperti menambahkan oracle kebenaran bagi kalimat, dengan konsekuensi yang relatif dipahami dengan baik.Π01
Ada interaksi lain yang cukup bermanfaat antara teori tipe dan teori kompleksitas, biasanya di bawah payung kompleksitas komputasi implisit .
sumber