औपचारिक सत्यापन

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

यह औपचारिक सत्यापन प्रणाली की विशुद्धता को प्रमाणित करने में सहायक हो सकता है जैसे:  क्रिप्टोग्राफिक प्रोटोकॉल, संयोजन तर्क, आंतरिक मेमोरी के साथ डिजिटल सर्किट और स्रोत कोड के रूप में व्यक्त सॉफ़्टवेयर।

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

दृष्टिकोण
यह एक दृष्टिकोण और गठन प्रतिरूप की मूल्यांकन है, जिसमें गणितीय प्रतिरूप का एक व्यवस्थित रूप से संपूर्ण अन्वेषण सम्मिलित है (यह  परिमित प्रतिरूप सिद्धांत के लिए संभव है, लेकिन कुछ अनंत प्रतिरूप के लिए भी है जहाँ स्थितियों के अनंत अवयवों को अमूर्तता का उपयोग करके या लाभ उठाकर प्रभावी विधियों से प्रदर्शित किया जा सकता है।) सामान्यतः, इसमें एक ही संचालन में स्थितियों के पूरे समूह पर विचार करने और कंप्यूटिंग समय को कम करने के लिए सुव्यवस्थित और क्षेत्र-विशिष्ट अमूर्त तकनीकों का उपयोग करके प्रतिरूप में सभी   स्थितियों और संक्रमणों की खोज करना सम्मिलित है। कार्यान्वयन तकनीकों में  स्थिति अंतरिक्ष गणना,  प्रतीकात्मक स्थिति अंतरिक्ष गणना,  सार व्याख्या,  प्रतीकात्मक अनुकरण, अमूर्त शोधन सम्मिलित हैं। प्रमाणित किए जाने वाले गुणों को अधिकांशतः लौकिक तर्क में वर्णित किया जाता है, जैसे  रैखिक लौकिक तर्क  (एलटीएल),  संपत्ति विशिष्टता भाषा  (पीएसएल),  प्रणाली  वेरिलॉग एसेर्शन (एसवीए), या  कम्प्यूटेशनल वृक्ष तर्क  (CTL)। प्रतिरूप मूल्यांकन का बड़ा लाभ यह है कि यह अधिकांशतः पूरी तरह से स्वचालित होती है; इसकी प्राथमिक हानि यह है कि यह सामान्य रूप से बड़ी प्रणालियों के पैमाने पर नहीं होता है; प्रतीकात्मक प्रतिरूप सामान्य  स्थिति के कुछ सौ बिट्स तक सीमित होते हैं, जबकि स्पष्ट स्थिति गणना के लिए अपेक्षाकृत छोटे होने के लिए इस प्रकार की स्थिति के स्थान की खोज की आवश्यकता होती है।

एक अन्य दृष्टिकोण निगनात्मक सत्यापन है। इसमें प्रणाली और इसकी विशिष्टताओं (और संभवतः अन्य टिप्पणियां) से गणितीय प्रमाणों के दायित्वों का एक संग्रह उत्पन्न होता है, जिसकी प्रमाणिकता प्रणाली के विनिर्देशों के अनुरूप होती है, और इन दायित्वों का निर्वहन या तो प्रमाण सहायकों (आकर्षक प्रमेय सिद्ध) का उपयोग करते हुए होता है ( जैसे कि होल प्रमेय सिद्ध,  एसीएल 2, इसाबेल (प्रमेय सिद्ध), कोक (Coq) या  प्रोटोटाइप सत्यापन प्रणाली ), या स्वचालित प्रमेय सिद्ध, विशेष रूप से संतुष्टि मोडुलो सिद्धांत (SMT) समाधानकर्ता सहित का उपयोग करते हुए होता है। इस दृष्टिकोण की हानि यह है कि इसके लिए उपयोगकर्ता को विस्तार से समझने की आवश्यकता हो सकती है कि प्रणाली  सही विधि से क्यों काम करता है, और इस जानकारी को सत्यापन प्रणाली तक पहुंचाने के लिए, या तो सिद्ध किए जाने वाले प्रमेयों के अनुक्रम के रूप में या प्रणाली घटकों (जैसे कार्य या प्रक्रियाएं) और संभवतः उप-घटक (जैसे लूप या डेटा संरचना) के विनिर्देशों (अपरिवर्तनीय, पूर्व शर्त, पोस्टकंडिशन) के रूप में।

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

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

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

