सबसे सहज निर्भर प्रकार का सिद्धांत जो मैं सीख सकता था?


46

मैं निर्भर टाइपिंग पर वास्तव में ठोस समझ पाने में दिलचस्पी रखता हूं। मैंने ज्यादातर TaPL को पढ़ा है और पढ़ा है (अगर पूरी तरह से अवशोषित नहीं है) ATTaPL में 'डिपेंडेंट टाइप ' । मैंने भी पढ़ा है और आश्रित टाइपिंग पर लेखों का एक समूह स्किम्ड किया है।

कई प्रकार के सिद्धांत चर्चा पिछले प्रकार के सिस्टम में वृद्धिशील सुविधाओं को जोड़ने पर ध्यान केंद्रित करते हैं, न कि "किस प्रकार के सिस्टम एक्स के लिए अगला बड़ा सामान्यीकरण है?"। आश्रित प्रकार सिस्टम एफ से अगला बड़ा सामान्यीकरण लगता है, लेकिन मुझे अभी तक सहज, विहित रूप से टाइप की गई भाषा का पता लगाना है। कैलकुस ऑफ़ (इंडक्टिव) कंस्ट्रक्शन के कई संदर्भ मुझे लगता है कि CoC वह भाषा है, लेकिन मैंने जो भाषा देखी है उसकी व्याख्या मुझे बहुत स्पष्ट या सहज नहीं लगती।

