ภาคผนวก 2016-10-03:ฉันผสมการเหนี่ยวนำการเหนี่ยวนำและการเหนี่ยวนำซ้ำ (ไม่ใช่ครั้งแรกที่ฉันทำอย่างนั้น!) ฉันขอโทษสำหรับความยุ่งเหยิง ฉันอัพเดตคำตอบเพื่อให้ครอบคลุมทั้งสองข้อ
ฉันพบคำอธิบายในกระดาษของ Forsberg & Setzer ความจริงอันจำกัดความของคำจำกัดความอุปนัย - อุปนัยที่ส่องสว่าง
เหนี่ยวนำการเรียกซ้ำ
นิยามแบบอุปนัยแบบเรียกซ้ำคือสิ่งที่เรากำหนดประเภทและประเภทตระกูลพร้อมกันในวิธีพิเศษ:AB:A→Type
- Aหมายถึงประเภทอุปนัย
- Bจะถูกกำหนดโดยการเรียกซ้ำในA
- ขับเคลื่อนความหมายของอาจจะใช้BAB
หากไม่มีข้อกำหนดที่สามเราสามารถกำหนดแล้วแยกก่อนAB
นี่คือตัวอย่างของทารก กำหนดเหนี่ยวนำให้มีตัวสร้างต่อไปนี้:A
- a:A
- ℓ:(∑x:AB(x))→A
ตระกูลถูกกำหนดโดยB
- B(a)=bool
- B(ℓ(x,f))=nat{}
ดังนั้นในคืออะไร ครั้งแรกของทั้งหมดที่เรามีองค์ประกอบเพราะการที่มีประเภทซึ่งถูกกำหนดให้เป็น{} ดังนั้นเราจึงสามารถรูปแบบสององค์ประกอบใหม่และใน ตอนนี้เรามีดังนั้นเราจึงสามารถสร้างทุกองค์ประกอบ
และ
เราสามารถทำเช่นนี้ต่อไป . ขั้นต่อไปจะเป็นเช่นนั้นตั้งแต่
Aa:A.
B(a)boolℓ(a,false)
ℓ(a,true)
AB(ℓ(a,false))=B(ℓ(a,true))=natn:natℓ(ℓ(a,false),n):A
ℓ(ℓ(a,true),n):A
B(ℓ(ℓ(a,true),n))=nat
มีสำหรับทุกองค์ประกอบ
และองค์ประกอบ
เราสามารถไปต่อได้ ความคิดเล็กน้อยเผยให้เห็นว่าเป็นรายการหมายเลขธรรมชาติจำนวนมากหรือน้อยกว่าสองชุดแบ่งปันรายการเปล่าทั่วไป ฉันจะปล่อยให้มันเป็นแบบฝึกหัดเพื่อหาสาเหตุm:natℓ(ℓ(ℓ(a,true),n),m):A
ℓ(ℓ(ℓ(a,false),n),m):A
A
การเหนี่ยวนำการเหนี่ยวนำ
คำนิยามอุปนัยอุปนัยยังกำหนดประเภทและพร้อมครอบครัวประเภท :AB:A→Type
- Aถูกกำหนดแบบเหนี่ยวนำ
- Bถูกกำหนดแบบเหนี่ยวนำและอาจหมายถึงA
- ขับเคลื่อน อาจจะหมายถึงBAB
เป็นสิ่งสำคัญที่จะต้องเข้าใจความแตกต่างระหว่างการเหนี่ยวนำซ้ำและการเหนี่ยวนำ ในการเหนี่ยวนำ-recursion เรากำหนดโดยการให้สมการในรูปแบบ
ที่เป็นตัวสร้างสำหรับ ในการให้คำนิยามอุปนัยอุปนัยเรากำหนดโดยการให้การก่อสร้างสำหรับการขึ้นรูปองค์ประกอบของBBB(c(…))=⋯
c(…)ABB
ให้เราปรับตัวอย่างก่อนหน้าของเราเป็นการเหนี่ยวนำ ก่อนอื่นเราได้รับ tpyeได้รับการเหนี่ยวนำ:A
- a:A
- ℓ:(∑x:AB(x))→A
ประเภทตระกูลถูกกำหนดโดยตัวสร้างต่อไปนี้:B
- Tru:B(a)
- Fal:B(a)
- ถ้าและดังนั้นx:Ay:B(x)Zer:B(ℓ(x,y))
- ถ้าและและแล้วy))x:Ay:B(x)z:B(ℓ(x,y))Suc(z):B(ℓ(x,y))
อย่างที่คุณเห็นเราได้สร้างกฎสำหรับการสร้างองค์ประกอบของซึ่งจำนวนที่บอกว่าคือ (isomoprhic ถึง) booleans และคือ (isomorphic ถึง) ตัวเลขธรรมชาติ .BB(a)B(ℓ(x,y))