स्थिति गणना

स्थिति कैलकुलस एक तर्क औपचारिकता है जिसे गतिशील डोमेन के बारे में प्रतिनिधित्व और तर्क करने के लिए डिज़ाइन किया गया है। इसे पहली बार 1963 में जॉन मैक्कार्थी (कंप्यूटर वैज्ञानिक) द्वारा पेश किया गया था। इस आलेख में प्रस्तुत स्थितिजन्य कैलकुलस का मुख्य संस्करण 1991 में रे रेइटर द्वारा प्रस्तुत किए गए संस्करण पर आधारित है। इसके बाद मैक्कार्थी के 1986 संस्करण और एक तर्क प्रोग्रामिंग फॉर्मूलेशन के बारे में अनुभाग दिए गए हैं।

सिंहावलोकन
स्थिति कलन प्रथम-क्रम तर्क सूत्रों के एक सेट के रूप में बदलते परिदृश्यों का प्रतिनिधित्व करता है। कैलकुलस के मूल तत्व हैं:


 * संसार में जो कर्म किये जा सकते हैं
 * धाराप्रवाह (कृत्रिम बुद्धि) जो विश्व की स्थिति का वर्णन करती है
 * परिस्थितियाँ

एक डोमेन को कई सूत्रों द्वारा औपचारिक रूप दिया जाता है, अर्थात्:


 * क्रिया पूर्व शर्त स्वयंसिद्ध, प्रत्येक क्रिया के लिए एक
 * उत्तराधिकारी राज्य स्वयंसिद्ध, प्रत्येक धाराप्रवाह के लिए एक
 * विभिन्न स्थितियों में दुनिया का वर्णन करने वाले सिद्धांत
 * स्थिति गणना के मूलभूत सिद्धांत

एक साधारण रोबोट दुनिया को एक चालू उदाहरण के रूप में तैयार किया जाएगा। इस दुनिया में एक रोबोट और कई निर्जीव वस्तुएं हैं। दुनिया को एक ग्रिड के अनुसार व्यवस्थित किया गया है ताकि स्थानों को इसके अनुसार निर्दिष्ट किया जा सके $$(x,y)$$ समन्वय बिंदु. रोबोट के लिए दुनिया भर में घूमना और वस्तुओं को उठाना और छोड़ना संभव है। कुछ वस्तुएं रोबोट के उठाने के लिए बहुत भारी हो सकती हैं, या इतनी नाजुक हो सकती हैं कि गिराए जाने पर वे टूट जाएं। रोबोट अपने पास मौजूद किसी भी टूटी हुई वस्तु की मरम्मत करने की भी क्षमता रखता है।

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

कार्रवाई
क्रियाएँ एक प्रकार का डोमेन बनाती हैं। सॉर्ट एक्शन के वेरिएबल्स का उपयोग किया जा सकता है। क्रियाओं को परिमाणित किया जा सकता है। उदाहरण रोबोट की दुनिया में, संभावित कार्य शर्तें होंगी $$move(x,y)$$ रोबोट को एक नए स्थान पर ले जाने का मॉडल बनाना $$(x,y)$$, और $$pickup(o)$$ किसी वस्तु को उठाने वाले रोबोट का मॉडल बनाना $o$. एक विशेष विधेय $Poss$ का उपयोग यह इंगित करने के लिए किया जाता है कि कोई कार्रवाई कब निष्पादन योग्य है।

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


 * एक स्थिति क्रियाओं का एक सीमित क्रम है। अवधि। यह कोई राज्य नहीं है, यह कोई स्नैपशॉट नहीं है, यह एक इतिहास है।

किसी भी कार्य को करने से पहले की स्थिति को आम तौर पर दर्शाया जाता है $S_0$ और प्रारंभिक स्थिति को बुलाया। किसी क्रिया के निष्पादन से उत्पन्न नई स्थिति को फ़ंक्शन प्रतीक का उपयोग करके दर्शाया जाता है $do$ (कुछ अन्य सन्दर्भ इसका भी प्रयोग करें $result$). इस फ़ंक्शन प्रतीक में तर्क के रूप में एक स्थिति और एक क्रिया होती है, और परिणाम के रूप में एक स्थिति होती है, बाद वाली स्थिति वह स्थिति होती है जो दी गई स्थिति में दी गई कार्रवाई को करने के परिणामस्वरूप होती है।

