निर्भर प्रकार बनाम शोधन प्रकार


57

क्या कोई निर्भर प्रकार और शोधन प्रकार के बीच अंतर बता सकता है? जैसा कि मैं इसे समझता हूं, एक शोधन प्रकार में एक विधेय को पूरा करने वाले प्रकार के सभी मूल्य शामिल हैं। क्या आश्रित प्रकार की एक विशेषता है जो उन्हें अलग करती है?

यदि यह मदद करता है, तो मैं लिक्विड हास्केल परियोजना के माध्यम से परिष्कृत प्रकारों में आया, और Coq और Agda के माध्यम से निर्भर प्रकार। उस ने कहा, मैं एक व्याख्या की तलाश कर रहा हूं कि सिद्धांत कैसे भिन्न होते हैं।

जवाबों:


33

मुख्य अंतर दो आयामों के साथ हैं - अंतर्निहित सिद्धांत में, और उनका उपयोग कैसे किया जा सकता है। चलो बस बाद वाले पर ध्यान केंद्रित करें।

एक उपयोगकर्ता के रूप में, लिक्विडहैस्केल और परिशोधन प्रकार प्रणालियों में विनिर्देशों का "तर्क" आमतौर पर निर्णायक टुकड़ों तक सीमित है, ताकि सत्यापन (और अनुमान) पूरी तरह से स्वचालित हो, जिसका अर्थ है कि पूर्ण में आवश्यक सॉर्ट के "प्रमाण शर्तों" की आवश्यकता नहीं है। निर्भर सेटिंग। इससे महत्वपूर्ण स्वचालन होता है। उदाहरण के लिए, LH में प्रविष्टि प्रकार की तुलना करें:

http://ucsd-progsys.github.io/lh-workshop/04-case-study-insertsort.html#/ordered-lists

बनाम इदरिस में

https://github.com/davidfstr/idris-insertion-sort/blob/master/InsertionSort.idr

हालांकि, स्वचालन एक कीमत पर आता है। एक व्यक्ति पूरी तरह से निर्भर दुनिया में विशिष्टताओं के रूप में मनमाने कार्यों का उपयोग नहीं कर सकता है, जो गुणों के वर्ग को प्रतिबंधित कर सकता है।

इस प्रकार, शोधन प्रणालियों में से एक लक्ष्य के लिए है का विस्तार , क्या निर्दिष्ट किया जा सकता का वर्ग है, जबकि करने के लिए है पूरी तरह से निर्भर प्रणालियों के कि स्वचालित रूप से क्या साबित किया जा सकता। शायद वहाँ एक खुश बैठक मैदान है जहाँ हम दोनों दुनिया का सबसे अच्छा मिल सकता है!


क्या रिफाइनमेंट टाइप आधारित स्पेसिफिकेशन्स से लेकर डिपेंडेंट टाइप बेस्ड स्पेसिफिकेशंस तक किसी तरह मैकेनिकली मैप करना है? या इस तरह के "समरूपतावाद" का अभी तक पर्याप्त अध्ययन नहीं किया गया है?
एरिक अल्लिक

1
AFAIK इस तरह के "समरूपतावाद" का बहुत अध्ययन नहीं किया गया है। हालांकि हाल ही में कुछ काम हुए हैं, देखिए: लेहमैन और टेंटर द्वारा "कॉक्ल में सरल शोधन प्रकार" (जो जल्द ही दिखाई देगा ... यहां जीएच रेपो: github.com/pleiad/Refinements )
रंजीत झला

स्काला में पथ-निर्भर प्रकारों के बारे में कैसे?
यांग बो

1
@ रंजीतजला मुझे लगता है कि आपने गलती से अंतिम पैराग्राफ में अपने लक्ष्यों को गलत तरीके से गोल कर दिया?
नोल्डोरिन

1
@ नोल्डोरिन मैं कहूंगा कि रंजीत को अपना अंतिम पैराग्राफ सही मिला। "शोधन प्रकार ... पर्णपाती टुकड़ों तक ही सीमित है ताकि सत्यापन (और अनुमान) पूरी तरह से स्वचालित है" बनाम "प्रमाण शब्द ... आवश्यक ... निर्भर [प्रकार]"। इस प्रकार परिशोधन प्रकारों में काम करने वाले लोग यह विस्तारित करने की कोशिश कर रहे हैं कि शोधन योग्य प्रकार में कितना निर्दिष्ट किया जा सकता है, जबकि अभी भी स्वचालित रूप से नीच / सत्यापित किया जा रहा है, जबकि आश्रित प्रकार में काम करने वाले पीढ़ी दर पीढ़ी प्रमाण को स्वचालित करने का प्रयास कर रहे हैं।
राफ

