วิธีการรับตัวกำจัดที่พิมพ์ได้อย่างพึ่งพา?


10

ในการโปรแกรมแบบพิมพ์อย่างพึ่งพามีสองวิธีหลักในการย่อยสลายข้อมูลและดำเนินการเรียกซ้ำ:

  • การจับคู่รูปแบบขึ้นอยู่กับ : คำจำกัดความของฟังก์ชั่นจะได้รับเป็นคำสั่งหลาย ๆ การรวมทำให้แน่ใจว่าทุกกรณีที่ถูกละเว้นนั้นเป็นไปไม่ได้และตัวแก้ไขภายนอกช่วยให้มั่นใจว่าการเรียกซ้ำนั้นได้รับการพิสูจน์แล้ว
  • กำจัด : ประเภทข้อมูลอุปนัยแต่ละมีค่าคงที่เกี่ยวข้องE Dซึ่งทำหน้าที่เป็นหลักการเหนี่ยวนำและเป็นฟังก์ชันเวียนที่สลายตัวค่าประเภทD สิ่งเหล่านี้มีความละเอียดมากกว่า แต่มีความได้เปรียบในการรวม (ทุกกรณีถูกปกคลุมด้วยE D ) และยกเลิกโดยการก่อสร้างDEDDED

ผมเคยเห็นกำจัดสำหรับประเภทข้อมูลทั่วไปเช่นที่กำจัดเป็นพื้นอุปนัยทางคณิตศาสตร์หรือL ฉันs Tที่กำจัดเป็นพื้นพับยังไม่มีข้อความaเสื้อLผมsเสื้อ

ฉันได้อ่านเอกสารหลายฉบับเกี่ยวกับการจับคู่รูปแบบขึ้นอยู่กับและหลายคนอ้างถึงทฤษฎีประเภทที่สามารถกำหนดประเภทข้อมูลและทฤษฎีกำจัด ยกตัวอย่างเช่นการขจัดรูปแบบการจับคู่ขึ้นอยู่กับอธิบายวิธี UTT จะขึ้นอยู่กับเครื่องกำจัดและวิธีการจับคู่รูปแบบสามารถแปลงไปกำจัดในการปรากฏตัวของความจริงKความเข้าใจของฉันคือว่าเมื่อมีการกำหนดประเภทข้อมูลทฤษฎีให้ตัวกำจัดK

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

ใครบางคนสามารถชี้ให้ฉันอ้างอิงถึงวิธีการที่จะได้รับตัวกำจัดจากคำจำกัดความของประเภทข้อมูลหรือไม่?


ฉันแน่ใจว่ามีคำอธิบายในแคลคูลัสของการก่อสร้างหรือวรรณคดี Coq (สำหรับประเภทที่เป็นบวกอย่างเคร่งครัด - เครื่องมือกำจัดของ Coq สำหรับประเภทที่ซับซ้อนกว่านั้นไม่ได้เป็นแบบทั่วไปทั้งหมด)
Gilles 'หยุดความชั่วร้าย'

@Gilles ความเข้าใจของฉันคือ Coq ไม่ได้ใช้ตัวกำจัด แต่ใช้การจับคู่แบบแยกและตัวดำเนินการแก้ไข (ป้องกัน) แทน
jmite

3
ภาษาหลักไม่ได้ใช้เครื่องกำจัด แต่เมื่อคุณกำหนดประเภทการ Coq สร้างกำจัดซึ่งถูกกำหนดในแง่ของและfix matchฉันไม่มีการอ้างอิง แต่ฉันรู้ว่าฉันได้อ่านบางอย่างเกี่ยวกับวิธีการสร้างตัวกำจัดนี้ cs.stackexchange.com/questions/104/…อาจเป็นที่สนใจ
Gilles 'หยุดความชั่วร้าย'

สำหรับอุปนัยประเภทใดTCoq กำหนดหลักการอุปนัยT_indซึ่งเป็นตัวกำจัดที่ขึ้นอยู่กับ สิ่งนี้ถูกกำหนดในแง่ของการเรียกซ้ำและจับคู่รูปแบบ แต่โดยหลักการแล้วคุณสามารถถือว่ามันเป็นค่าคงที่ใหม่ที่มีประเภทเดียวกัน (ที่มีความหมายเดียวกัน)
Chi

คำตอบ:


8

อ้างอิงที่เป็นที่ยอมรับสำหรับเรื่องนี้คือ Peter Dybjer, Inductive Familiesซึ่งให้การรักษาที่ครอบคลุมเกี่ยวกับครอบครัวอุปนัยโดยอาศัยเครื่องมือกำจัด


6

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

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