तथ्य यह है कि परिस्थितियाँ क्रियाओं का क्रम हैं न कि अवस्थाएँ, यह कहते हुए एक स्वयंसिद्ध द्वारा लागू किया जाता है $$do(a,s)$$ के बराबर है $$do(a',s')$$ अगर और केवल अगर $$a=a'$$ और $$s=s'$$. इस स्थिति का कोई मतलब नहीं है यदि स्थितियाँ राज्य की हों, क्योंकि दो अलग-अलग राज्यों में निष्पादित दो अलग-अलग कार्रवाइयों का परिणाम एक ही स्थिति में हो सकता है।

उदाहरण रोबोट की दुनिया में, यदि रोबोट की पहली क्रिया स्थान पर जाना है $$(2,3)$$, पहली क्रिया है $$move(2,3)$$ और परिणामी स्थिति है $$do(move(2,3),S_{0})$$. यदि इसकी अगली क्रिया गेंद को उठाना है, तो परिणामी स्थिति यह होगी $$do(pickup(Ball),do(move(2,3),S_{0}))$$. स्थितियां जैसे शर्तें $$do(move(2,3),S_{0})$$ और $$do(pickup(Ball),do(move(2,3),S_{0}))$$ निष्पादित कार्यों के अनुक्रम को निरूपित करें, न कि निष्पादन के परिणामस्वरूप होने वाली स्थिति का विवरण।

धाराप्रवाह
ऐसे कथन जिनका सत्य मान बदल सकता है, उन्हें संबंधपरक प्रवाह, विधेय द्वारा प्रतिरूपित किया जाता है जो किसी स्थिति को अपने अंतिम तर्क के रूप में लेते हैं। कार्यात्मक प्रवाह भी संभव हैं, फ़ंक्शन जो किसी स्थिति को अपने अंतिम तर्क के रूप में लेते हैं और स्थिति-निर्भर मूल्य लौटाते हैं। फ़्लुएंट्स को दुनिया की संपत्ति माना जा सकता है'। उदाहरण में, धाराप्रवाह $$\textit{isCarrying}(o,s)$$ इसका उपयोग यह इंगित करने के लिए किया जा सकता है कि रोबोट किसी विशेष स्थिति में किसी विशेष वस्तु को ले जा रहा है। यदि रोबोट प्रारंभ में कुछ भी नहीं ले जाता है, $$\textit{isCarrying}(Ball,S_{0})$$ जबकि झूठ है $$\textit{isCarrying}(Ball,do(pickup(Ball),S_{0}))$$ क्या सच है। रोबोट के स्थान को एक कार्यात्मक धाराप्रवाह का उपयोग करके मॉडल किया जा सकता है $$location(s)$$ जो स्थान लौटाता है $$(x,y)$$ किसी विशेष स्थिति में रोबोट का।

सूत्र
एक गतिशील दुनिया का वर्णन तीन प्रकार के सूत्रों का उपयोग करके द्वितीय-क्रम_लॉजिक में एन्कोड किया गया है: कार्यों के बारे में सूत्र (पूर्व शर्त और प्रभाव), दुनिया की स्थिति के बारे में सूत्र, और मूलभूत सिद्धांत।

कार्रवाई पूर्वशर्तें
कुछ कार्रवाइयां किसी दी गई स्थिति में निष्पादन योग्य नहीं हो सकती हैं। उदाहरण के लिए, किसी वस्तु को तब तक नीचे रखना असंभव है जब तक कोई वास्तव में उसे उठा न रहा हो। कार्यों के निष्पादन पर प्रतिबंध प्रपत्र के शाब्दिक अर्थों द्वारा प्रतिरूपित होते हैं $$\textit{Poss}(a,s)$$, कहाँ $a$ एक क्रिया है, $s$ एक स्थिति, और $Poss$ क्रियाओं की निष्पादन क्षमता को दर्शाने वाला एक विशेष द्विआधारी विधेय है। उदाहरण में, यह स्थिति कि किसी वस्तु को गिराना केवल तभी संभव है जब कोई उसे ले जा रहा हो, इस प्रकार मॉडलिंग की गई है:



