มีแคลคูลัสแลมบ์ดาพิมพ์ทัวริงอยู่หรือไม่?


คำตอบ:


37

แน่นอน. แลมบ์ดาแคลคูลัสที่พิมพ์จำนวนมากยอมรับการทำให้เป็นมาตรฐานอย่างยิ่งเงื่อนไขการโดยการออกแบบดังนั้นพวกเขาจึงไม่สามารถแสดงการคำนวณแบบสุ่มได้ แต่ระบบพิมพ์สามารถเป็นอะไรก็ได้ที่คุณชอบ; ทำให้มันกว้างพอและคุณสามารถแสดงการคำนวณที่กำหนดได้ทั้งหมด

ระบบประเภทเล็ก ๆ ที่ครอบคลุมชิ้นส่วนทัวริงสมบูรณ์ของแคลคูลัสแลมบ์ดานั้นเป็นระบบที่ยอมรับทุกคำศัพท์ที่พิมพ์ได้ดี ประเภทบนสุด )

Γ⊢M:⊤

ในทางปฏิบัติภาษาการเขียนโปรแกรมการทำงานแบบคงที่มีแกนแคลคูลัสแลมบ์ดาที่พิมพ์อยู่ในแกนกลางซึ่งช่วยให้ผู้จัดทำcombpointคงที่ ยกตัวอย่างเช่นเริ่มต้นด้วยแคลคูลัสแลมบ์ดาพิมพ์เพียง (หรือระบบการพิมพ์ ML หรือระบบ Fหรือระบบการพิมพ์อื่น ๆ ของทางเลือกของคุณ) และเพิ่มกฎที่ทำให้บาง Combinator fixpoint เหมือนพิมพ์ได้ดี แกมมา⊢ ฉ: T → TY=λf.(λx.f(xx))(λx.ฉ(xx))

Γ⊢ฉ:T→TΓ⊢Yฉ:TΓ⊢ฉ:T→TΓ⊢(λx.ฉ(xx))(λx.ฉ(xx)):T
Yฉ
Γ⊢แก้ไข:(T→T)→Tแก้ไขฉ→ฉ(แก้ไขฉ)

ติดกับแคลคูลัสแลมบ์ดาบริสุทธิ์ระบบประเภทที่น่าสนใจคือแคลคูลัสแลมบ์ดาที่มีประเภทจุดตัด

Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧ผม)Γ⊢M:⊤(⊤ผม)

ประเภทแยกมีคุณสมบัติที่น่าสนใจเกี่ยวกับการทำให้เป็นมาตรฐาน:

  • คำแลมบ์ดาสามารถพิมพ์ได้โดยไม่ต้องใช้ ⊤ผม กฎ iff มันเป็น normalizing อย่างยิ่ง
  • คำแลมบ์ดายอมรับประเภทที่ไม่มี ⊤ ถ้ามันมีรูปแบบปกติ

ดูลักษณะของคำแลมบ์ดาที่มีประเภทสหภาพเพื่อการเข้าใจอย่างลึกซึ้งว่าเหตุใดประเภทของการแยกจึงมีขอบเขตที่น่าทึ่ง

ดังนั้นคุณมีระบบพิมพ์ที่กำหนดภาษาทัวริงที่สมบูรณ์ (เนื่องจากทุกเทอมถูกพิมพ์อย่างดี) และการอธิบายลักษณะอย่างง่ายของการยุติการคำนวณ แน่นอนเนื่องจากระบบประเภทนี้มีลักษณะเป็นมาตรฐานจึงไม่สามารถตัดสินใจได้

ข้อสังเกตเกี่ยวกับชื่อกฎ (⊤ผม) และ (∧ผม): พวกเขาไม่มีความหมายอย่างเป็นทางการ แต่พวกเขาถูกเลือกอย่างจงใจ ผม ย่อมาจาก "การแนะนำ" เพราะสิ่งเหล่านี้เป็นกฎการแนะนำ - พวกเขาแนะนำสัญลักษณ์ (∧ หรือ ⊤) เป็นประเภทด้านล่างบรรทัด ในบางครั้งคุณจะพบกฎการกำจัดเมื่อสัญลักษณ์ปรากฏเหนือเส้น แต่ไม่อยู่ด้านล่าง ตัวอย่างเช่นกฎในการพิมพ์เช็คแลมบ์ดาแลมบ์ในแคลคูลัสแลมบ์ดาที่พิมพ์ง่ายคือกฎการแนะนำสำหรับ→และกฎในการพิมพ์แอปพลิเคชันเป็นกฎการกำจัด →.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.