เราได้อะไรจากการมี“ ประเภทพึ่งพา”


13

ฉันคิดว่าฉันเข้าใจการพิมพ์ที่ถูกต้อง (DT) อย่างถูกต้อง แต่คำตอบสำหรับคำถามนี้: /cstheory/30651/why-was-there-a-need-for-martin-l%C3%% ทฤษฎีเกี่ยวกับการสร้างประเภทสัญชาตญาณ B6fทำให้ฉันคิดอย่างอื่น

หลังจากอ่าน DT และพยายามเข้าใจว่าพวกเขาคืออะไรฉันพยายามสงสัยว่าเราจะได้อะไรจากความคิดของ DT นี้ ดูเหมือนว่าพวกเขาจะมีความยืดหยุ่นและมีประสิทธิภาพมากกว่าแลมบ์ดาแคลคูลัส (STLC) ที่พิมพ์ได้ง่าย ๆ ถึงแม้ว่าฉันจะไม่เข้าใจ "วิธี / เหตุผล" ก็ตาม

เราสามารถทำอะไรกับ DT ที่ไม่สามารถทำได้ด้วย STLC ดูเหมือนว่าการเพิ่ม DTs ทำให้ทฤษฎีมีความซับซ้อนมากขึ้น แต่ประโยชน์คืออะไร

จากคำตอบของคำถามด้านบน:

ประเภทที่ขึ้นอยู่กับถูกเสนอโดยเดอ Bruijn และโฮเวิร์ดที่ต้องการที่จะขยายการติดต่อกันของแกงกะหรี่ - Howard จากแคลคูลัสเชิงประพจน์เพื่อตรรกะแรก

ดูเหมือนว่าจะสมเหตุสมผลในบางระดับ แต่ฉันก็ยังไม่สามารถเข้าใจภาพรวมของ "อย่างไร / ทำไม" บางทีตัวอย่างที่แสดงให้เห็นอย่างชัดเจนว่าส่วนขยายของจดหมายโต้ตอบ CH กับตรรกะ FO นี้อาจช่วยให้ถึงจุดที่บ้านในการทำความเข้าใจเรื่องใหญ่กับ DTs คืออะไร? ฉันไม่แน่ใจว่าฉันเข้าใจสิ่งนี้ด้วยหรือไม่


1
คุณ googled พวกเขา? คุณเคยได้ยินเรื่อง Coq ซึ่งเป็นผู้พิสูจน์ทฤษฎีบทที่สร้างขึ้นตามชนิดของการพึ่งพาหรือไม่? คุณรู้ไหมว่าทฤษฎีบท 4 สีได้พิสูจน์แล้วว่าใช้ Coq?
Dave Clarke

2
จริง ๆ แล้วฉันทำ อะไรที่ยากสำหรับ Google คืออะไร "พลัง" พิเศษ (สำหรับการขาดคำพูดที่ดีกว่า) ที่ DTs ให้ยืมเพื่อพิมพ์ทฤษฎีการพูดอย่างสังหรณ์ใจ?
ปริญญาเอก

1
ทำไม? ประเภทที่อ้างถึงช่วยให้คุณสามารถพิมพ์โปรแกรมได้มากขึ้นในขณะที่ยังปลอดภัยอยู่ อย่างไร? ตามประเภทพารามิเตอร์กับโปรแกรม
Martin Berger

@MartinBerger - คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับ "โปรแกรมเพิ่มเติม" ได้ไหม? "เพิ่มเติม" ฉันสามารถทำอะไรหรือต้องการอะไรจากมุมมองทางทฤษฎี?
ปริญญาเอก

2
@DaveClarke That Coq ด้วยรูปแบบที่แปลกใหม่ได้ถูกนำมาใช้ในการทำสิ่งแฟนซีไม่ได้หมายความว่าสิ่งเหล่านั้นต้องการสิ่งแฟนซีเหล่านั้น ตัวอย่างเช่นTwelfมีความสำเร็จที่สำคัญ (เช่นหลักฐานการถูกต้องของ SML) และเป็นเพียงลำดับที่สองไม่ใช่ลำดับที่สูงกว่า ฉันเคยเห็นระบบที่ค่อนข้างใหญ่ซึ่งพิสูจน์ด้วยตรรกะลำดับแรกเท่านั้น
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


22

λList23+4(α)10α23+4

กฎสำคัญที่แตกต่างกันขึ้นอยู่กับประเภทที่ไม่ขึ้นอยู่กับการประยุกต์ใช้:

ΓM:ABΓN:AΓMN:BΓM:ΠxA.BΓN:AΓMN:B{N/x}

ทางด้านซ้ายคุณมี STLC ที่ซึ่งโปรแกรมใน 'โฟลว์' ของสถานที่ลงในโปรแกรมของข้อสรุปเท่านั้น ในทางตรงกันข้ามในกฎการประยุกต์ใช้ขึ้นอยู่กับสิทธิที่โปรแกรมจากหลักฐานถูกต้อง 'กระแส' ลงในประเภทในการสรุป 11N1

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

มีคำอธิบายมากมายหลายประเภท ตัวอย่างบางส่วน


1 ในแง่ของสี: ประเภทที่ไม่ขึ้นกับ - นิพจน์สีดำในบทสรุปถูกสร้างขึ้นจากการแสดงออกสีดำในสถานที่ในขณะที่การแสดงออกสีแดงในข้อสรุปจะถูกสร้างขึ้นจากการแสดงออกสีแดงในสถานที่ ด้วยประเภทที่ขึ้นอยู่กับสีที่สามารถผสมโดยมีส่วนสีดำของข้อสรุปที่ถูกสร้างขึ้นจากส่วนสีแดงและสีดำของสถ


ตอนนี้นั่นทำให้รู้สึกมาก มันอาจจะชัดเจน แต่ด้วยเหตุผลบางอย่างฉันไม่สามารถวางนิ้วบนมัน ขอบคุณการเปลี่ยนแปลงจากความคิดเห็นที่จะตอบ น่าเสียดายที่คำถามนี้ได้รับการโหวตให้ปิด แต่ฉันดีใจที่ได้รับคำตอบ :)
ปริญญาเอก

1
Arr nArr 0=natArr (n+1)=natArr n

PVerase(P)erase(V)

FωCoC

@ โคดี้ฉันคิดว่ามันผิดปกติที่จะเรียกการลบประเภทนี้ ชื่อที่ดีกว่าคืออะไร? อาจจะพิมพ์ความเรียบง่าย?
Martin Berger

2

คิดว่าการประกาศประเภทเป็นอะไรมากไปกว่าการยืนยัน ขณะนี้สิ่งที่คุณสามารถพูดได้คือสิ่งต่างๆเช่น isInt32 (), isCharPtr (), ฯลฯ การยืนยันที่หลากหลายเหล่านี้ได้รับการเลือกให้ตรวจสอบได้ในเวลารวบรวม แต่แนวคิดนี้สามารถขยายไปยังสิ่งต่าง ๆ เช่น: isCharPtr () && isNotNull () พอยน์เตอร์ที่น่าเบื่อหน่ายเป็นปัญหาใหญ่ พอยน์เตอร์ไม่ควรเป็นโมฆะเป็นท่าทางเริ่มต้นด้วยพอยน์เตอร์ที่เป็นโมฆะซึ่งเป็นประเภทที่ไม่สามารถอ่านได้ ปัญหาที่คล้ายกันคือสิ่งที่ต้องการ: isPositiveInteger () หรือ isEvenNaturalNumber ()

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