घटना गणना

इवेंट कैलकुलस घटनाओं और उनके प्रभावों के बारे में प्रतिनिधित्व और तर्क करने के लिए एक तार्किक भाषा है जिसे पहली बार 1986 में रॉबर्ट कोवाल्स्की और मारेक सर्गोट द्वारा प्रस्तुत किया गया था। इसे 1990 के दशक में मुर्राय षनहं और रॉब मिलर (कंप्यूटर वैज्ञानिक) द्वारा विस्तारित किया गया था। परिवर्तन के बारे में तर्क के लिए अन्य भाषाओं के समान, इवेंट कैलकुलस धाराप्रवाह (कृत्रिम बुद्धिमत्ता) पर एक्शन (कृत्रिम बुद्धिमत्ता) के प्रभावों का प्रतिनिधित्व करता है। हालाँकि, घटना (कंप्यूटिंग)  सिस्टम के बाहर भी हो सकता है। इवेंट कैलकुलस में, कोई कुछ निश्चित समय बिंदुओं पर प्रवाह के मूल्य, दिए गए समय बिंदुओं पर होने वाली घटनाओं और उनके प्रभावों को निर्दिष्ट कर सकता है।

प्रवाह और घटनाएँ
इवेंट कैलकुलस में, फ़्लुएंट्स रीफ़िकेशन (ज्ञान प्रतिनिधित्व) हैं। इसका मतलब यह है कि उन्हें विधेय (गणित) के माध्यम से नहीं बल्कि फ़ंक्शन (गणित) के माध्यम से औपचारिक रूप दिया जाता है। एक अलग विधेय $HoldsAt$ का उपयोग यह बताने के लिए किया जाता है कि कौन से प्रवाह किसी निश्चित समय बिंदु पर मौजूद हैं। उदाहरण के लिए, $$\mathit{HoldsAt}(on(box,table),t)$$ इसका मतलब है कि बॉक्स समय पर टेबल पर है $t$; इस सूत्र में, $HoldsAt$ एक विधेय समय है $on$ एक फ़ंक्शन है.

घटनाओं को शब्दों के रूप में भी दर्शाया जाता है। घटनाओं का प्रभाव विधेय का उपयोग करके दिया जाता है $Initiates$ और $Terminates$. विशेष रूप से, $$\mathit{Initiates}(e,f,t)$$ मतलब कि, यदि घटना को शब्द द्वारा दर्शाया गया है $e$ समय पर निष्पादित किया जाता है $t$, फिर धाराप्रवाह $f$ बाद में सच हो जाएगा $t$. वह $Terminates$ विधेय का एक समान अर्थ होता है, केवल अंतर के साथ वह रहने से $f$ बाद में गलत होगा $t$.

डोमेन-स्वतंत्र स्वयंसिद्ध
क्रियाओं का प्रतिनिधित्व करने के लिए अन्य भाषाओं की तरह, ईवेंट कैलकुलस एक मनमानी कार्रवाई के बाद प्रत्येक धाराप्रवाह के मूल्य को बताने वाले सूत्रों के माध्यम से धाराप्रवाह के सही विकास को औपचारिक बनाता है। इवेंट कैलकुलस फ्रेम समस्या को इस तरह से हल करता है जो स्थिति कैलकुलस के उत्तराधिकारी राज्य स्वयंसिद्धों के समान है: समय पर एक धाराप्रवाह सत्य होता है $t$ यदि और केवल यदि इसे अतीत में सत्य बनाया गया हो और इस बीच झूठा नहीं बनाया गया हो।
 * $$\mathit{HoldsAt}(f,t) \leftarrow

[\mathit{Happens}(e,t_1) \wedge \mathit{Initiates}(e,f,t_1) \wedge (t_1<t) \wedge \neg \mathit{Clipped}(t_1,f,t)]$$ इस सूत्र का अर्थ है कि धाराप्रवाह शब्द द्वारा दर्शाया गया है $f$ समय पर सत्य है $t$ अगर:

