प्रोग्रामिंग भाषा शब्दार्थ प्रोटोटाइप उपकरण


11

क्या प्रोग्रामिंग भाषा के शब्दार्थों और प्रकार प्रणाली के प्रोटोटाइप के लिए कोई उपकरण है और जो मानक गुणों की कुछ प्रकार की मॉडल जांच की अनुमति देता है , जैसे कि ध्वनि?

मैं यह पूछ रहा हूं, क्योंकि मैं मिश्र धातु पर एक किताब पढ़ रहा हूं और यह सटीक कार्यक्षमता प्रदान करता है जो मैं चाहता हूं, लेकिन संबंधपरक तर्क का उपयोग करके व्यक्त किए गए मॉडल के लिए।

मुझे ओट के बारे में पता है , लेकिन इसमें "मॉडल की जाँच" की क्षमता नहीं है, क्योंकि यह प्रूफ सहायक प्रणालियों के लिए कोड जनरेट करने पर केंद्रित है।

ऐसे उपकरण अस्तित्व पर कोई संदर्भ अच्छा होगा।


1
ओट चरण एक है, फिर आप अपने पसंदीदा प्रूफ सहायक में मॉडल की जाँच करते हैं।
गिल्स एसओ- बुराई को रोकना '

@ गिल्स: ठीक है, लेकिन एक मॉडल चेकिंग टूल का एक बिंदु यह है कि यह किसी दिए गए आकार के तत्वों का एक पूरा सेट उत्पन्न करता है ताकि यह जांच सके कि संपत्ति उनके लिए वास्तव में वैध है या नहीं। इस तरह, मुझे इस पीढ़ी के हिस्से को परिभाषित हर भाषा के लिए कोड करना होगा। क्या आप जानते हैं कि इस पीढ़ी के कदम को स्वचालित करने का कोई तरीका है?
रॉड्रिगो रिबेरो

तकनीकी रूप से, आप इसे प्रूफ असिस्टेंट (कम से कम एक में जैसे कूक) में कर सकते हैं, लेकिन यह शायद बहुत धीमी गति से होगा। सबूत सहायकों को स्वचालित रूप से समस्या को तोड़ने के लाखों तरीकों की कोशिश करने के बजाय मानव-सहायता प्रमाणों की ओर ध्यान दिया जाता है। यदि आप ओट का पुन: उपयोग करना चाहते हैं, तो आप अपने पसंदीदा मॉडल चेकर के लिए एक बैकएंड जोड़ सकते हैं।
गिल्स एसओ- बुराई को रोकें '

जवाबों:


8

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

