लूप वैरिएंट

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

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

एक while लूप, या, अधिक सामान्यतः, एक कंप्यूटर प्रोग्राम जिसमें while लूप शामिल हो सकते हैं, पूरी तरह से सही कहा जाता है यदि यह आंशिक रूप से सही है और यह समाप्त हो जाता है।

पूर्ण शुद्धता के लिए अनुमान का नियम
थोड़ी देर के लूप की समाप्ति के लिए अनुमान के नियम को औपचारिक रूप से बताने के लिए, जिसे हमने ऊपर प्रदर्शित किया है, याद रखें कि फ़्लॉइड-होरे तर्क में, थोड़ी देर के लूप की आंशिक शुद्धता को व्यक्त करने का नियम है:
 * $$\frac{\{I \land C\}\;S\;\{I\}} {\{I\}\;\mathtt{while}\;C\; \mathtt{do}\; S \;\{I\land\lnot C\}},$$

कहाँ $I$ लूप अपरिवर्तनीय है, C स्थिति है, और S लूप का शरीर है। पूर्ण शुद्धता व्यक्त करने के लिए, हम इसके बजाय लिखते हैं:
 * $$\frac{< \text{ is well-founded},\;[I \land C \land V=z ]\;S\;[I \land V < z]}

{[I]\;\mathtt{while}\;C\; \mathtt{do}\; S \;[I\land\lnot C]},$$ जहां, इसके अलावा, V एक प्रकार है, और परंपरा के अनुसार अनबाउंड प्रतीक z को सार्वभौमिक परिमाणीकरण के रूप में लिया जाता है।

समाप्त होने वाले प्रत्येक लूप का एक प्रकार होता है
एक वैरिएंट के अस्तित्व का तात्पर्य है कि थोड़ी देर का लूप समाप्त हो जाता है। यह आश्चर्यजनक लग सकता है, लेकिन इसका उलटा भी सच है, जब तक हम पसंद के सिद्धांत को मानते हैं: प्रत्येक while लूप जो समाप्त होता है (उसके अपरिवर्तनीय को देखते हुए) का एक प्रकार होता है। इसे सिद्ध करने के लिए, मान लें कि लूप
 * $$\mathtt{while}\;C\; \mathtt{do} \; S$$

अपरिवर्तनीय दिए जाने पर समाप्त हो जाता है $I$ जहां हमारे पास पूर्ण शुद्धता का दावा है
 * $$[I \land C ]\;S\;[I].$$

राज्य क्षेत्र पर उत्तराधिकारी संबंध पर विचार करें $&Sigma;$ दोनों अपरिवर्तनीय को संतुष्ट करने वाले राज्य से कथन एस के निष्पादन से प्रेरित $I$ और शर्त सी. यानी हम कहते हैं कि एक अवस्था $&sigma;&prime;$ का उत्तराधिकारी है $&sigma;$ अगर और केवल अगर हमने ध्यान दिया कि $$\sigma' \neq \sigma,$$ अन्यथा लूप समाप्त होने में विफल रहेगा।
 * $I$ और C दोनों राज्य में सत्य हैं $&sigma;$, और
 * $&sigma;&prime;$ वह स्थिति है जो राज्य में कथन S के निष्पादन से उत्पन्न होती है $&sigma;$.

इसके बाद उत्तराधिकारी संबंध के प्रतिवर्ती, सकर्मक समापन पर विचार करें। इस पुनरावृत्ति को कॉल करें: हम कहते हैं कि एक राज्य $&sigma;&prime;$ का पुनरावृत्त है $&sigma;$ या तो $$\sigma' = \sigma,$$ अथवा एक परिमित शृंखला है $$\sigma_0, \sigma_1,\,\dots\,,\sigma_n$$ ऐसा है कि $$\sigma_0 = \sigma,$$ $$\sigma_n = \sigma'$$ और $$\sigma_{i+1}$$ का उत्तराधिकारी है $\sigma_i;$ सभी के लिए $I$, $$0 \le i < n.$$ हम ध्यान दें कि यदि $&sigma;$ और $&sigma;&prime;$ दो अलग-अलग राज्य हैं, और $&sigma;&prime;$ का पुनरावृत्त है $&sigma;$, तब $&sigma;$ का पुनरावृत्त नहीं हो सकता $&sigma;&prime;,$ फिर से, अन्यथा लूप समाप्त होने में विफल रहेगा। दूसरे शब्दों में, पुनरावृत्ति एंटीसिमेट्रिक है, और इस प्रकार, एक आंशिक क्रम है।

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