\textit{Poss}(drop(o),s)\leftrightarrow \textit{isCarrying}(o,s) $$ अधिक जटिल उदाहरण के रूप में, निम्नलिखित मॉडल बताते हैं कि रोबोट एक समय में केवल एक ही वस्तु ले जा सकता है, और कुछ वस्तुएँ रोबोट के उठाने के लिए बहुत भारी हैं (विधेय द्वारा दर्शाया गया है) $heavy$):



\textit{Poss}(pickup(o),s)\leftrightarrow(\forall z\ \neg \textit{isCarrying}(z,s))\wedge\neg heavy(o) $$

क्रिया प्रभाव
यह देखते हुए कि किसी स्थिति में कोई कार्रवाई संभव है, किसी को धाराप्रवाह पर उस कार्रवाई के प्रभाव को निर्दिष्ट करना होगा। यह प्रभाव स्वयंसिद्धों द्वारा किया जाता है। उदाहरण के लिए, तथ्य यह है कि किसी वस्तु को उठाने से रोबोट उसे ले जाता है, इसे इस प्रकार दर्शाया जा सकता है:



Poss(pickup(o),s)\rightarrow \textit{isCarrying}(o,do(pickup(o),s)) $$ सशर्त प्रभावों को निर्दिष्ट करना भी संभव है, जो ऐसे प्रभाव हैं जो वर्तमान स्थिति पर निर्भर करते हैं। निम्नलिखित मॉडल बताते हैं कि कुछ वस्तुएं नाजुक हैं (विधेय द्वारा दर्शाया गया है $fragile$) और उन्हें गिराने से वे टूट जाते हैं (धाराप्रवाह द्वारा इंगित)। $broken$):



Poss(drop(o),s)\wedge fragile(o)\rightarrow broken(o,do(drop(o),s)) $$ हालाँकि यह सूत्र क्रियाओं के प्रभाव का सही वर्णन करता है, लेकिन फ्रेम समस्या के कारण तर्क में क्रिया का सही वर्णन करने के लिए यह पर्याप्त नहीं है।

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



Poss(pickup(o),s)\wedge location(s)=(x,y)\rightarrow location(do(pickup(o),s))=(x,y) $$ फ़्रेम स्वयंसिद्धों को निर्दिष्ट करने की आवश्यकता को गतिशील दुनिया को स्वयंसिद्ध करने में एक समस्या के रूप में लंबे समय से पहचाना गया है, और इसे फ़्रेम समस्या के रूप में जाना जाता है। चूंकि आम तौर पर ऐसे सिद्धांतों की एक बहुत बड़ी संख्या होती है, इसलिए डिजाइनर के लिए एक आवश्यक फ्रेम स्वयंसिद्ध को छोड़ना, या दुनिया के विवरण में बदलाव करते समय सभी उपयुक्त सिद्धांतों को संशोधित करना भूल जाना बहुत आसान होता है।

उत्तरवर्ती राज्य स्वयंसिद्ध
उत्तराधिकारी राज्य स्वयंसिद्ध स्थिति कैलकुलस में फ़्रेम समस्या को हल करते हैं। इस समाधान के अनुसार, डिज़ाइनर को प्रभाव सिद्धांतों के रूप में उन सभी तरीकों की गणना करनी चाहिए जिनसे किसी विशेष धाराप्रवाह का मूल्य बदला जा सकता है। धाराप्रवाह के मूल्य को प्रभावित करने वाले प्रभाव स्वयंसिद्ध $$F(\overrightarrow{x},s)$$ इसे सामान्यीकृत रूप में सकारात्मक और नकारात्मक प्रभाव वाले स्वयंसिद्ध के रूप में लिखा जा सकता है:



Poss(a,s)\wedge\gamma_{F}^{+}(\overrightarrow{x},a,s)\rightarrow F(\overrightarrow{x},do(a,s)) $$

Poss(a,s)\wedge\gamma_{F}^{-}(\overrightarrow{x},a,s)\rightarrow\neg F(\overrightarrow{x},do(a,s)) $$ सूत्र $$\gamma_{F}^{+}$$ उन परिस्थितियों का वर्णन करता है जिनके तहत कार्रवाई की जाती है $a$ स्थिति में $s$ धाराप्रवाह बनाता है $F$उत्तराधिकारी स्थिति में सत्य हो जाता है $$do(a,s)$$. वैसे ही, $$\gamma_{F}^{-}$$ उन परिस्थितियों का वर्णन करता है जिनके तहत कार्रवाई की जाती है $a$ स्थिति में $s$ धाराप्रवाह बनाता है $F$उत्तराधिकारी स्थिति में असत्य।

