Bagaimana parametrisitas relasional dapat dimotivasi?

15

Adakah cara alami untuk memahami esensi semantik relasional untuk polimorfisme parametrik?

Saya baru saja mulai membaca tentang pengertian parametrisitas relasional, "Jenis, Abstraksi, dan Polimorfisme Parametrik" ala John Reynolds, dan saya mengalami kesulitan memahami bagaimana semantik relasional termotivasi. Set semantik masuk akal bagi saya, dan saya menyadari bahwa set semantik tidak cukup untuk menggambarkan polimorfisme parametrik, tetapi lompatan ke semantik relasional tampaknya ajaib, datang sepenuhnya entah dari mana.

Apakah ada cara untuk menjelaskannya di sepanjang garis "Asumsikan hubungan pada jenis dasar dan istilah, dan kemudian interpretasi dari istilah yang diturunkan hanya hubungan alami antara ... hal seperti ini dan itu ... dalam bahasa pemrograman Anda "? Atau penjelasan alami lainnya?

Tom Ellis
sumber

Jawaban:

22

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.XX,
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:

  1. Contoh yang diinginkan tidak pernah dihilangkan, hubungan apa pun yang Anda gunakan sebagai pengganti perintah parsial .
  2. 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.

Andrej Bauer
sumber
1
Terima kasih Andrej. Hal ini menimbulkan pertanyaan lebih lanjut: apakah ada subkelas hubungan yang lebih kecil yang menghilangkan semua contoh yang tidak diinginkan?
Tom Ellis
Yah, kita mungkin dapat membatasi kompleksitas logis dari hubungan karena kita hanya perlu khawatir tentang peta yang dapat dihitung. Tetapi saya tidak cukup ahli untuk menjawab. Saya memanggil @UdayReddy.
Andrej Bauer
2
@ TomEllis Ya, dalam kasus khusus, subkelas hubungan mungkin cukup. Kasus khusus yang paling langsung adalah bahwa, jika semua operasi adalah urutan pertama, maka fungsi (total, hubungan bernilai tunggal) sudah cukup. Untuk bidang, isomorfisma parsial sudah cukup. Ingat bahwa contoh utama Reynolds adalah bidang bilangan kompleks, dan hubungan logisnya antara Bessel dan Descartes adalah isomorfisme parsial.
Uday Reddy
4
@AndrejBauer. Catat itu memiliki tepat satu elemen parametrik, tetapi elemen ad hoc terlalu banyak untuk membentuk satu set! Jadi, adabanyakpemotongan yang harus dilakukan. Sebuah teori alternatif tentang bagaimana Reynolds mendapatkan parametrisitas muncul dalam "Essence of Reynolds"kami yang akan datang. X.XX
Uday Reddy
Anda menunjukkan bahwa jika Anda mengartikan tipe sebagai set maka ada fungsi yang tidak diinginkan. Bukankah hal yang sama berlaku untuk hubungan? \X:Type. \a:X. if X = {(0,0), (1,0), (0,1), (1,1)} then 0 else a
Jules
11

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 dantAAR:AAxAxAx 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.xRtxxRxx

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 AAkami 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.AAAA

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 tI IRIKKt×IntInt×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×IIntIInt×Rf(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 , ( ttttIntInttt×tt×t(tt)t .(tt)(tt)

Uday Reddy
sumber
Akhirnya, pemanggilan saya berhasil!
Andrej Bauer
2
@AndrejBauer. Hmm, sebenarnya aku tidak dipanggil. Bisa jadi mantra @ UdayReddy hanya berfungsi di awal komentar. Bagaimanapun, tidak ada panggilan yang diperlukan. "Parametrisitas" adalah salah satu filter saya.
Uday Reddy
"satu-satunya fungsi yang dapat dilakukan untuk nilai-nilai dari tipe itu adalah untuk mengacak nilai-nilai yang telah diberikan" - sebenarnya, terlepas dari pengocokan, fungsi dapat menghapus nilai yang diberikan (melemah) dan menyalinnya (kontraksi). Karena operasi ini selalu tersedia, nilainya tidak abstrak seperti kelihatannya.
Łukasz Lew
@ ŁukaszLew, kamu benar. Saya tidak tahu apakah itu dapat dikategorikan sebagai hilangnya "abstraksi".
Uday Reddy
@UdayReddy Saya telah menghapus commend dan menanyakan ini sebagai pertanyaan yang berdiri sendiri .
Łukasz Lew
3

ω Model -set polimorfisme . Karena setiap fungsi dalam kalkulus polimorfik dapat dihitung, wajar untuk menginterpretasikan suatu tipe dengan serangkaian angka yang mewakili fungsi yang dapat dikomputasi dari tipe itu.

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.

cody
sumber
1
Ah, tetapi model PER tidak terlalu bagus dan dapat berisi fungsi polimorfik yang diunggulkan. Kita harus beralih ke model PER relasional untuk menyingkirkan mereka.
Andrej Bauer
Saya masih merasa itu memotivasi pendekatan relasional.
cody
@cody. Saya setuju. Saya menganggap PER sebagai cara membangun hubungan ke dalam "teori himpunan" sehingga kita bisa mendapatkan model yang tidak bijaksana di tempat pertama. Terima kasih telah menyebutkan teori tipe Homotopy. Saya tidak tahu itu punya ide serupa.
Uday Reddy
@UdayReddy: idenya sangat mirip! Secara khusus, gagasan "implementasi dependen kompatibel" yang menghubungkan tipe abstrak dengan dependensi dapat dipahami melalui lensa kesetaraan univalen.
cody