22

शोधन प्रकार केवल विधेय के साथ सामान्य प्रकार हैं। यही है, यह देखते हुए कि एक सामान्य प्रकार है और , पर कुछ विधेय हैTPT

{v:TP(v)}
एक शोधन प्रकार है। इस मामले में को आधार प्रकार कहा जाता है ।T

AFAIK, लिक्विड हास्केल में, वे कुछ आश्रित फ़ंक्शन प्रकारों की भी अनुमति देते हैं , जो कि टाइप [1] है। ध्यान दें कि पूरी तरह से निर्भर प्रकार (जैसे सिग्मा-प्रकार) की अनुमति नहीं है।{x:T1T2P}

लिक्विड टाइप सिस्टम, जिसे [1] में वर्णित किया गया है, वास्तव में निर्णायक है और लिक्विड हास्केल एसएमटी सॉल्वर का उपयोग करता है। हालाँकि, लिक्विड हास्केल को भी प्रमाण शब्दों (या मानों की आवश्यकता होती है, क्योंकि उन्हें एक गैर-भरोसेमंद रूप से टाइप की गई भाषा में कहा जाता है): यदि आप लिक्विड हास्केल प्रोग्राम लिखने के लिए बैठते हैं, तो आप अपने कार्यों को लिखते हैं, न कि केवल प्रकारों को।

[१] http://goto.ucsd.edu/~rjhala/liquid/liquid_types.pdf


1
सिग्मा को चर्च जैसी एन्कोडिंग का उपयोग करके पाई के साथ एन्कोड किया जा सकता है, लेकिन AFAIK लिक्विड हैस्केल का शोधन कार्य प्रकार पीआई (निर्भर फ़ंक्शन) प्रकार नहीं है।
fread2281

15

आश्रित प्रकार वे प्रकार होते हैं जो किसी भी तरह से मूल्यों पर निर्भर होते हैं। एक क्लासिक उदाहरण "लंबाई के वैक्टर का प्रकार n" है, जहां nएक मूल्य है। शोधन प्रकार, जैसा कि आप सवाल में कहते हैं, एक दिए गए प्रकार के सभी मूल्यों से मिलकर बनता है जो किसी दिए गए विधेय को संतुष्ट करता है। जैसे सकारात्मक संख्याओं का प्रकार। ये अवधारणाएं विशेष रूप से संबंधित नहीं हैं (जो मुझे पता है)। बेशक, आप यथोचित रूप से परिशोधन प्रकार रख सकते हैं, जैसे "सभी प्रकार की संख्याएँ n" से अधिक ।


3
क्या एक दूसरे का सबसेट है? शोधन प्रकार एसएमटी का उपयोग करने के लिए हल करने योग्य लगते हैं, लेकिन आश्रित प्रकारों को आपके स्वयं के प्रमाण की शर्तों की आवश्यकता होती है ...
20:17 तक

4
"क्या एक दूसरे का सबसेट है?" नहीं, इसीलिए मैंने एक परिशोधन प्रकार के उदाहरण दिए जो आश्रित नहीं है और एक आश्रित प्रकार जो परिशोधन नहीं है।
एलेक्सी रोमानोव

8
शोधन प्रकारों को सिग्मा के साथ एन्कोड नहीं किया जा सकता है?
15:22 बजे fread2281

3
आपका उदाहरण आपकी बात को प्रदर्शित नहीं करता है। सकारात्मक संख्याओं को उन संख्याओं से अधिक के रूप में परिभाषित किया गया है। इसका मतलब यह नहीं है कि "सकारात्मक संख्याओं का प्रकार" ठीक है "सभी की तुलना में अधिक संख्याओं का प्रकार 0"?
akdom

2
क्या यह संभव नहीं है कि परिशोधन की भविष्यवाणी की जाए जो वेक्टर की लंबाई के साथ-साथ लागू होती है?
CMCDragonkai
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.