यदि सिद्धांतों की यह जोड़ी धाराप्रवाह सभी तरीकों का वर्णन करती है $F$ मान बदल सकते हैं, उन्हें एकल स्वयंसिद्ध के रूप में फिर से लिखा जा सकता है:



Poss(a,s)\rightarrow\left[F(\overrightarrow{x},do(a,s))\leftrightarrow\gamma_{F}^{+}(\overrightarrow{x},a,s)\vee\left(F(\overrightarrow{x},s)\wedge\neg\gamma_{F}^{-}(\overrightarrow{x},a,s)\right)\right] $$ शब्दों में, यह सूत्र बताता है: यह देखते हुए कि कार्रवाई करना संभव है $a$ स्थिति में $s$, धाराप्रवाह $F$ परिणामी स्थिति में सत्य होगा $$do(a,s)$$ यदि और केवल यदि प्रदर्शन किया जा रहा है $a$ में $s$ इसे सच बना देगा, या यह स्थिति में सच है $s$ और प्रदर्शन कर रहे हैं $a$ में $s$ इसे झूठा नहीं बनाएंगे.

उदाहरण के तौर पर, धाराप्रवाह का मूल्य $broken$ ऊपर प्रस्तुत निम्नलिखित उत्तराधिकारी राज्य स्वयंसिद्ध द्वारा दिया गया है:



Poss(a,s) \rightarrow \left[ broken(o,do(a,s)) \leftrightarrow a=drop(o)\wedge fragile(o) \vee broken(o,s) \wedge a \neq repair(o) \right] $$

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



\forall z\,\neg \textit{isCarrying}(z,S_{0}) $$

location(S_{0})=(0,0)\, $$

\forall o\,\neg broken(o,S_{0}) $$

बुनियादी सिद्धांत
स्थिति गणना के मूलभूत सिद्धांत इस विचार को औपचारिक बनाते हैं कि परिस्थितियाँ इतिहास हैं $$do(a,s)=do(a',s') \iff a=a' \land s=s'$$. उनमें अन्य गुण भी शामिल हैं जैसे स्थितियों पर दूसरे क्रम का प्रेरण।

प्रतिगमन
प्रतिगमन स्थिति गणना में परिणाम साबित करने के लिए एक तंत्र है। यह स्थिति को समाहित करने वाले एक सूत्र को व्यक्त करने पर आधारित है $$do(a,s)$$ क्रिया युक्त एक सूत्र के संदर्भ में $a$ और स्थिति $s$, लेकिन स्थिति नहीं $$do(a,s)$$. इस प्रक्रिया को दोहराकर, कोई व्यक्ति केवल प्रारंभिक स्थिति वाले समकक्ष सूत्र के साथ समाप्त हो सकता है $S_0$. मूल सूत्र की तुलना में इस सूत्र से परिणाम सिद्ध करना संभवतः अधिक सरल है।

नग्न
GOLOG स्थिति कैलकुलस पर आधारित एक तर्क प्रोग्रामिंग भाषा है।

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