एक समान सूत्र का उपयोग विपरीत मामले को औपचारिक बनाने के लिए किया जाता है जिसमें एक निश्चित समय पर धाराप्रवाह गलत होता है। किसी घटना के प्रभाव होने से पहले धाराप्रवाह को सही ढंग से औपचारिक बनाने के लिए अन्य सूत्रों की भी आवश्यकता होती है। ये सूत्र उपरोक्त के समान हैं, लेकिन $$\mathit{Happens}(e,t_1) \wedge \mathit{Initiates}(e,f,t_1)$$ द्वारा प्रतिस्थापित किया जाता है $$\mathit{HoldsAt}(f,t_1)$$. $e$ विधेय, जिसमें कहा गया है कि एक अंतराल के दौरान एक धाराप्रवाह को झूठा बना दिया गया है, इसे स्वयंसिद्ध किया जा सकता है, या बस शॉर्टहैंड के रूप में लिया जा सकता है, इस प्रकार:
 * 1) एक घटना $f$ हो गया: $$\mathit{Happens}(e,t_1)$$;
 * 2) यह अतीत में हुआ था: $$\mathit{t}_1<t$$;
 * 3) इस घटना में धाराप्रवाह है $Clipped}ed$ प्रभाव के रूप में: $$\mathit{Initiates}(e,f,t_1)$$;
 * 4) इस बीच धाराप्रवाह को गलत नहीं बनाया गया है: $$\mathit{Clipped}(t_1,f,t)$$


 * $$\mathit{Clipped}(t_1,f,t_2) \equiv

\exists e,t [\mathit{Happens}(e,t) \wedge (t_1 \leq t < t_2) \wedge \mathit{Terminates}(e,f,t)]$$

डोमेन-निर्भर स्वयंसिद्ध
उपरोक्त सिद्धांत विधेय के मूल्य से संबंधित हैं $HoldsAt$, $Initiates$ और $Terminates$, लेकिन यह निर्दिष्ट न करें कि कौन से धाराप्रवाह सत्य माने जाते हैं और कौन सी घटनाएँ वास्तव में धाराप्रवाह को सत्य या गलत बनाती हैं। यह डोमेन-निर्भर स्वयंसिद्धों के एक सेट का उपयोग करके किया जाता है। प्रवाह के ज्ञात मानों को सरल शाब्दिक रूप में बताया गया है $$\mathit{HoldsAt}(f,t)$$. घटनाओं के प्रभावों को उनकी पूर्व शर्तों के साथ घटनाओं के प्रभावों से संबंधित सूत्रों द्वारा बताया जाता है। उदाहरण के लिए, यदि घटना $open$ धाराप्रवाह बनाता है $isopen$ सत्य है, परंतु केवल यदि $haskey$ वर्तमान में सत्य है, घटना कैलकुलस में संबंधित सूत्र है:


 * $$\mathit{Initiates}(e,f,t) \equiv

[ e=open \wedge f=isopen \wedge \mathit{HoldsAt}(haskey, t)] \vee \cdots $$ इस तुल्यता की दाहिनी ओर की अभिव्यक्ति एक विच्छेद से बनी है: प्रत्येक घटना और धाराप्रवाह के लिए जिसे घटना द्वारा सच किया जा सकता है, वहां एक विच्छेद कहा गया है कि $e$ वास्तव में वह घटना है, वह $f$ वास्तव में वह धाराप्रवाह है, और यह कि घटना की पूर्व शर्त पूरी हो गई है।

उपरोक्त सूत्र सत्य मान निर्दिष्ट करता है $$\mathit{Initiates}(e,f,t)$$ हर संभव घटना और धाराप्रवाह के लिए। परिणामस्वरूप, सभी घटनाओं के सभी प्रभावों को एक सूत्र में संयोजित करना होगा। यह एक समस्या है, क्योंकि किसी नए ईवेंट को जोड़ने के लिए नए जोड़ने के बजाय मौजूदा फॉर्मूले को संशोधित करने की आवश्यकता होती है। इस समस्या को सूत्रों के एक सेट पर परिधि (तर्क) के अनुप्रयोग द्वारा हल किया जा सकता है, जिनमें से प्रत्येक एक घटना के एक प्रभाव को निर्दिष्ट करता है:


 * $$\mathit{Initiates}(open, isopen, t) \leftarrow \mathit{HoldsAt}(haskey, t)$$
 * $$\mathit{Initiates}(break, isopen, t) \leftarrow \mathit{HoldsAt}(hashammer, t)$$
 * $$\mathit{Initiates}(break, broken, t) \leftarrow \mathit{HoldsAt}(hashammer, t)$$