मैं उम्मीद कर रहा हूं / ऐसी भाषा का अनुमान लगाना जैसी विशेषताएं होंगी: (और कृपया मुझे बताएं कि क्या कुछ विशेष रूप से भ्रमित या अवास्तविक रूप में कूदता है)

  • सामान्यीकृत अमूर्तता (किसी भी डोमेन से टाइप पदानुक्रम में अन्य, प्रकार -> शब्द, शब्द-> प्रकार '' 'आदि) के कार्य हो सकते हैं
  • टाइपिंग की एक अनंत पदानुक्रम है (नियम: प्रकार: प्रकार ': प्रकार' ': ...)
  • बुनियादी तत्वों की एक न्यूनतम संख्या। मैं कल्पना कर रहा हूं कि भाषा केवल प्रत्येक स्तर के लिए एक ही तत्व का दावा करती है। उदाहरण के लिए यह जोर दे सकता है कि (): यूनिट: टाइप: टाइप ': ...)। इन तत्वों से अन्य तत्व निर्मित होते हैं।
  • सम और उत्पाद प्रकार व्युत्पन्न हैं।

मैं उस भाषा की व्याख्या भी खोज रहा हूँ जिस पर आदर्श रूप से चर्चा होगी:

  • उस भाषा में अमूर्तन और मात्रा का संबंध। यदि वे एकीकृत नहीं हैं, तो समझाइए कि वे एकीकृत क्यों नहीं हैं।
  • स्पष्ट रूप से अनंत प्रकार के पदानुक्रम

मैं यह सवाल इसलिए पूछ रहा हूं क्योंकि मैं आश्रित टाइप थ्योरी सीखना चाहता हूं, बल्कि इसलिए भी कि मैं एक गाइड रखना चाहता हूं, जो कि थोड़ा सीएस बैकग्राउंड मानकर, प्रूफ असिस्टेंट और निर्भरता से टाइप की जाने वाली भाषाओं को कैसे और कैसे समझें, सिखाता है।

(रेडडिट पर पोस्ट क्रॉस)

जवाबों:


35

इसके करीब आने के कुछ अलग तरीके हैं:

  1. आश्रित प्रकार का सिद्धांत । यह संभवतः आश्रित प्रकारों के बारे में सीखने का सबसे आसान तरीका नहीं है, लेकिन आप कंस्ट्रक्शन के कंस्ट्रक्शन पेपर और उनके वेरिएंट्स, प्योर टाइप सिस्टम्स और मार्टिन हॉफमैन के आर्टिकल सिंटैक्स और डिपेंडेंट टाइप्स के सिंटैक्स पर देख सकते हैं।

  2. सिद्ध करना । सबसे पहले, संबंधित प्रश्न के मेरे उत्तर पर एक नज़र डालें: मैं कोक प्रूफ सहायक के अंतर्निहित सिद्धांत को सीखने के बारे में कैसे जाऊँगा?

  3. ΠΣ, दूसरों के बीच में। और निश्चित रूप से एडम हैमपला की पुस्तक, मार्क हैमन के जवाब में दी गई है।

मैं प्रोग्रामिंग के साथ शुरू करने के लिए इच्छुक हूं, प्रमेय साबित करने का उपयोग करने से पहले, फिर अधिक सैद्धांतिक मुद्दों की खोज शुरू करें।


मैं एपिग्राम के लिए कागजात ढूंढ सकता हूं, लेकिन मैं एपिग्राम के लिए एक वास्तविक डाउनलोड नहीं ढूंढ सकता, केवल अभी तक अधूरा एपिग्राम 2. मेरे विचार?
जॉन साल्वेटियर

1
क्या आपने पाया: e-pig.org/darcs/Pig09/web ? एपिग्राम पृष्ठ के नीचे उपलब्ध है।
डेव क्लार्क

3
एपिग्राम 1 अनिवार्य रूप से काफी समय से अस्वीकार्य है, एएफएआईके के बाद - लेखक इन दिनों एग्दा का उपयोग करता है (जबकि एपिग्राम 2 की तरफ काम करता है)।
ब्लिसॉर्बलेड

2019 में, मुझे नहीं लगता कि एपिग्राम 2 कभी होने वाला है - लेकिन अब इदरीस (और इदरीस 2!) है।
xrq

14

λπ

ट्वेल एलएफ पर आधारित एक अच्छी प्रमेय-सिद्ध प्रणाली है। फ्रैंक Pfenning द्वारा की पेशकश की उन्नत पाठ्यक्रम नोट्स को देखते हुए एलएफ के सिद्धांत और अभ्यास का एक अच्छा परिचय है।

यह कहा गया है, यह सीखने के लिए शायद सबसे अच्छी पहली प्रणाली नहीं है कि क्या आपकी रुचि टाइप थ्योरी की अनिवार्यता के बजाय रचनात्मक गणित में है: LF का अर्थ है तार्किक रूपरेखा और यह सिद्धांत को स्वयंसिद्ध करने के लिए उपयोग की जाने वाली प्रणाली है, और ऐसा अक्सर काम नहीं किया जाता है। सीधे एक लक्ष्य प्रणाली। मार्टिन-लोफ के प्रकार के सिद्धांत पर आधारित एक प्रणाली का उपयोग करना संभवतः सबसे अच्छा परिचय है -अगवा में दूसरों का उल्लेख करें- शायद यह एक बेहतर शुरुआती बिंदु है यदि यह आपका लक्ष्य है, तो आप इस तरह से अंकगणितीय और आगमनात्मक प्रकारों के साथ अधिक तेज़ी से जा सकते हैं। ढांचा।


10

सीओसी जाने के लिए सबसे अधिक संभावना है। बस Coq में गोता लगाएँ और सॉफ़्टवेयर फ़ाउंडेशन (जो कि TaPL और ATTaPL का पियर्स शामिल है) जैसे एक अच्छे ट्यूटोरियल के माध्यम से काम करें ।

एक बार जब आप आश्रित टाइपिंग के व्यावहारिक पहलुओं के लिए एक अनुभव प्राप्त करते हैं, तो सैद्धांतिक स्रोतों पर वापस जाएं: वे तब बहुत अधिक समझ बनाएंगे।

आपकी सुविधाओं की सूची मूल रूप से सही लगती है, लेकिन यह देखने के लिए कि वे व्यवहार में कैसे खेलते हैं, एक हजार फ़ीचर पॉइंट के लायक है।

(एक और थोड़ा और अधिक उन्नत ट्यूटोरियल एडम चिंपला की डिपेंडेंट टाइप्स के साथ प्रमाणित प्रोग्रामिंग है )


"सहज" शायद यहाँ चिपके हुए बिंदु है: CoC / CIC के बारे में सिर्फ आश्रित टाइपिंग की तुलना में बहुत अधिक अंतर्ज्ञान हैं। यह एक अच्छा अंतिम लक्ष्य है-मेरे मन में यह विकल्प वास्तव में Coq और Twelf- के बीच है, लेकिन शायद "आश्रित टाइपिंग पर वास्तव में ठोस पकड़ हासिल करने की दिशा में" पहला पहला कदम नहीं है।
चार्ल्स स्टीवर्ट

@Charles: आपकी बात मान ली गई है। मैं अभी भी व्यावहारिक दृष्टिकोण से सोचता हूं कि यह एक अच्छा दांव है। भले ही CoC / CIC की पूरी समझ एक अधिक जटिल उपक्रम हो सकती है, लेकिन Coq (इसके लिए अच्छे बुनियादी स्तर के ट्यूटोरियल का अस्तित्व) केवल प्रोग्रामिंग पहलुओं या सिर्फ मूल प्रमाण-सहायक पहलुओं को सीखने पर ध्यान केंद्रित करना आसान बनाता है (के रूप में इससे पहले कि आप सभी जटिलताओं को समझ लें, तब तक आपकी रुचियाँ तय होती हैं)। मुझे लगता है कि यह सैद्धांतिक पृष्ठभूमि से नहीं आने वाले लोगों के लिए "सहज" के रूप में योग्य है।
मार्क हैमन


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.