स्थिति कैलकुलस के मूल संस्करण में, धाराप्रवाहों का पुनरीक्षण नहीं किया जाता है। दूसरे शब्दों में, जो स्थितियाँ बदल सकती हैं उन्हें विधेय द्वारा दर्शाया जाता है न कि कार्यों द्वारा। दरअसल, मैक्कार्थी और हेस ने धाराप्रवाह को एक ऐसे कार्य के रूप में परिभाषित किया जो स्थिति पर निर्भर करता है, लेकिन फिर वे धाराप्रवाह का प्रतिनिधित्व करने के लिए हमेशा विधेय का उपयोग करते हुए आगे बढ़े। उदाहरण के लिए, यह तथ्य कि जगह-जगह बारिश हो रही है $x$ स्थिति में $s$ को शाब्दिक रूप से दर्शाया गया है $$raining(x,s)$$. मैक्कार्थी द्वारा सिचुएशन कैलकुलस के 1986 संस्करण में, कार्यात्मक प्रवाह का उपयोग किया जाता है। उदाहरण के लिए, किसी वस्तु की स्थिति $x$ स्थिति में $s$ के मान से दर्शाया जाता है $$location(x,s)$$, कहाँ $location$ एक फ़ंक्शन है. ऐसे कार्यों के बारे में कथन समानता का उपयोग करके दिए जा सकते हैं: $$location(x,s)=location(x,s')$$ इसका मतलब है कि वस्तु का स्थान $x$ दोनों स्थितियों में समान है $s$ और $$s'$$.

क्रियाओं का निष्पादन फ़ंक्शन द्वारा दर्शाया जाता है $result$: कार्रवाई का निष्पादन $a$ स्थिति में $s$ स्थिति है $$\textit{result}(a,s)$$. क्रियाओं के प्रभाव को स्थिति से संबंधित सूत्र द्वारा व्यक्त किया जाता है $s$ और स्थितियों में धाराप्रवाह $$\textit{result}(a,s)$$. उदाहरण के लिए, दरवाज़ा खोलने की क्रिया के परिणामस्वरूप दरवाज़ा बंद न होने पर भी खुला रहता है, इसे निम्न द्वारा दर्शाया जाता है:


 * $$\neg locked(door,s) \rightarrow open(door, \textit{result}(opens,s))$$

विधेय $locked$ और $open$ एक दरवाजे के क्रमशः बंद और खुले होने की स्थितियों का प्रतिनिधित्व करता है। चूँकि ये स्थितियाँ भिन्न-भिन्न हो सकती हैं, इसलिए इन्हें स्थिति तर्क के साथ विधेय द्वारा दर्शाया जाता है। सूत्र कहता है कि यदि किसी स्थिति में दरवाज़ा बंद नहीं है, तो खोलने की क्रिया निष्पादित करने के बाद दरवाज़ा खुला है, इस क्रिया को स्थिरांक द्वारा दर्शाया जाता है $opens$.

ये सूत्र उन सभी चीज़ों को प्राप्त करने के लिए पर्याप्त नहीं हैं जिन्हें प्रशंसनीय माना जाता है। वास्तव में, विभिन्न स्थितियों में धाराप्रवाह केवल तभी संबंधित होते हैं यदि वे कार्यों की पूर्व शर्त और प्रभाव हों; यदि कोई धाराप्रवाह किसी क्रिया से प्रभावित नहीं होता है, तो यह निष्कर्ष निकालने का कोई तरीका नहीं है कि उसमें कोई परिवर्तन नहीं हुआ है। उदाहरण के लिए, उपरोक्त सूत्र का यह अर्थ नहीं है $$\neg locked(door,\textit{result}(opens,s))$$ से अनुसरण करता है $$\neg locked(door,s)$$, जिसकी कोई अपेक्षा कर सकता है (दरवाजा खोलकर उसे बंद नहीं किया जाता है)। जड़ता को बनाए रखने के लिए, फ़्रेम एक्सिओम्स नामक सूत्रों की आवश्यकता होती है। ये सूत्र क्रियाओं के सभी गैर-प्रभावों को निर्दिष्ट करते हैं:


 * $$\neg locked(door,s) \rightarrow \neg locked(door, \textit{result}(opens,s))$$

स्थिति कलन के मूल सूत्रीकरण में, प्रारंभिक स्थिति, जिसे बाद में निरूपित किया गया $S_0$, स्पष्ट रूप से पहचाना नहीं गया है। यदि स्थितियों को संसार का वर्णन मान लिया जाए तो प्रारंभिक स्थिति की आवश्यकता नहीं है। उदाहरण के लिए, उस परिदृश्य का प्रतिनिधित्व करने के लिए जिसमें दरवाज़ा बंद था लेकिन लॉक नहीं किया गया था और इसे खोलने की क्रिया को एक स्थिरांक लेकर औपचारिक रूप दिया गया है $s$ प्रारंभिक स्थिति और इसके बारे में बयान देने का मतलब है (उदाहरण के लिए, $$\neg locked(door,s)$$). परिवर्तन के बाद दरवाजा खुला है यह सूत्र द्वारा परिलक्षित होता है $$open(door,\textit{result}(opens,s))$$ शामिल किया जा रहा है. इसके बजाय प्रारंभिक स्थिति आवश्यक है, यदि आधुनिक स्थिति गणना की तरह, किसी स्थिति को कार्यों का इतिहास माना जाता है, क्योंकि प्रारंभिक स्थिति कार्यों के खाली अनुक्रम का प्रतिनिधित्व करती है। 1986 में मैक्कार्थी द्वारा प्रस्तुत स्थिति कैलकुलस का संस्करण कार्यात्मक प्रवाह के उपयोग के लिए मूल संस्करण से भिन्न है (उदाहरण के लिए, $$location(x,s)$$ की स्थिति का प्रतिनिधित्व करने वाला एक शब्द है $x$ स्थिति में $s$) और फ्रेम एक्सिओम्स को बदलने के लिए परिधि (तर्क)तर्क) का उपयोग करने के प्रयास के लिए।

