Khususnya, jika saya mendefinisikan baru sebagai
alih-alih
akankah -kalkulus menjadi basis kompetisi?
Dugaan saya adalah "tidak," hanya karena saya sepertinya tidak dapat membuat kombinator reguler K dari kombinator , , dan , tetapi saya tidak memiliki algoritma untuk diikuti, saya juga tidak memiliki intuisi yang baik tentang membuat sesuatu dari kombinator ini.
Sepertinya Anda dapat mendefinisikan
dengan reguler -kalkulus, tetapi saya tidak bisa benar-benar bekerja mundur dari itu untuk mendapatkan derivasi dalam hal dan sisanya.
Upaya saya pada bukti bahwa itu tidak lengkap secara fungsional pada dasarnya berusaha untuk membangun secara menyeluruh setiap fungsi yang dapat diperoleh dari kombinator ini untuk menunjukkan bahwa Anda mencapai jalan buntu (fungsi yang telah Anda lihat sebelumnya) tidak peduli kombinator apa yang Anda gunakan. Saya menyadari bahwa ini tidak selalu benar untuk set kombinator yang secara fungsional tidak lengkap (mis. Combinator sendiri tidak akan pernah menemui jalan buntu ketika diterapkan pada dirinya sendiri), tetapi ini adalah pemikiran terbaik saya. Saya selalu dapat menggunakan kombinator untuk menyelinap keluar dari apa yang saya pikir akhirnya menemui jalan buntu, jadi saya tidak lagi yakin dengan kelayakan pendekatan ini.
Saya menanyakan pertanyaan ini di StackOverflow tetapi didorong untuk mempostingnya di sini. Saya menerima beberapa komentar pada posting itu, tetapi saya tidak yakin saya memahaminya dengan benar.
Bonus: jika itu bukan dasar yang lengkap, apakah bahasa yang dihasilkan tetap Turing-lengkap?
Jawaban:
Pertimbangkan istilahS, K2, saya kalkulus sebagai pohon (dengan simpul biner mewakili aplikasi, dan S, K2 daun K 2 mewakili kombinator.
Misalnya, istilahS(SS)K2 akan diwakili oleh pohon
Untuk setiap pohonT mengasosiasikan daun paling kanan, yang Anda dapatkan dengan mengambil cabang kanan pada setiap K2 .
@
. Sebagai contoh, daun paling kanan dari pohon di atas adalahSeperti dapat dilihat dari seni ASCII di bawah ini, semua aturan reduksi dalamS,K2,I kalkulus mempertahankan daun paling kanan.
Dari sana, mudah untuk melihat bahwa jika beberapa istilahT dikurangi menjadi T′ , maka T dan T′ memiliki daun paling kanan yang sama. Oleh karena itu, tidak ada istilah T dalam S,K2,I kalkulus I sehingga TK2S berkurang menjadi K2 . Namun, KK2S mengurangi ke K2 , maka K tidak dapat dinyatakan dalam S,K2,I kalkulus.
sumber
EDIT: Seperti komentar menunjukkan, ini hanya jawaban parsial, karena hanya berlaku untuk hanya diketikS, K2, saya kalkulus (atau lebih tepatnya, itu menunjukkan bahwa tidak ada definisi yang mungkin dari K yang tidak mengandung subtipe salah ketik). Jika tidak ada keberatan, saya tidak akan menghapusnya, karena ini menyajikan teknik bukti yang sangat produktif untuk pengaturan yang diketik.
Ingatlah bahwa kombinator kami memiliki tipe berikut (Gaya kari, jadiA , B , C adalah variabel):
t,f,u
t
t
t
f
u
t
sumber