क्या शुद्ध कार्यात्मक प्रोग्रामिंग भाषाओं के लिए कोई एनोटेट औपचारिक सत्यापन प्रणाली है?


25

ACSL (Ansi C Specification Language), C कोड के लिए एक विनिर्देश है, जो विशेष टिप्पणियों के साथ एनोटेट किया गया है, जो C कोड को औपचारिक रूप से सत्यापित करने की अनुमति देता है।

मैंने इस पर ध्यान नहीं दिया है, लेकिन मुझे लगता है कि एसीएसएल सत्यापनकर्ताओं में इस्तेमाल होने वाले औपचारिक तरीके होरे लॉजिक के समान होंगे। हालांकि, शुद्ध कार्यात्मक भाषाओं के लिए, जैसे हास्केल, मैं कल्पना नहीं कर सकता कि औपचारिक सत्यापन के लिए किस प्रकार की औपचारिकता का उपयोग किया जाएगा।

क्या किसी ने एसीएसएल के समान कुछ बनाया है , लेकिन एक शुद्ध कार्यात्मक भाषा के लिए? यदि नहीं, तो क्या कार्यात्मक भाषाओं के लिए विनिर्देश-एनोटेट शैली औपचारिक सत्यापन में कोई शोध हुआ है?

मुझे पता है कि आश्रित टाइपिंग है, जो कई भाषाओं (एजडा, इदरिस, आदि ...) का समर्थन करती है, लेकिन हास्केल पर निर्भर टाइपिंग में कुछ (अपठनीय?) प्रकार-विज़ार्ड किए बिना मुश्किल है। इस बात को ध्यान में रखते हुए, और जब से हास्केल के पास एजडा और इदरिस की तुलना में पुस्तकालय का बेहतर समर्थन है, मेरा मानना ​​है कि कार्यात्मक औपचारिक सत्यापन के लिए ऐसी प्रणाली उपयोगी हो सकती है, लेकिन मुझे नहीं पता कि इस पर शोध किया गया है या नहीं।

जवाबों:


13

होंडा और योशिदा

(शायद) विशुद्ध रूप से कार्यात्मक भाषाओं के लिए होरे लॉजिक्स का नेतृत्व किया। यह कार्य यहाँ वर्णित के रूप में हेनेसी-मिलनर तर्क और कार्यों में मिलनर के एन्कोडिंग पर आधारित है:

रेगीस-जियानस एट अल द्वारा एक अन्य उत्तर में उल्लिखित काम होंडा / योशिदा द्वारा ऊपर दिए गए पहले काम के समान है। यह प्रभावी एमएल शैली भाषाओं में विस्तारित किया गया है:

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


15

एफ*

परिशोधन प्रकार और ACSL जैसे संकेतन के बीच घनिष्ठ पत्राचार प्रतीत होता है।

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


बहुत अधिक परेशानी के बिना - वास्तव में नहीं। इदरीस डिफ़ॉल्ट रूप से सख्त है, और हास्केल आलसी है; यह एक बड़ी समस्या के रूप में है। हास्केल के साथ संगतता भी इदरिस डिजाइन के लिए एक बहुत ही उच्च प्राथमिकता नहीं थी।
बार्टेक बानचेविच

काफी उचित। Agda डिफ़ॉल्ट रूप से समाप्ति की जाँच करता है, इसलिए सख्ती जैसी चीजें सिद्धांत में कोई समस्या नहीं हैं । बेशक रन-टाइम नाटकीय रूप से अलग हो सकता है।
कोड़ी

11

Yann Régis-Gianas PhD थीसिस को फ्रांस्वा पोट्टियर के साथ देखें: कॉल-बाय-वैल्यू फंक्शनल प्रोग्राम्स (MPC'08) के लिए एक होरे लॉजिक । यह काम जोहानिस कनिग और जीन-क्रिस्टोफ फिलियात्र द्वारा 2009 में सामान्य एमएल साइड-इफेक्ट्स को कवर करने के लिए बढ़ाया गया था: हू: ए वेरिफायर फॉर इफेक्टिव फुल-ऑर्डर प्रोग्राम्स


8

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

उस पेपर में संबंधित कार्य खंड में कुछ संकेत होते हैं, जैसे कि जू, पेयटन-जोन्स, और हॉस्केल के लिए क्लेसेन का स्थैतिक अनुबंध , और सोननेक्स, ड्रॉसोपोउलू, और ईसेनबेक के ज़ेनो और विएटनोटिस, पीटन-जोन्स, क्लासेन और रोसेन का हेलो


1

OOPSLA 2012 और ICFP 2014 में , कॉन्ट्रैक्ट्स के सॉफ्ट वेरिफिकेशन पर हमारा काम संबंधित है, आपको कॉन्ट्रैक्ट लिखने की अनुमति देता है, जो बहुत कुछ ACSL स्पेक्स की तरह होते हैं, और फिर या तो स्टेटिकली वेरीफाई करते हैं या रनटाइम पर डायनेमिक चेक का इस्तेमाल करते हैं।

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