एक तर्क कार्यक्रम के रूप में स्थिति गणना
स्थिति कलन को एक तर्क कार्यक्रम के रूप में लिखना भी संभव है (उदाहरण के लिए कोवाल्स्की 1979, एप्ट और बेज़ेम 1990, शानहन 1997):


 * $$\textit{Holds}(f, do(a, s)) \leftarrow \textit{Poss}(a, s) \wedge \textit{Initiates}(a, f, s)$$
 * $$\textit{Holds}(f, do(a, s)) \leftarrow \textit{Poss}(a, s) \wedge \textit{Holds}(f, s) \wedge \neg \textit{Terminates}(a, f, s)$$

यहाँ $Holds$ एक मेटा-विधेय और चर है $f$ धाराप्रवाह से अधिक होती है। विधेय $Poss$, $Initiates$ और $Terminates$ विधेय के अनुरूप है $Poss$, $$\gamma_{F}^{+}(\overrightarrow{x},a,s)$$, और $$\gamma_{F}^{-}(\overrightarrow{x},a,s)$$ क्रमश। बायां तीर ← समतुल्यता ↔ का आधा है। अन्य आधा हिस्सा कार्यक्रम के पूरा होने में निहित है, जिसमें नकार को विफलता के रूप में नकार के रूप में व्याख्या किया जाता है। प्रेरण अभिगृहीत भी अंतर्निहित हैं, और केवल प्रोग्राम गुणों को साबित करने के लिए आवश्यक हैं। एसएलडी संकल्प के रूप में पिछड़ा तर्क, जो तर्क कार्यक्रमों को निष्पादित करने के लिए उपयोग किया जाने वाला सामान्य तंत्र है, प्रतिगमन को अंतर्निहित रूप से लागू करता है।

यह भी देखें

 * फ़्रेम समस्या
 * घटना गणना

संदर्भ

 * J. McCarthy and P. Hayes (1969). Some philosophical problems from the standpoint of artificial intelligence. In B. Meltzer and D. Michie, editors, Machine Intelligence, 4:463–502. Edinburgh University Press, 1969.
 * R. Kowalski (1979). Logic for Problem Solving - Elsevier North Holland.
 * K.R. Apt and M. Bezem (1990). Acyclic Programs. In: 7th International Conference on Logic Programming. MIT Press. Jerusalem, Israel.
 * R. Reiter (1991). The frame problem in the situation calculus: a simple solution (sometimes) and a completeness result for goal regression. In Vladimir Lifshitz, editor, Artificial intelligence and mathematical theory of computation: papers in honour of John McCarthy, pages 359–380, San Diego, CA, USA. Academic Press Professional, Inc. 1991.
 * M. Shanahan (1997). Solving the Frame Problem: a Mathematical Investigation of the Common Sense Law of Inertia. MIT Press.
 * H. Levesque, F. Pirri, and R. Reiter (1998). Foundations for the situation calculus. Electronic Transactions on Artificial Intelligence, 2(3–4):159-178.
 * F. Pirri and R. Reiter (1999). Some contributions to the metatheory of the Situation Calculus. Journal of the ACM, 46(3):325–361.
 * R. Reiter (2001). Knowledge in Action: Logical Foundations for Specifying and Implementing Dynamical Systems. The MIT Press.