इसलिए - पसंद के सिद्धांत को मानते हुए - जिस उत्तराधिकारी संबंध को हमने मूल रूप से लूप के लिए परिभाषित किया था, वह वेल-फाउंडेड रिलेशन है | राज्य स्थान पर अच्छी तरह से स्थापित है $&Sigma;$, क्योंकि यह सख्त (अप्रतिवर्ती) है और पुनरावृत्त संबंध में निहित है। इस प्रकार इस राज्य स्थान पर पहचान फ़ंक्शन while लूप के लिए एक प्रकार है, जैसा कि हमने दिखाया है कि राज्य को सख्ती से कम करना चाहिए - एक उत्तराधिकारी और एक पुनरावृत्त के रूप में - हर बार जब शरीर एस को अपरिवर्तनीय दिया जाता है तो निष्पादित किया जाता है $I$ और शर्त सी.

इसके अलावा, हम एक गिनती तर्क द्वारा दिखा सकते हैं कि किसी भी प्रकार का अस्तित्व 'में एक प्रकार के अस्तित्व का तात्पर्य है'ω1, पहला बेशुमार क्रमसूचक, यानी,
 * $$V:\Sigma\rightarrow\omega_1.$$

ऐसा इसलिए है क्योंकि एक सीमित इनपुट से चरणों की एक सीमित संख्या में एक सीमित कंप्यूटर प्रोग्राम द्वारा पहुंच योग्य सभी राज्यों का संग्रह अनगिनत रूप से अनंत है, औरω1गणनीय सेटों पर सभी सुव्यवस्थित ऑर्डर प्रकार की गणना है।

व्यावहारिक विचार
व्यवहार में, लूप वेरिएंट को अक्सर गैर-नकारात्मक पूर्णांक माना जाता है, या ऐसा होना भी आवश्यक है, लेकिन यह आवश्यकता कि प्रत्येक लूप में एक पूर्णांक संस्करण हो, प्रोग्रामिंग भाषा से μ ऑपरेटर की अभिव्यंजक शक्ति को हटा देता है। जब तक ऐसी (औपचारिक रूप से सत्यापित) भाषा रिकर्सन (कंप्यूटर विज्ञान) जैसे किसी अन्य समान रूप से शक्तिशाली निर्माण के लिए समाप्ति के एक अनंत प्रमाण की अनुमति नहीं देती है, यह अब पूर्ण μ-रिकर्सिव फ़ंक्शन | μ-रिकर्सन में सक्षम नहीं है, बल्कि केवल आदिम रिकर्सिव फ़ंक्शन में सक्षम है। एकरमैन का फ़ंक्शन एक पुनरावर्ती फ़ंक्शन का विहित उदाहरण है जिसकी गणना पाश के लिए में नहीं की जा सकती है।

हालाँकि, उनके कम्प्यूटेशनल जटिलता सिद्धांत के संदर्भ में, जो कार्य आदिम पुनरावर्ती नहीं हैं, वे आमतौर पर ट्रैक्टेबल समस्या माने जाने वाले दायरे से बहुत परे हैं। घातांक के साधारण मामले को भी एक आदिम पुनरावर्ती कार्य के रूप में मानते हुए, और यह कि आदिम पुनरावर्ती कार्यों की संरचना आदिम पुनरावर्ती है, कोई यह देखना शुरू कर सकता है कि एक आदिम पुनरावर्ती कार्य कितनी तेजी से बढ़ सकता है। और कोई भी फ़ंक्शन जिसे ट्यूरिंग मशीन द्वारा एक आदिम पुनरावर्ती फ़ंक्शन द्वारा सीमित समय में गणना की जा सकती है, वह स्वयं आदिम पुनरावर्ती है। इसलिए पूर्ण μ-रिकर्सन के लिए एक व्यावहारिक उपयोग की कल्पना करना मुश्किल है जहां आदिम रिकर्सन काम नहीं करेगा, खासकर जब से पूर्व को बाद वाले द्वारा अत्यधिक लंबे समय तक चलने के लिए अनुकरण किया जा सकता है।

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

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

एक गैर-पूर्णांक संस्करण पर भी विचार क्यों करें?
एक गैर-पूर्णांक या ट्रांसफ़िनिट संस्करण पर भी विचार क्यों करें? यह प्रश्न इसलिए उठाया गया है क्योंकि सभी व्यावहारिक उदाहरणों में जहां हम यह साबित करना चाहते हैं कि कोई प्रोग्राम समाप्त हो जाता है, हम यह भी साबित करना चाहते हैं कि यह उचित समय में समाप्त हो जाता है। कम से कम दो संभावनाएँ हैं:


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

यह भी देखें

 * घुमाव के दौरान
 * लूप अपरिवर्तनीय
 * ट्रांसफिनिट इंडक्शन
 * अवरोही श्रृंखला स्थिति
 * बड़ा गणनीय क्रमसूचक
 * शुद्धता (कंप्यूटर विज्ञान)
 * Predicate_transformer_semantics#While_loop | जबकि लूप की सबसे कमजोर पूर्व शर्ते