सत्यापन और वैधता
सत्यापन और वैधता उद्देश्य के लिए किसी उत्पाद की उपयुक्तता के परीक्षण का एक पहलू है और मान्यता पूरक पहलू है। अधिकांशतः एक समग्र मूल्यांकन प्रक्रिया सत्यापन और वैधता को वी और वी के रूप में संदर्भित करता है।


 * मान्यता: "क्या हम सही काम करने का प्रयास कर रहे थे?", यानी, उत्पाद उपयोगकर्ता की वास्तविक आवश्कताओं के लिए निर्दिष्ट है?
 * सत्यापन: "क्या हमने वह बनाया है जो हम बनाने का प्रयास कर रहे थे?", यानी, उत्पाद विनिर्देशों के अनुरूप है?

सत्यापन प्रक्रिया में स्थिर/संरचनात्मक और गतिशील/व्यवहारिक पहलू सम्मिलित हैं। उदाहरण के लिए, एक सॉफ्टवेयर उत्पाद के लिए कोई स्रोत कोड (स्थैतिक) का निरीक्षण कर सकता है और विशिष्ट परीक्षण स्थितियों (गतिशील) के विरूद्ध चल सकता है। सत्यापन सामान्यतः केवल गतिशील रूप से किया जा सकता है, अर्थात, उत्पाद को विशिष्ट और असामान्य उपयोगों के माध्यम से परीक्षण किया जाता है ("क्या यह संतोषजनक रूप से सभी उपयोग स्थितियों को पूरा करता है?")।

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

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

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

2011 तक, कई ऑपरेटिंग प्रणाली औपचारिक रूप से सत्यापित किए गए हैं: निक्टा का सुरक्षित L4 माइक्रोकर्नेल, OK लैब्स द्वारा seL4  के रूप में व्यावसायिक रूप से बेचा गया;  पूर्वी चीन सामान्य विश्वविद्यालय  द्वारा ओएसेक/वीडीएक्स आधारित रीयल-टाइम ऑपरेटिंग प्रणाली  ओरिएंटैस ; ग्रीन हिल्स सॉफ्टवेयर की सच्चाई (ऑपरेटिंग प्रणाली ); और  SYSGO  का पाइकोस।  2016 में, येल में झोंग शाओ के नेतृत्व में एक टीम ने CertiKOS नामक एक औपचारिक रूप से सत्यापित ऑपरेटिंग प्रणाली  कर्नेल विकसित किया।  2017 तक, नेटवर्क के गणितीय प्रतिरूप के माध्यम से बड़े कंप्यूटर नेटवर्क के प्रारूप के लिए औपचारिक सत्यापन लागू किया गया है, और एक नई नेटवर्क प्रौद्योगिकी श्रेणी, आशय-आधारित नेटवर्किंग के आदान प्रदान करने के रूप में। औपचारिक सत्यापन समाधान प्रदान करने वाले नेटवर्क सॉफ़्टवेयर विक्रेताओं में  सिस्को  सम्मिलित है फॉरवर्ड नेटवर्क  और वेरिफ्लो प्रणाली सम्मिलित है।

स्पार्क (प्रोग्रामिंग भाषा) एक टूलसेट प्रदान करता है जो औपचारिक सत्यापन के साथ सॉफ्टवेयर विकास को सक्षम बनाता है और अनुप्रयोग कई उच्च-अखंडता प्रणालियों में उपयोग किया जाता है।

कॉम्पर्ट सी संकलक एक औपचारिक रूप से सत्यापित सी संकलक है जो अधिकांश आईएसओ सी को लागू करता है।

यह भी देखें

 * स्वचालित प्रमेय प्रमाणित करना
 * प्रतिरूप मूल्यांकन
 * प्रतिरूप मूल्यांकन उपकरणों की सूची
 * औपचारिक तुल्यता मूल्यांकन
 * सबूत चेकर
 * संपत्ति विशिष्टता भाषा
 * सैद्धांतिक कंप्यूटर विज्ञान में महत्वपूर्ण प्रकाशनों की सूची #औपचारिक सत्यापन
 * स्टेटिक कोड विश्लेषण
 * परिमित-स्थिति सत्यापन में अस्थायी तर्क
 * पोस्ट-सिलिकॉन सत्यापन
 * बुद्धिमान सत्यापन
 * रनटाइम सत्यापन