ये सूत्र उपरोक्त सूत्र की तुलना में सरल हैं, क्योंकि प्रत्येक घटना के प्रत्येक प्रभाव को अलग से निर्दिष्ट किया जा सकता है। कौन सी घटना बता रहा है एक सूत्र $e$ और धाराप्रवाह $f$ निर्माण $$\mathit{Initiates}(e,f,t)$$ ट्रू को छोटे सूत्रों के एक सेट से बदल दिया गया है, जिनमें से प्रत्येक एक धाराप्रवाह पर किसी घटना के प्रभाव को बताता है। हालाँकि, ये सूत्र उपरोक्त सूत्र के समतुल्य नहीं हैं। दरअसल, वे केवल इसके लिए पर्याप्त शर्तें निर्दिष्ट करते हैं $$\mathit{Initiates}(e,f,t)$$ सत्य होने के लिए, जिसे इस तथ्य से पूरा किया जाना चाहिए $Initiates$ अन्य सभी मामलों में गलत है। इस तथ्य को केवल विधेय को सीमित करके औपचारिक रूप दिया जा सकता है $Initiates$ उपरोक्त सूत्र में। यह ध्यान रखना महत्वपूर्ण है कि यह परिनियम केवल निर्दिष्ट सूत्रों पर ही किया जाता है $Initiates$ और डोमेन-स्वतंत्र स्वयंसिद्धों पर नहीं। विधेय $Terminates$ को उसी तरह निर्दिष्ट किया जा सकता है $Initiates$ है।

के लिए एक समान दृष्टिकोण अपनाया जा सकता है $Happens$ विधेय. इस विधेय का मूल्यांकन सूत्रों द्वारा लागू किया जा सकता है जो न केवल यह निर्दिष्ट करता है कि यह कब सत्य है और कब गलत है:


 * $$\mathit{Happens}(e,t) \equiv

(e=open \wedge t=0) \vee (e=exit \wedge t=1) \vee \cdots$$ परिधि इस विनिर्देश को सरल बना सकती है, क्योंकि केवल आवश्यक शर्तें ही निर्दिष्ट की जा सकती हैं:


 * $$\mathit{Happens}(open, 0)$$
 * $$\mathit{Happens}(exit, 1)$$

विधेय की परिधि करना $Happens$, यह विधेय उन सभी बिंदुओं पर गलत होगा जहां इसे स्पष्ट रूप से सत्य होने के लिए निर्दिष्ट नहीं किया गया है। यह परिच्छेद अन्य सूत्रों के परिच्छेद से अलग करना पड़ता है। दूसरे शब्दों में, यदि $F$ प्रकार के सूत्रों का समूह है $$\mathit{Initiates}(e,f,t) \leftarrow \cdots$$, $G$ सूत्रों का समूह है $$\mathit{Happens}(e, t)$$, और $H$ डोमेन स्वतंत्र स्वयंसिद्ध हैं, डोमेन का सही सूत्रीकरण है:


 * $$\mathit{Circ}(F; \mathit{Initiates}, \mathit{Terminates}) \wedge

Circ(G; Happens) \wedge H$$

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

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

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

इवेंट कैलकुलस के अन्य उल्लेखनीय विस्तारों में मार्कोव लॉजिक नेटवर्क-आधारित, संभावना, ज्ञानमीमांसा वेरिएंट और उनके संयोजन.

तर्क उपकरण
प्रोलॉग और इसके वेरिएंट के अलावा, इवेंट कैलकुलस का उपयोग करके तर्क करने के लिए कई अन्य उपकरण भी उपलब्ध हैं:
 * अपहरण घटना कैलकुलस प्लानर्स
 * असतत घटना कैलकुलस रीज़नर
 * इवेंट कैलकुलस उत्तर सेट प्रोग्रामिंग
 * रिएक्टिव इवेंट कैलकुलस
 * रन-टाइम इवेंट कैलकुलस (RTEC)

यह भी देखें

 * प्रथम-क्रम तर्क
 * फ़्रेम समस्या
 * स्थिति गणना

अग्रिम पठन

 * Brandano, S. (2001) "The Event Calculus Assessed," IEEE TIME Symposium: 7-12.
 * R. Kowalski and F. Sadri (1995) "Variants of the Event Calculus," ICLP: 67-81.
 * Mueller, Erik T. (2015). Commonsense Reasoning: An Event Calculus Based Approach (2nd Ed.). Waltham, MA: Morgan Kaufmann/Elsevier. ISBN 978-0128014165. (Guide to using the event calculus)
 * Shanahan, M. (1997) Solving the frame problem: A mathematical investigation of the common sense law of inertia. MIT Press.
 * Shanahan, M. (1999) "The Event Calculus Explained" Springer Verlag, LNAI (1600): 409-30.