कहा जाने के बाद, कई (शायद इतने अलग नहीं) विकल्प हैं कि आप ले सकते हैं (जो आपके द्वारा पहले ही उल्लेख किया गया है उन्हें शामिल करें):

  • नई भाषाओं को बनाने और प्रोटोटाइप करने के लिए डिज़ाइन की गई एक विशिष्ट भाषा / रूपरेखा का उपयोग करना: उदाहरण के लिए, रेडेक्स [1], जो प्रोग्रामिंग भाषाओं के विनिर्देश और जाँच (परिचालन) शब्दार्थ के लिए रैकेट में एक डोमेन-विशिष्ट भाषा एम्बेडेड है, जिसने एक परिभाषा दी है। भाषा, टाइपिंग (लेटेक्स में) जैसे कार्यों की आसान हैंडलिंग प्रदान करता है, कमी के निशान का निरीक्षण, यूनिट परीक्षण और यादृच्छिक परीक्षण (उदाहरण के लिए टाइपिंग की जाँच)
  • सामान्य मॉडलिंग भाषाओं का उपयोग करना जो निश्चित विश्लेषणों को आसानी से परिभाषित करने और प्रदर्शन करने की पेशकश करते हैं, जब तक कि वे विशिष्ट भाषा को आवश्यक सीमा तक हाथ में पकड़ सकते हैं; मिश्र धातु [2] इस तरह के दृष्टिकोण का एक उदाहरण है: यद्यपि बहुत सामान्य और लचीली, भाषाओं को राज्यों के बीच संबंधों के रूप में मॉडल किया जा सकता है, जबकि मॉडल चेकिंग (जैसे भाषा के भीतर मूल्यांकन) के लिए समर्थन शब्दार्थ के साथ व्यक्त किए जाने के बाद मुफ्त में आता है संबंध मॉडल (उदाहरण के लिए किसी भाषा के शब्दार्थ के लिए कुछ विचार [3] में देखे जा सकते हैं)
  • एक प्रमेय कहावत का उपयोग करके इसके गुणों की जांच करने के लिए भाषा को एम्बेड करना; एक उदाहरण कोक [4] जैसी प्रमाण प्रणाली में भाषा को परिभाषित करने के साथ-साथ इसके शब्दार्थ को भी परिभाषित किया गया है (इस दृष्टिकोण के बारे में अधिक विवरण, साथ ही चर्चा और Coq में गहरी और उथले एम्बेडिंग के बीच के अंतर का प्रदर्शन इसमें दिया गया है] 5])
  • ओट का उपयोग करना (जैसा कि पहले ही उल्लेख किया गया है, रेडेक्स के समान भावना के साथ, लेकिन एम्बेडेड होने के बजाय एक नई परिभाषा भाषा प्रदान करना); ओट आपको एक सुविधाजनक संकेतन में प्रोग्रामिंग भाषा को परिभाषित करने की अनुमति देता है, और एक प्रूफ सिस्टम में टाइपसेटिंग और परिभाषाओं का उत्पादन करता है (आमतौर पर गहरी एम्बेडिंग के साथ), जहां अधिकांश चेकिंग (यानी प्रमाण) मैन्युअल रूप से करने की आवश्यकता होती है
  • भाषा और उसके शब्दार्थ को विकसित करने के साथ-साथ एक सामान्य-प्रयोजन प्रोग्रामिंग भाषा में उपयुक्त जांच (जैसे परीक्षण से) "खरोंच से" और अन्य प्रणालियों में अनुवाद यदि आवश्यक हो, तो प्रयोजनों की जाँच के लिए (कुछ भाषाएं, जैसे लियोन [6], अंतर्निर्मित सत्यापनकर्ता शामिल हैं, जो स्वचालित रूप से कुछ गुणों को साबित करने की अनुमति देते हैं और इस दृष्टिकोण को एक प्रूफ सिस्टम में एम्बेड करने के समान बनाते हैं)

ध्यान दें कि फ्रेमवर्क / टूल का उपयोग करना कितना आसान है (उदाहरण के लिए कागज पर या लेटेक्स में परिभाषा रखना जितना आसान है) के बीच ट्रेड-ऑफ है और भाषा के गुणों की जांच करने के लिए तंत्र कितने शक्तिशाली हैं (जैसे एम्बेड करना एक प्रमेय कहावत में भाषा बहुत विस्तृत गुणों की जाँच करने की अनुमति दे सकती है)।

[१] केसी क्लेन, जॉन क्लेन्स, क्रिस्टोस डिमौलस, कार्ल ईस्टलंड, मैथियास फेलेइसेन, मैथ्यू फ्लैट, जे। ए। मैक्कार्थी, जॉन रफकिन्द, सैम टोबिन-होचस्टाट और रॉबर्ट ब्रूस फाइंडर। रन योर रिसर्च: लाइटवेट मैकेनाइजेशन की प्रभावशीलता पर। POPL, 2012।

[२] डैनियल जैक्सन। मिश्र धातु: एक हल्की वस्तु मॉडलिंग संकेतन। टीओएसईएम, 2002।

[३] ग्रेग डेनिस, फेलिक्स चांग, ​​डैनियल जैक्सन। SAT के साथ कोड का मॉड्यूलर सत्यापन। ISSTA, 2006

[४] कोक औपचारिक प्रमाण प्रबंधन प्रणाली

[५] कार्यक्रमों के बारे में औपचारिक तर्क। एडम चिप्पला, 2016

[६] कार्यात्मक स्कैला कार्यक्रमों की पुष्टि, मरम्मत और संश्लेषण के लिए लियोन स्वचालित प्रणाली

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