पूरक 2016-10-03: मैंने इंडक्शन-इंडक्शन और इंडक्शन-रिकर्सन को मिलाया (पहली बार मैंने ऐसा नहीं किया!)। गंदगी के लिए मेरी माफी। मैंने दोनों को कवर करने का उत्तर अपडेट किया।
मुझे Forsberg & Setzer के पेपर में स्पष्टीकरण मिला है, आगमनात्मक-प्रेरक परिभाषाओं का एक परिमित स्वयंसिद्ध प्रकाश।
प्रेरण-प्रत्यावर्तन
एक आगमनात्मक-पुनरावर्ती परिभाषा वह है जिसमें हम एक प्रकार ए और एक प्रकार के परिवार को परिभाषित करते हैं बी : ए → टी वाई पी ई एक साथ एक विशेष तरीके से:
- ए को एक आगमनात्मक प्रकार के रूप में परिभाषित किया गया है।
- बी कोए पर पुनरावृत्ति द्वारा परिभाषित किया गया है।
- महत्वपूर्ण रूप से, A की परिभाषा B उपयोग कर सकती है ।
तीसरी आवश्यकता के बिना, हम पहले A और फिर अलग से B को परिभाषित कर सकते थे ।
यहाँ एक बच्चा उदाहरण है। परिभाषित A निम्नलिखित कंस्ट्रक्टर्स के लिए उपपादन द्वारा:
- a:A
- ℓ:(∑x:AB(x))→A
प्रकार B परिवार द्वारा परिभाषित किया गया है
- B(a)=bool
- B(ℓ(x,f))=nat ।
तो, A में क्या है ? सबसे पहले हमारे पास एक तत्व a:A.
कि की वजह से, वहाँ एक प्रकार है B(a) जो होने के लिए परिभाषित किया गया है bool । इसलिए, हम दो नए तत्व फार्म कर सकते हैं ℓ(a,false)
और ℓ(a,true)
में A । अब हमारे पास B(ℓ(a,false))=B(ℓ(a,true))=nat , तो हम भी हर के लिए फार्म कर सकते हैंn: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 , कम संख्या में प्राकृतिक नंबरों की सूचियों की दो प्रतियां हैं, एक सामान्य खाली सूची साझा करना। मैं यह जानने के लिए एक अभ्यास के रूप में छोड़ दूँगा।
प्रेरण-प्रेरण
एक आगमनात्मक-आगमनात्मक परिभाषा भी एक प्रकार A को परिभाषित करती है और साथ ही एक प्रकार का परिवार B:A→Type :
- A को इंडक्टिवली परिभाषित किया गया है
- BA
- AB
BB(c(…))=⋯
c(…)ABB
A
- a:A
- ℓ:(∑x:AB(x))→A
B
- Tru:B(a)
- Fal:B(a)
- x:Ay:B(x)Zer:B(ℓ(x,y))
- x:Ay:B(x)z:B(ℓ(x,y))Suc(z):B(ℓ(x,y))
BB(a)B(ℓ(x,y))