เหตุใดประเภทการเรียกซ้ำจึงเป็นสิ่งจำเป็นสำหรับการพิสูจน์ในระบบชนิดที่ขึ้นต่อกัน


10

ฉันค่อนข้างใหม่ในการพิมพ์ทฤษฎีและการเขียนโปรแกรมขึ้นอยู่กับ ฉันกำลังศึกษาแคลคูลัสของการก่อสร้าง (CoC) และระบบบริสุทธิ์อื่น ๆ ฉันสนใจเป็นพิเศษที่จะใช้มันเพื่อเป็นสื่อกลางในการเก็บรักษาหลักฐานสำหรับการแปล

ผมเข้าใจว่า(ร่วม) ประเภท recursive เป็นแทนได้ , คอมพิวเตอร์โดยใช้เป็นชนิดคอนสตรัคเท่านั้น ฉันได้อ่านแล้วว่าพวกเขาไม่สามารถใช้ในการสร้างหลักฐานโดยการเหนี่ยวนำ (ยกโทษให้ฉันฉันไม่สามารถหาที่ตอนนี้!) เช่นว่าฉันไม่สามารถพิสูจน์ได้ว่า0 1ใน CoC ธรรมดา (แม้ว่าแน็ตสามารถพิมพ์ได้เช่นΠ ( N : ) . Π ( S : NN ) . Π ( Z : N ) . N )Π01ชัยนาทΠ(ยังไม่มีข้อความ:* * * *).Π(S:ยังไม่มีข้อความยังไม่มีข้อความ).Π(Z:ยังไม่มีข้อความ).ยังไม่มีข้อความ

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

คำตอบ:


7

ฉันไม่ใช่ผู้เชี่ยวชาญ แต่ฉันจะแบ่งปันสิ่งที่ฉันเข้าใจด้วยตัวอย่าง

ลองพิจารณาชนิดบูลีนใน CoC โดยใช้การเข้ารหัสมาตรฐาน: เราอาจคาดว่าจะสามารถพิสูจน์ Π b : B b = t

B=Πτ:* * * *τττเสื้อเสื้อ=λτ:* * * *,x:τ,Y:τ. x=λτ:* * * *,x:τ,Y:τ. Y
จริง ๆ แล้วสิ่งนี้ได้อย่างรวดเร็วตามหลักการกำจัด / การเหนี่ยวนำที่เรามีเช่นใน CiC B ฉันn d : Π P : B P ( t t ) P ( f f ) Π b : B P ( b )
Π:B=เสื้อเสื้อ=(* * * *)
Bผมnd:ΠP:B* * * *P(เสื้อเสื้อ)P()Π:BP()

อย่างไรก็ตามเราไม่สามารถคาดหวังได้ (*) ในทุกรุ่นของ CoC! สัญชาตญาณค่าในประมาณควรจะเป็นครอบครัวของฟังก์ชัน { τ } τมอบหมายให้แต่ละประเภทτค่าในการตีความของτ →การτ →การ τ แต่นี้ไม่ได้บังคับτจะเป็นหนึ่งระหว่างค่าของทีที, เราสามารถมีเช่น (ไม่เป็นทางการ) f N ( n ) ( m ) = n + mB{τ}ττττττเสื้อเสื้อ,

ยังไม่มีข้อความ(n)(ม.)=n+ม.

เพื่อให้แน่ใจว่าค่าของเป็นค่าที่เป็นไปได้เพียงอย่างเดียวเราจำเป็นต้อง จำกัด ตัวเองเป็นแบบจำลองพารามิเตอร์ อันที่จริง (ฉันคิด) ทรัพย์สิน( * )สามารถพิสูจน์ได้จากทฤษฎีบทฟรีที่เกี่ยวข้องกับ polytype Bเสื้อเสื้อ,(* * * *)B

(* * * *)(* * * *)Bผมnd


(λ(ยังไม่มีข้อความaเสื้อ:* * * *).(...))(Π(ยังไม่มีข้อความ:* * * *).Π(S:ยังไม่มีข้อความยังไม่มีข้อความ).Π(Z:ยังไม่มีข้อความ).ยังไม่มีข้อความ)SZ
paulotorrens

ยังไม่มีข้อความaเสื้อS,Znn(T)(ST)(ZT)=ZTTT=Bn(B)(S)(Z)=S(Z)nλT:* * * *.ผม T=B เสื้อชั่วโมงอีn ...n

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