Apakah kalkulus SK2 merupakan basis yang lengkap, di mana K2 adalah combinator K terbalik?

10

Khususnya, jika saya mendefinisikan baru sebagai alih-alih akankah -kalkulus menjadi basis kompetisi?K2

K2=λx.(λy.y)
K=λx.(λy.x)
{S,K2,I}

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.SIK2

Sepertinya Anda dapat mendefinisikan dengan reguler -kalkulus, tetapi saya tidak bisa benar-benar bekerja mundur dari itu untuk mendapatkan derivasi dalam hal dan sisanya.

K2=Ksaya
{S,K,(saya)}KK2

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.KS

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?

cole
sumber
ini adalah teka-teki yang bagus. Tampaknya S dan K 'hanya memungkinkan Anda untuk menghasilkan istilah yang bentuk normal kepalanya memiliki hingga tiga λs (yaitu, istilah yang dinormalisasi ke bentuk λx₁.λx₂.λx₃. Xᵢ t₁ ... tₙ), sehingga mungkin rute lain untuk membuktikan ketidaklengkapan, meskipun tampaknya agak sulit untuk diformalkan. Anda pasti tidak pernah mencapai "jalan buntu", meskipun: mulai dengan mendefinisikan I = λx.x = K2 K2, kemudian dengan mengulangi transformasi t ↦ S t K2 Anda dapat mengekspresikan λx.x I ... I untuk string apa pun dari Is .
Noam Zeilberger
... Dan maaf, dengan "ketidaklengkapan", maksud saya ketidaklengkapan dari SK 'sebagai dasar kombinasi untuk kalkulus lambda yang tidak diketik. Saya juga tidak memiliki intuisi yang baik apakah itu Turing-complete (yang akan tersirat oleh kelengkapan kombinasi, tetapi tidak sebaliknya).
Noam Zeilberger
Diposting silang: stackoverflow.com/q/55148283/781723 , cs.stackexchange.com/q/108741/755 . Tolong jangan posting pertanyaan yang sama di beberapa situs . Setiap komunitas harus memiliki kesempatan jujur ​​untuk menjawab tanpa ada waktu yang terbuang.
DW
Kesalahan saya @DW, adakah yang bisa saya lakukan untuk memperbaiki ini?
cole

Jawaban:

14

Pertimbangkan istilah S,K2,saya kalkulus sebagai pohon (dengan simpul biner mewakili aplikasi, dan S,K2 daun K 2 mewakili kombinator.

Misalnya, istilah S(SS)K2 akan diwakili oleh pohon

        @
       / \
      /   \
     @    K2
    / \
   /   \
  S     @
       / \
      /   \
     S     S

Untuk setiap pohon T mengasosiasikan daun paling kanan, yang Anda dapatkan dengan mengambil cabang kanan pada setiap @. Sebagai contoh, daun paling kanan dari pohon di atas adalah K2 .

Seperti dapat dilihat dari seni ASCII di bawah ini, semua aturan reduksi dalam S,K2,saya kalkulus mempertahankan daun paling kanan.

         @                           @
        / \                         / \
       /   \                       /   \
      @     g    [reduces to]     @     @
     / \                         / \   / \
    /   \                       e   g f   g
   @     f                 
  / \
 /   \
S     e
      @
     / \
    /   \
   @     f    [reduces to]   f
  / \
 /   \
K2    e

Dari sana, mudah untuk melihat bahwa jika beberapa istilah T 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.

ZAK
sumber
Argumen yang sangat bagus!
Noam Zeilberger
Argumennya sangat apik dan jelas. Terima kasih. Mungkin saya akan membuka pertanyaan terpisah untuk bertanya tentang kelengkapan Turing.
cole
5

EDIT: Seperti komentar menunjukkan, ini hanya jawaban parsial, karena hanya berlaku untuk hanya diketik S,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, jadi SEBUAH,B,C adalah variabel):

  • K:SEBUAHBSEBUAH
  • K2:SEBUAHBB
  • S:(SEBUAHBC)(SEBUAHB)(SEBUAHC)
  • saya:SEBUAHSEBUAH

Ksaya,S,K2SEBUAHBB,(SEBUAHBC)(SEBUAHB)(SEBUAHC),SEBUAHSEBUAHSEBUAHSEBUAHBBSEBUAHBSEBUAH

t,f,uSEBUAHBB(SEBUAHBC)(SEBUAHB)(SEBUAHC)SEBUAHSEBUAHt

A B | A -> B
t t | t
t f | f
f t | t
f f | t
t u | f
f u | t
u t | t
u f | f
u u | t

K2,S,sayattSEBUAHBSEBUAHfuSEBUAHtBS,K2,saya

ZAK
sumber
1
Saya suka pendekatannya, tetapi bisakah Anda mengklarifikasi aturan apa yang Anda ambil sebagai kalkulus berurutan Anda?
Noam Zeilberger
Bisakah Anda membuat sketsa untuk membuktikan S dalam kalkulus urutan terbatas ini? Sepertinya tidak mungkin dengan aturan yang saya duga Anda maksudkan.
Robin Houston
1
@ robin-houston: silakan lihat hasil edit saya (saya juga menambahkan argumen semantik yang berbeda dengan kesimpulan yang sama).
ZAK
2
Saya setuju dengan Charles Stewart (di sini: twitter.com/txtpf/status/1123962607306706944 ) bahwa tidak jelas bagaimana cara beralih dari tidak dihuni dalam kalkulus lambda yang diketik sederhana menjadi tidak dapat diekspresikan menggunakan kombinator. Mungkin ada argumen khusus untuk K, tetapi langkah awal "... maka orang juga bisa melakukan hal yang sama pada λ-kalkulus yang diketik sederhana" tidak berlaku secara umum (Charles menyebutkan contoh berlawanan dari kombinator Y) . Apakah Anda melihat membuat argumen ini keras?
Noam Zeilberger
1
K