Ya, parametrisitas relasional adalah salah satu ide paling penting yang diperkenalkan oleh John Reynolds, jadi seharusnya tidak terlalu mengejutkan bahwa itu terlihat seperti sihir. Berikut ini adalah dongeng tentang bagaimana ia menciptakannya.
Misalkan Anda mencoba memformalkan gagasan bahwa fungsi-fungsi tertentu (identitas, peta, lipatan, pembalikan daftar) bertindak "dengan cara yang sama pada banyak jenis", yaitu, Anda memiliki beberapa gagasan intuitif tentang polimorfisme parametrik, dan Anda telah merumuskan beberapa aturan untuk membuat peta tersebut, yaitu, polimorfik λ kalkulus atau beberapa varian awal itu. Anda perhatikan bahwa semantik teori set naif tidak berfungsi.
Sebagai contoh, kita menatap tipe ∀X:Type.X→X,
yang seharusnya hanya berisi peta identitas, tetapi semantik teori set-naif memungkinkan fungsi yang tidak diinginkan seperti
λX:Type.λa:X.if (X={0,1}) then 0 else a.
Untuk menghilangkan hal semacam ini, kita perlu memaksakan beberapa kondisi lebih lanjut pada fungsi. Sebagai contoh, kita dapat mencoba beberapa teori domain: lengkapi setiap set X dengan urutan parsial ≤X dan mengharuskan semua fungsi menjadi monoton. Tapi itu tidak cukup memotongnya karena fungsi yang tidak diinginkan di atas adalah konstan atau identitas, tergantung pada X , dan itu adalah peta monoton.
Pesanan parsial ≤ bersifat relfeksif, transitif, dan antisimetri. Kita dapat mencoba mengubah struktur, misalnya kita dapat mencoba menggunakan urutan parsial yang ketat, atau urutan linier, atau hubungan ekivalen, atau hanya hubungan simetris. Namun, dalam setiap kasus beberapa contoh yang tidak diinginkan masuk. Sebagai contoh, hubungan simetris menghilangkan fungsi yang tidak diinginkan tetapi memungkinkan fungsi yang diinginkan lainnya (latihan).
Dan kemudian Anda memperhatikan dua hal:
- Contoh yang diinginkan tidak pernah dihilangkan, hubungan apa pun yang Anda gunakan sebagai pengganti perintah parsial ≤ .
- Untuk setiap contoh tertentu yang tidak diinginkan yang Anda lihat, Anda dapat menemukan relasi yang menghilangkannya, tetapi tidak ada relasi tunggal yang menghilangkan semuanya.
Jadi, Anda memiliki pemikiran cemerlang bahwa fungsi yang diinginkan adalah fungsi yang menjaga semua hubungan , dan model relasional lahir.
\X:Type. \a:X. if X = {(0,0), (1,0), (0,1), (1,1)} then 0 else a
Jawaban atas pertanyaan Anda benar-benar ada dalam dongeng Reynolds (Bagian 1). Biarkan saya mencoba dan menafsirkannya untuk Anda.
Dalam bahasa atau formalisme di mana jenis diperlakukan sebagai abstraksi , variabel jenis dapat berdiri untuk konsep abstrak apa pun. Kami tidak berasumsi bahwa tipe dihasilkan melalui beberapa sintaksis istilah tipe, atau kumpulan tetap dari operator tipe, atau bahwa kami dapat menguji dua tipe untuk kesetaraan, dll. Dalam bahasa seperti itu, jika suatu fungsi melibatkan variabel tipe maka satu-satunya hal fungsi yang dapat dilakukan untuk nilai-nilai jenis itu adalah untuk mengacak nilai-nilai yang telah diberikan. Itu tidak dapat menemukan nilai baru dari tipe itu, karena ia tidak "tahu" apa tipe itu! Itu adalah ide intuitif parametrik .
Kemudian Reynolds berpikir tentang cara menangkap ide intuitif ini secara matematis, dan memperhatikan prinsip berikut. Misalkan kita instantiate variabel tipe, katakan , untuk dua tipe konkret yang berbeda, katakanlah A dan A ′ , dalam instantiasi terpisah, dan ingat beberapa korespondensi R : A ↔ A ′ antara dua tipe konkret. Maka kita dapat membayangkan bahwa, dalam satu contoh, kami memberikan nilai x ∈ A ke fungsi dan, dalam contoh lain, nilai yang sesuai x ′ ∈ A ′ (di mana "sesuai" berarti bahwa x dant A A′ R:A↔A′ x∈A x′∈A′ x terkait dengan R ). Kemudian, karena fungsi tidak tahu apa-apa tentang tipe yang kami berikan untuk t atau nilai dari tipe itu, ia harus memperlakukan x dan x ′ dengan cara yang persis sama. Jadi, hasil yang kita dapatkan dari fungsi harus kembali sesuai dengan hubungan R yang telah kita ingat, yaitu, di mana pun elemen x muncul dalam hasil satu instance, elemen x ′ harus muncul di instance lain. Dengan demikian,fungsi polimorfik parametrik harus menjaga semua korespondensi relasional yang mungkin antara instantiasi variabel tipe yang mungkin.x′ R t x x′ R x x′
Gagasan pelestarian korespondensi ini bukanlah hal baru. Matematikawan telah mengetahui hal itu sejak lama. Dalam contoh pertama, mereka berpikir bahwa fungsi polimorfik harus mempertahankan isomorfisma antara instantiasi tipe. Perhatikan bahwa isomorfisme berarti gagasan korespondensi satu-ke-satu . Rupanya, isomorfisma pada awalnya disebut "homomorfisme". Kemudian mereka menyadari bahwa apa yang sekarang kita sebut "homomorfisme", yaitu, gagasan korespondensi banyak-ke-satu , akan dipertahankan juga. Pelestarian seperti itu disebut transformasi alami dalam teori kategori. Tetapi, jika kita memikirkannya dengan sungguh-sungguh, kita menyadari bahwa pelestarian homomorfisme sama sekali tidak memuaskan. Tipe dan A ′A A′ kami sebutkan sepenuhnya arbitrer. Jika kita memilih sebagai A ′ dan A ′ sebagai A , kita harus mendapatkan properti yang sama. Jadi, mengapa "korespondensi banyak-ke-satu", sebuah konsep asimetris, memainkan peran dalam merumuskan sifat simetris? Dengan demikian, Reynolds mengambil langkah besar untuk menggeneralisasi dari homomorfisme ke hubungan logis, yang merupakan korespondensi banyak-ke-banyak . Dampak penuh dari generalisasi ini belum sepenuhnya dipahami. Tetapi intuisi yang mendasarinya cukup jelas.A A′ A′ A
Ada satu kehalusan lebih lanjut di sini. Sedangkan instantiations variabel tipe dapat bervariasi sewenang-wenang, tipe konstan harus tetap. Jadi, ketika kita merumuskan korespondensi relasional untuk ekspresi tipe dengan kedua tipe variabel dan tipe konstan, kita harus menggunakan relasi yang dipilih mana pun variabel tipe muncul dan relasi identitas I K di mana pun tipe konstan K muncul. Misalnya, hubungan ekspresi untuk jenis t × I n t → Aku n t × t akan R × Saya I n t → I IR IK K t×Int→Int×t . Jadi, jikafadalah fungsi dari tipe ini, ia harus memetakan pasangan(x,n)dan yang terkait( x ′ ,n)ke beberapa pasangan(m,x)dan terkait(m, x ′ )R×IInt→IInt×R f (x,n) (x′,n) (m,x) (m,x′) . Perhatikan bahwa kami berkewajiban untuk menguji fungsi dengan menempatkan nilai yang sama untuk tipe konstan dalam dua kasus, dan kami dijamin untuk mendapatkan nilai yang sama untuk tipe konstan dalam output. Jadi, dalam merumuskan korespondensi relasional untuk ekspresi tipe, kita harus memastikan bahwa, dengan memasukkan hubungan identitas (mewakili gagasan bahwa tipe-tipe itu akan menjadi persetujuan), kita mendapatkan kembali hubungan identitas, yaitu, . Ini adalah perpanjangan identitas pentingF(IA1,…,IAn)=IF(A1,…,An) Properti.
Untuk memahami parametrik secara intuitif, yang perlu Anda lakukan adalah memilih beberapa tipe fungsi samplee, memikirkan fungsi apa yang bisa diekspresikan dari tipe-tipe itu, dan berpikir tentang bagaimana fungsi-fungsi itu berperilaku jika Anda mencolokkan instantiations yang berbeda dari variabel tipe dan nilai yang berbeda dari mereka. jenis instantiation. Izinkan saya menyarankan beberapa jenis fungsi untuk memulai: , t → I n t , I n t → t , t × t → t × t , ( t → t ) → t , ( tt→t t→Int Int→t t×t→t×t (t→t)→t .(t→t)→(t→t)
sumber
Selain itu, tergoda untuk mengidentifikasi fungsi dengan perilaku ekstensional yang sama, sehingga mengarah ke hubungan ekivalensi. Relasi parsial jika kita mengecualikan fungsi "tidak terdefinisi", yaitu fungsi yang "loop" untuk beberapa input yang terbentuk dengan baik.
Model PER adalah generalisasi dari ini.
Cara lain untuk melihat model-model ini adalah sebagai (sangat) kasus khusus dari model himpunan sederhana Teori Tipe Homotopy . Dalam kerangka itu, jenis ditafsirkan sebagai (generalisasi), set dengan hubungan, dan hubungan antara hubungan tersebut, dll. Pada tingkat terendah, kami hanya memiliki model PER.
Akhirnya, bidang matematika konstruktif telah melihat munculnya gagasan terkait, khususnya Set Theory of Bishop melibatkan menggambarkan himpunan dengan memberikan kedua elemen dan hubungan kesetaraan eksplisit, yang harus menjadi kesetaraan. Wajar untuk mengharapkan beberapa prinsip matematika konstruktif masuk ke dalam teori tipe.
sumber