มีความฉลาดแน่นอนที่นี่ แต่สิ่งที่ทำงานออกมาอย่างดีในกรณีของการตรวจสอบประเภท ฉันจะเขียนปัญหาที่นี่เนื่องจากดูเหมือนว่าจะเกิดขึ้นในหลายหัวข้อที่เกี่ยวข้องและพยายามอธิบายว่าทำไมสิ่งต่าง ๆ ทำงานได้อย่างถูกต้องเมื่อตรวจสอบประเภทในทฤษฎีประเภทพึ่งพา "มาตรฐาน" (ฉันจะคลุมเครือโดยเจตนา เนื่องจากปัญหาเหล่านี้มีแนวโน้มที่จะครอบตัดโดยไม่คำนึงถึง):
ความเป็นจริงที่ 1: ถ้าDเป็นแหล่งที่มาของแกมมา⊢ T :นั้นมีรากศัพท์D'ของแกมมา⊢ : sสำหรับบางชนิดsและสำหรับทุก subterm ยู≤ ทีมีบางชนิดB , บริบทΔและรากศัพท์D''ของΔ ⊢ U : B B
ความจริงที่ดีนี้ค่อนข้างยากที่จะพิสูจน์และชดเชยด้วยความจริงที่น่ารังเกียจ:
ความจริง 2: โดยทั่วไปD'และD'' ไม่ใช่การย่อยของD !
สิ่งนี้ขึ้นอยู่กับการกำหนดสูตรที่แม่นยำของระบบพิมพ์ของคุณ แต่ระบบ "ปฏิบัติงาน" ส่วนใหญ่ที่ใช้ในการปฏิบัติจริงจะทำให้เป็นจริง 2
ซึ่งหมายความว่าคุณไม่สามารถ "ส่งต่อคำศัพท์ย่อย" เมื่อให้เหตุผลโดยการชักนำให้เกิดการอนุมานหรือสรุปได้ว่าคำอุปนัยเป็นจริงเกี่ยวกับประเภทของคำศัพท์ที่คุณพยายามพิสูจน์บางอย่าง
ความจริงเรื่องนี้กัดคุณอย่างรุนแรงเมื่อพยายามพิสูจน์ข้อความที่ดูเหมือนไร้เดียงสาเช่นระบบที่มีการแปลงที่พิมพ์นั้นเทียบเท่ากับที่มีการแปลงที่ไม่ได้พิมพ์ออกมา
อย่างไรก็ตามในกรณีของการอนุมานประเภทคุณสามารถให้อัลกอริธึมการอนุมานแบบพร้อมกัน (ชนิดของประเภท) พร้อมกันโดยการเหนี่ยวนำในโครงสร้างของคำซึ่งอาจเกี่ยวข้องกับอัลกอริธึมชนิดกำกับตามที่ Andrej แนะนำ สำหรับการให้คำเสื้อ (และบริบทΓคุณอาจจะล้มเหลวหรือพบ, sเช่นว่าΓ ⊢ T :และΓ ⊢ : sคุณไม่จำเป็นต้องใช้สมมติฐานเพื่อหาสิ่งที่มาหลังและอื่น ๆ ใน. โดยเฉพาะอย่างยิ่งคุณหลีกเลี่ยงปัญหาที่อธิบายไว้ข้างต้นA , sแกมมา⊢ T :แกมมา⊢ : s
กรณีที่สำคัญ (และกรณีเดียวที่ต้องใช้การแปลงจริง) คือแอปพลิเคชัน:
infer(t u):
type_t, sort_t <- infer(t)
type_t' <- normalize(type_t)
type_u, sort_u <- infer(u)
type_u' <- normalize(type_u)
if (type_t' = Pi(A, B) and type_u' = A' and alpha_equal(A, A') then
return B, sort_t (or the appropriate sort)
else fail
ทุกการโทรไปสู่การทำมาตรฐานนั้นทำได้ด้วยคำศัพท์ที่ดีเพราะนี่คือสิ่งที่ไม่หยุดหย่อนสำหรับinfer
ความสำเร็จ
โดยวิธีการตามที่มีการใช้งาน Coq ไม่ได้มีการตรวจสอบประเภทที่ตัดสินใจได้เพราะมันทำให้เนื้อหาของfix
งบปกติก่อนที่จะพยายามพิมพ์ตรวจสอบพวกเขา
ไม่ว่าจะด้วยวิธีใดก็ตามขอบเขตในรูปแบบปกติของคำศัพท์ที่พิมพ์ได้ดีนั้นเป็นเรื่องทางดาราศาสตร์ซึ่งทฤษฎีบทการตัดสินใจได้ส่วนใหญ่เป็นนักวิชาการ ณ จุดนี้อย่างไรก็ตาม ในทางปฏิบัติคุณเรียกใช้อัลกอริทึมการตรวจสอบประเภทตราบเท่าที่คุณมีความอดทนและลองเส้นทางอื่นหากยังไม่เสร็จสิ้น