ฉันจะให้คำตอบบางส่วนฉันหวังว่าคนอื่นจะเติมในช่องว่าง
ในการพิมพ์ -calculi เราอาจพิมพ์ข้อมูลตามปกติ (สำหรับคริสตจักร (เอกภาพ) จำนวนเต็มสำหรับสตริงไบนารีสำหรับ Booleans) และสงสัยว่า คือความซับซ้อนของฟังก์ชั่น / ปัญหาที่สามารถแทน / ถอดรหัสได้โดยคำที่พิมพ์ ฉันรู้แอสเวิร์กที่แม่นยำในบางกรณีเท่านั้นและในกรณีที่พิมพ์อย่างง่ายมันขึ้นอยู่กับการประชุมที่ใช้เมื่อกำหนด "ตัวแทน / decidable" อย่างไรก็ตามฉันไม่ทราบว่ามีกรณีใดบ้างที่มีขอบเขตบนเลขชี้กำลังสองเท่าN ทีเอสทีอาร์B o o ลิตรλNatStrBool
ก่อนอื่นให้สรุปสั้น ๆ เกี่ยวกับ Lambda Cube แคลคูลัส 8 อันได้มาจากการเปิดใช้งานหรือปิดใช้งานการพึ่งพา 3 ชนิดต่อไปนี้ที่ด้านบนของ -calculus (STLC) ที่พิมพ์ได้อย่างง่ายดาย:λ
- ความแตกต่าง : เงื่อนไขอาจขึ้นอยู่กับประเภท;
- ประเภทที่พึ่งพา : ประเภทอาจขึ้นอยู่กับเงื่อนไข;
- ลำดับที่สูงกว่า : ประเภทอาจขึ้นอยู่กับประเภท
(การพึ่งพาข้อกำหนดในข้อกำหนดมักมีอยู่เสมอ)
การเพิ่มความหลากหลายทำให้ระบบ F ที่นี่คุณสามารถพิมพ์จำนวนเต็มของคริสตจักรด้วยและในทำนองเดียวกันสำหรับสตริงไบนารีและ Booleans ราร์ดพิสูจน์ให้เห็นว่าเงื่อนไขของระบบประเภท Fเป็นตัวแทนของฟังก์ชันตัวเลขซึ่งสามารถพิสูจน์ได้ในลำดับที่สอง Peano เลขคณิต นั่นเป็นคณิตศาสตร์ในชีวิตประจำวันที่ค่อนข้างมาก (แม้ว่าจะไม่มีรูปแบบใด ๆ ก็ตาม) ดังนั้นชั้นเรียนมีขนาดใหญ่มากฟังก์ชั่น Ackermann เป็นจุลชีพเล็ก ๆ ในนั้นฟังก์ชั่นN a t → N a t 2 2 n β N a t S t r S t r → B o o lNat:=∀X.(X→X)→X→XNat→Nat22n. ฉันไม่รู้เกี่ยวกับฟังก์ชันตัวเลข "ธรรมชาติ" ใด ๆ ที่ไม่สามารถแสดงใน System F ตัวอย่างมักจะถูกสร้างขึ้นโดย diagonalization หรือการเข้ารหัสความสอดคล้องของลำดับที่สอง PA หรือเทคนิคการอ้างอิงตัวเองอื่น ๆ (เช่นการตัดสินใจ -equality ภายใน ระบบ F เอง) แน่นอนใน System F คุณสามารถแปลงระหว่างจำนวนเต็มและการแทนเลขฐานสองของพวกเขาจากนั้นทำการทดสอบเช่นว่าบิตแรกคือ 1 ดังนั้นคลาสของปัญหาที่ถอดรหัสได้ (ตามประเภทของ ) มีขนาดใหญ่เท่ากันβNatStrStr→Bool
อีก 3 แคลคูลัสของแลมบ์ดาคิวบ์ซึ่งรวมถึง polymorphism จึงแสดงออกอย่างน้อยที่สุดเท่าที่ระบบ F เหล่านี้รวมถึงระบบ F (polymorphism + ลำดับสูงกว่า) ซึ่งสามารถแสดงฟังก์ชั่นทั้งหมดที่พิสูจน์ได้ในลำดับ PA ที่สูงขึ้นและ แคลคูลัสของการก่อสร้าง (CoC) ซึ่งเป็นแคลคูลัสที่แสดงออกมากที่สุดของ Cube (เปิดใช้งานการอ้างอิงทั้งหมด) ฉันไม่รู้ลักษณะของความหมายของ CoC ในแง่ของทฤษฎีเกี่ยวกับคณิตศาสตร์หรือตั้งทฤษฎี แต่มันต้องน่ากลัว :-)ω
ฉันไม่รู้เกี่ยวกับแคลคูลัสที่ได้รับเพียงแค่เปิดใช้งานแบบพึ่งพา (โดยหลักแล้วทฤษฎีการพิมพ์แบบมาร์ติน - โลฟไม่มีความเสมอภาคและจำนวนธรรมชาติ), ประเภทคำสั่งที่สูงกว่าหรือทั้งสองอย่าง ในแคลคูลัสประเภทนี้มีประสิทธิภาพ แต่คำศัพท์ไม่สามารถเข้าถึงพลังนี้ได้ดังนั้นฉันไม่รู้ว่าคุณได้อะไรมา ฉันไม่คิดว่าคุณจะได้รับการแสดงออกมากไปกว่าแบบง่าย ๆ แต่ฉันอาจเข้าใจผิด
ดังนั้นเราจึงเหลือ STLC เท่าที่ฉันรู้นี่เป็นแคลคูลัสเพียงหนึ่งเดียวของ Cube ที่มีขอบเขตความซับซ้อนที่น่าสนใจ (เช่นไม่ใหญ่โต) มีคำถามที่ยังไม่ได้ตอบเกี่ยวกับเรื่องนี้ใน TCS.SE และในความเป็นจริงแล้วสถานการณ์นั้นค่อนข้างบอบบาง
ก่อนอื่นถ้าคุณแก้ไขอะตอมและกำหนดN a t : = ( X → X ) → X → Xจะมีผลลัพธ์ของ Schwichtenberg (ฉันรู้ว่ามีการแปลภาษาอังกฤษของกระดาษนั้นอยู่ที่ไหนสักแห่งบนเว็บ แต่ฉันไม่สามารถหามันได้ ตอนนี้) ที่จะบอกคุณว่าฟังก์ชั่นของชนิดN a t → N a tเป็นพหุนามที่ขยายเพิ่มขึ้นอย่างแน่นอน หากคุณอนุญาตให้ "หย่อน" บางอย่างนั่นคือคุณอนุญาตให้พารามิเตอร์Xเป็นอินสแตนซ์ที่จะและพิจารณาเงื่อนไขของประเภทN a t [XNat:=(X→X)→X→XNat→NatXด้วย Aโดยพลการสามารถแสดงได้มากกว่านี้ ตัวอย่างเช่นหอคอยใด ๆ ของเลขชี้กำลัง (ดังนั้นคุณอาจไปได้ดีกว่าเลขชี้กำลังสองเท่า) เช่นเดียวกับฟังก์ชั่นรุ่นก่อน แต่ก็ยังไม่มีการลบ (ถ้าคุณพิจารณาฟังก์ชันเลขฐานสองและลองพิมพ์ด้วย N a t [ A ] → N a t [ A ′ ] → N a t ) ดังนั้นคลาสของฟังก์ชันตัวเลขที่แสดงใน STLC ค่อนข้างแปลกมันเป็นเซตย่อยที่เข้มงวดของฟังก์ชันพื้นฐาน แต่ไม่ตรงกับสิ่งที่รู้จักกันดีNat[A]→NatANat[A]→Nat[A′]→Nat
ในความขัดแย้งที่เห็นได้ชัดกับข้างต้นมีบทความนี้โดย Mairson ซึ่งแสดงให้เห็นถึงวิธีการเข้ารหัสฟังก์ชั่นการเปลี่ยนแปลงของพลเครื่องทัวริงจากการที่คุณได้รับคำประเภทN T [ ] → B o o ลิตร (สำหรับบางชนิดขึ้นอยู่กับM ) ซึ่งได้รับจำนวนเต็มโบสถ์nเป็น input จำลองการดำเนินการของMเริ่มต้นจากการกำหนดค่าเริ่มต้นคงที่สำหรับจำนวนของขั้นตอนของรูปแบบ
ที่ 2 2 ⋮ 2 n ,MNat[A]→BoolAMnM
22⋮2n,
แก้ไขความสูงของหอคอย สิ่งนี้
ไม่ได้แสดงให้เห็นว่าปัญหาระดับประถมศึกษาทุก ๆ ค่าสามารถถอดรหัสได้โดย STLC เพราะใน STLC ไม่มีทางที่จะแปลงสตริงไบนารี่ (ประเภท
) ที่เป็นตัวแทนของอินพุตของ
Mเป็นประเภทที่ใช้แทนการกำหนดค่าของ
Mใน การเข้ารหัสของ Mairson ดังนั้นการเข้ารหัสจึงเป็น "ไม่สม่ำเสมอ": คุณสามารถจำลองการประมวลผลที่มีความยาวเป็นองค์ประกอบจากอินพุตคงที่โดยใช้คำที่แตกต่างกันสำหรับแต่ละอินพุต แต่ไม่มีคำใดที่จัดการอินพุตโดยพลการ
StrMM
ในความเป็นจริง STLC นั้นอ่อนแออย่างมากในสิ่งที่สามารถตัดสินใจได้ว่า "สม่ำเสมอ" ขอให้เราโทรระดับของภาษา decidable ตามเงื่อนไขพิมพ์เพียงชนิดS T R [ ] → B o o ลิตรสำหรับบาง(เหมือนข้างต้นคุณอนุญาตให้พล "หย่อน" ในการพิมพ์) เท่าที่ฉันรู้ลักษณะที่แม่นยำของC S Tหายไป อย่างไรก็ตามเรารู้ว่าC S T ⊊ L ฉันN T ฉันM ECSTStr[A]→BoolACSTCST⊊LINTIME(เวลาเชิงเส้นแบบกำหนดเวลา) ทั้งการกักกันและความจริงที่ว่ามันเข้มงวดอาจถูกแสดงโดยการโต้แย้งความหมายที่ประณีตมาก (ใช้ความหมาย denotational semantics ของ STLC ในหมวดหมู่ของชุด จำกัด ) อดีตก็แสดงให้เห็นเร็ว ๆ นี้โดยTerui หลังเป็นหลักการปฏิรูปของผลลัพธ์เก่าของ Statman ตัวอย่างของปัญหาในคือ MAJORITY (ที่ได้รับจากสตริงไบนารีบอกว่ามันมีมากกว่า 1 วินาทีอย่างน้อย 0 วินาที)LINTIME∖CST
(มาก) ต่อมา add-on:ฉันเพิ่งค้นพบว่าชั้นที่ผมเรียกเหนือจริงไม่ได้มีลักษณะที่แม่นยำซึ่งเป็นยิ่งกว่านั้นง่ายมาก ในบทความปี 1996 ที่สวยงาม Hillebrand และ Kanellakis ได้พิสูจน์สิ่งอื่น ๆCST
ทฤษฎีบท. (ภาษาปกติใน{ 0 , 1 } )CST=REG{0,1}
(นี่คือทฤษฎีบท 3.4 ในบทความของพวกเขา)
CSTLINTIMEλCST
(โดยบังเอิญฉันแบ่งปันความประหลาดใจของฉันในคำตอบของคำถาม MO เกี่ยวกับ "ทฤษฎีบทที่ไม่รู้จัก")