ในการโปรแกรมแบบพิมพ์อย่างพึ่งพามีสองวิธีหลักในการย่อยสลายข้อมูลและดำเนินการเรียกซ้ำ:
- การจับคู่รูปแบบขึ้นอยู่กับ : คำจำกัดความของฟังก์ชั่นจะได้รับเป็นคำสั่งหลาย ๆ การรวมทำให้แน่ใจว่าทุกกรณีที่ถูกละเว้นนั้นเป็นไปไม่ได้และตัวแก้ไขภายนอกช่วยให้มั่นใจว่าการเรียกซ้ำนั้นได้รับการพิสูจน์แล้ว
- กำจัด : ประเภทข้อมูลอุปนัยแต่ละมีค่าคงที่เกี่ยวข้องE Dซึ่งทำหน้าที่เป็นหลักการเหนี่ยวนำและเป็นฟังก์ชันเวียนที่สลายตัวค่าประเภทD สิ่งเหล่านี้มีความละเอียดมากกว่า แต่มีความได้เปรียบในการรวม (ทุกกรณีถูกปกคลุมด้วยE D ) และยกเลิกโดยการก่อสร้าง
ผมเคยเห็นกำจัดสำหรับประเภทข้อมูลทั่วไปเช่นที่กำจัดเป็นพื้นอุปนัยทางคณิตศาสตร์หรือL ฉันs Tที่กำจัดเป็นพื้นพับ
ฉันได้อ่านเอกสารหลายฉบับเกี่ยวกับการจับคู่รูปแบบขึ้นอยู่กับและหลายคนอ้างถึงทฤษฎีประเภทที่สามารถกำหนดประเภทข้อมูลและทฤษฎีกำจัด ยกตัวอย่างเช่นการขจัดรูปแบบการจับคู่ขึ้นอยู่กับอธิบายวิธี UTT จะขึ้นอยู่กับเครื่องกำจัดและวิธีการจับคู่รูปแบบสามารถแปลงไปกำจัดในการปรากฏตัวของความจริงKความเข้าใจของฉันคือว่าเมื่อมีการกำหนดประเภทข้อมูลทฤษฎีให้ตัวกำจัด
สิ่งที่ฉันไม่พบ (หรืออย่างน้อยไม่รู้จักถ้าฉันเห็นมัน) เป็นคำอธิบายที่ดีว่าใครจะได้รับผู้กำจัดทั้งประเภทและความหมายของพวกเขา
ใครบางคนสามารถชี้ให้ฉันอ้างอิงถึงวิธีการที่จะได้รับตัวกำจัดจากคำจำกัดความของประเภทข้อมูลหรือไม่?
fix
match
ฉันไม่มีการอ้างอิง แต่ฉันรู้ว่าฉันได้อ่านบางอย่างเกี่ยวกับวิธีการสร้างตัวกำจัดนี้ cs.stackexchange.com/questions/104/…อาจเป็นที่สนใจ
T
Coq กำหนดหลักการอุปนัยT_ind
ซึ่งเป็นตัวกำจัดที่ขึ้นอยู่กับ สิ่งนี้ถูกกำหนดในแง่ของการเรียกซ้ำและจับคู่รูปแบบ แต่โดยหลักการแล้วคุณสามารถถือว่ามันเป็นค่าคงที่ใหม่ที่มีประเภทเดียวกัน (ที่มีความหมายเดียวกัน)