तर्क प्रोग्रामिंग का सिंटैक्स और शब्दार्थ
तर्क प्रोग्रामिंग एक प्रोग्रामिंग प्रतिमान है जिसमें डाटालॉग और प्रोलॉग सहित औपचारिक तर्क पर आधारित भाषाएं शामिल हैं। यह आलेख इन भाषाओं के विशुद्ध रूप से घोषणात्मक उपसमुच्चय के वाक्यविन्यास और शब्दार्थ का वर्णन करता है। भ्रामक रूप से, "लॉजिक प्रोग्रामिंग" नाम एक विशिष्ट प्रोग्रामिंग भाषा को भी संदर्भित करता है जो मोटे तौर पर प्रोलॉग के घोषणात्मक उपसमुच्चय से मेल खाती है। दुर्भाग्य से, इस लेख में इस शब्द का प्रयोग दोनों अर्थों में किया जाना चाहिए।
घोषणात्मक तर्क कार्यक्रम पूरी तरह से प्रपत्र के नियमों से युक्त होते हैं
H :- B1, ..., BN.
ऐसे प्रत्येक नियम को एक निहितार्थ के रूप में पढ़ा जा सकता है:
जिसका अर्थ है यदि प्रत्येक , ट्रूथ है । तो फिर लॉजिक प्रोग्राम उन तथ्यों के समूह की गणना करते हैं जो उनके नियमों द्वारा निहित हैं।
डेटालॉग, प्रोलॉग और संबंधित लैंग्वेजेज के कई कार्यान्वयन प्रोलॉग के कट ऑपरेटर या फोरेइग्नर फ़ंक्शन इंटरफ़ेस जैसी अतिरिक्त-तार्किक सुविधाओं जैसी प्रक्रियात्मक विशेषताएं जोड़ते हैं। ऐसे एक्सटेंशन का औपचारिक शब्दार्थ इस लेख के दायरे से बाहर है।
डेटालॉग
डेटालॉग व्यापक रूप से अध्ययन की जाने वाली सबसे सरल लॉजिक प्रोग्रामिंग भाषा है। डेटालॉग के शब्दार्थ की तीन प्रमुख परिभाषाएँ हैं, और वे सभी समकक्ष हैं। अन्य तर्क प्रोग्रामिंग भाषाओं के वाक्यविन्यास और शब्दार्थ डेटालॉग के विस्तार और सामान्यीकरण हैं।
सिंटेक्स
डेटालॉग प्रोग्राम में नियमों की एक सूची होती है।[1] यदि स्थिरांक और चर क्रमशः स्थिरांक और चर के दो गणनीय सेट हैं और संबंध विधेय चर का एक गणनीय सेट है, तो निम्नलिखित BNF ग्रामर डेटालॉग प्रोग्राम की संरचना को व्यक्त करता है:
<program> ::= <rule> <program> | ""
<rule> ::= <atom> ":-" <atom-list> "."
<atom> ::= <relation> "(" <term-list> ")"
<atom-list> ::= <atom> | <atom> "," <atom-list> | ""
<term> ::= <constant> | <variable>
<term-list> ::= <term> | <term> "," <term-list> | ""
परमाणुओं को शाब्दिक भी कहा जाता है। लिट्रल. के बाईं ओर परमाणु को नियम का :-
हेड कहा जाता है; दाहिनी ओर के परमाणु बॉडी हैं। प्रत्येक डेटालॉग प्रोग्राम को इस शर्त को पूरा करना होगा कि नियम के शीर्ष में दिखाई देने वाला प्रत्येक चर मुख्य भाग में भी दिखाई देता है।[2]
खाली निकाय वाले नियमों को तथ्य कहा जाता है। उदाहरण के लिए, निम्नलिखित नियम एक तथ्य है:
r(x) :- .
सिंटैक्टिक शुगर
तर्क प्रोग्रामिंग के कई कार्यान्वयन बिना तथ्यों को लिखने की अनुमति देने के लिए उपरोक्त व्याकरण का विस्तार करते हैं :-
, जैसे:
r(x).
कई लोग बिना कोष्ठक के 0-एरी संबंध लिखने की भी अनुमति देते हैं, जैसे:
p :- q.
ये केवल संक्षिप्त रूप (वाक्यात्मक शर्करा) हैं; उनका कार्यक्रम के शब्दार्थ पर कोई प्रभाव नहीं पड़ता है।
उदाहरण
निम्नलिखित प्रोग्राम संबंध की गणना करता है path
, जो संबंध का सकर्मक समापन है edge
.
edge(x, y).
edge(y, z).
path(A, B) :-
edge(A, B).
path(A, C) :-
path(A, B),
edge(B, C).
शब्दार्थ
डेटालॉग कार्यक्रमों के शब्दार्थ के लिए तीन व्यापक रूप से उपयोग किए जाने वाले दृष्टिकोण हैं: मॉडल-सैद्धांतिक, निश्चित बिंदु , और प्रमाण-सिद्धांत संबंधी है। ये तीन दृष्टिकोण समतुल्य साबित हो सकते हैं।[3]
एक परमाणु को ग्राउंड कहा जाता है यदि इसका कोई भी उपपद परिवर्तनशील न हो। सहज रूप से, प्रत्येक शब्दार्थ एक कार्यक्रम के अर्थ को उन सभी जमीनी परमाणुओं के सेट के रूप में परिभाषित करता है जिन्हें तथ्यों से शुरू करके कार्यक्रम के नियमों से निकाला जा सकता है।
मॉडल सैद्धांतिक
एक नियम को ग्राउंड कहा जाता है यदि उसके सभी परमाणु (सिर और शरीर) ग्राउंड हैं। यदि R1, R2 में सभी चरों के लिए स्थिरांकों के प्रतिस्थापन का परिणाम है तो एक जमीनी नियम R1 दूसरे नियम R2 का एक जमीनी उदाहरण है।
डेटालॉग प्रोग्राम का हेरब्रांड बेस सभी ग्राउंड परमाणुओं का सेट है जिसे प्रोग्राम में दिखाई देने वाले स्थिरांक के साथ बनाया जा सकता है। एक व्याख्या (डेटाबेस उदाहरण के रूप में भी जाना जाता है) हेरब्रांड आधार का एक सबसेट है। एक जमीनी परमाणु एक व्याख्या I में सत्य है यदि यह I का एक तत्व है। एक नियम एक व्याख्या I में सत्य है यदि उस नियम के प्रत्येक जमीनी उदाहरण के लिए, यदि शरीर में सभी खंड I में सत्य हैं, तो का प्रमुख नियम I में भी सत्य है।
डेटालॉग प्रोग्राम P का एक मॉडल, P की एक व्याख्या I है जिसमें P के सभी जमीनी तथ्य शामिल हैं, और I में P के सभी नियमों को सत्य बनाता है। मॉडल-सैद्धांतिक शब्दार्थ बताता है कि डेटालॉग प्रोग्राम का अर्थ इसका न्यूनतम मॉडल है।[4]
उदाहरण के लिए, यह प्रोग्राम:
edge(x, y).
edge(y, z).
path(A, B) :-
edge(A, B).
path(A, C) :-
path(A, B),
edge(B, C).
यह हेरब्रांड यूनिवर्स है: x
, y
, z
और यह हेरब्रांड आधार है: edge(x, x)
, edge(x, y)
, ..., edge(z, z)
, path(x, x)
, ..., path(z, z)
और यह न्यूनतम हर्ब्रांड मॉडल है: edge(x, y)
, edge(y, z)
, path(x, y)
, path(y, z)
, path(x, z)
निश्चित-बिंदु
मान लीजिए I डेटालॉग प्रोग्राम P की व्याख्याओं का सेट है, यानी, I = P(H), जहां H, P का हेरब्रांड आधार है और 'P' पॉवरसेट ऑपरेटर है। P के लिए तत्काल परिणाम ऑपरेटर I से I तक निम्नलिखित मानचित्र T है: P में प्रत्येक नियम के प्रत्येक ग्राउंड इंस्टेंस के लिए, यदि बॉडी में प्रत्येक क्लॉज इनपुट व्याख्या में है, तो ग्राउंड इंस्टेंस के प्रमुख को आउटपुट व्याख्या में है। यह मानचित्र T, पर उपसमुच्चय समावेशन द्वारा दिए गए आंशिक क्रम के संबंध में मोनोटोनिक फलन है नैस्टर-टार्स्की प्रमेय के अनुसार, इस मानचित्र में न्यूनतम निश्चित बिंदु है; क्लेन निश्चित-बिंदु प्रमेय द्वारा निश्चित बिंदु श्रृंखला का सर्वोच्च है . M का सबसे कम निश्चित बिंदु कार्यक्रम के न्यूनतम हेरब्रांड मॉडल के साथ मेल खाता है।[5]
फिक्सप्वाइंट सिमेंटिक्स न्यूनतम हेरब्रांड मॉडल की गणना के लिए एक एल्गोरिदम का सुझाव देता है: प्रोग्राम में जमीनी तथ्यों के सेट से शुरू करें, फिर फिक्सपॉइंट तक पहुंचने तक नियमों के परिणामों को बार-बार जोड़ें। इस एल्गोरिदम को अनुभवहीन मूल्यांकन कहा जाता है।
प्रमाण-सैद्धांतिक
एक प्रोग्राम P, को देखते हुए, ग्राउंड एटम A का एक प्रमाण वृक्ष है जिसकी जड़ को A द्वारा लेबल किया गया है, पत्तियों को P में तथ्यों के प्रमुखों से ग्राउंड परमाणुओं द्वारा लेबल किया गया है, और बच्चों के साथ शाखाएं हैं। को जमीनी परमाणु G द्वारा लेबल किया गया है जैसे कि एक जमीनी उदाहरण मौजूद है
G :- A1, …, An.
P में एक नियम का प्रमाण-सैद्धांतिक शब्दार्थ डेटालॉग प्रोग्राम के अर्थ को ग्राउंड परमाणुओं के सेट के रूप में परिभाषित करता है जिन्हें ऐसे पेड़ों से परिभाषित किया जा सकता है। यह सेट न्यूनतम हेरब्रांड मॉडल से मेल खाता है।[6]
किसी को यह जानने में रुचि हो सकती है कि डेटालॉग प्रोग्राम के न्यूनतम हर्ब्रांड मॉडल में एक विशेष ग्राउंड परमाणु दिखाई देता है या नहीं, शायद बाकी मॉडल के बारे में ज्यादा परवाह किए बिना। ऊपर वर्णित प्रूफ ट्री की ऊपर से नीचे की रीडिंग ऐसे प्रश्नों के परिणामों की गणना के लिए एक एल्गोरिदम का सुझाव देती है, ऐसी रीडिंग SLD रिज़ॉल्यूशन एल्गोरिदम को सूचित करती है, जो प्रोलॉग के मूल्यांकन का आधार बनती है।
अन्य दृष्टिकोण
डेटालॉग के शब्दार्थ का अध्ययन अधिक सामान्य सेमीरिंग्स पर फिक्सप्वाइंट के संदर्भ में भी किया गया है।[7]
तर्क प्रोग्रामिंग
जबकि लॉजिक प्रोग्रामिंग नाम का उपयोग डेटालॉग और प्रोलॉग सहित प्रोग्रामिंग भाषाओं के संपूर्ण प्रतिमान को संदर्भित करने के लिए किया जाता है, औपचारिक शब्दार्थ पर चर्चा करते समय, यह आम तौर पर फ़ंक्शन प्रतीकों के साथ डेटालॉग के विस्तार को संदर्भित करता है। लॉजिक प्रोग्राम को हॉर्न क्लॉज प्रोग्राम भी कहा जाता है। इस आलेख में चर्चा की गई तर्क प्रोग्रामिंग प्रोलॉग के शुद्ध या वर्णनात्मक उपसमुच्चय से निकटता से संबंधित है।
सिंटेक्स
लॉजिक प्रोग्रामिंग का सिंटैक्स फ़ंक्शन प्रतीकों के साथ डेटालॉग के सिंटैक्स का विस्तार करता है। लॉजिक प्रोग्रामिंग सीमा प्रतिबंध को हटा देती है, जिससे वेरिएबल्स को नियमों के प्रमुखों में प्रदर्शित होने की अनुमति मिलती है जो उनके शरीर में प्रकट नहीं होते हैं।[8]
शब्दार्थ
फ़ंक्शन प्रतीकों की उपस्थिति के कारण, तर्क कार्यक्रमों के हेरब्रांड मॉडल अनंत हो सकते हैं। हालाँकि, एक तर्क कार्यक्रम के शब्दार्थ को अभी भी इसके न्यूनतम हेरब्रांड मॉडल के रूप में परिभाषित किया गया है। संबंधित रूप से, तत्काल परिणाम ऑपरेटर का फिक्सपॉइंट चरणों की एक सीमित संख्या (या एक सीमित सेट) में परिवर्तित नहीं हो सकता है। हालाँकि, न्यूनतम हेरब्रांड मॉडल में किसी भी जमीनी परमाणु में एक सीमित प्रूफ पेड़ होगा। यही कारण है कि प्रोलॉग का मूल्यांकन ऊपर से नीचे किया जाता है।[8] डेटालॉग की तरह ही, तीन शब्दार्थों को समतुल्य सिद्ध किया जा सकता है।
निषेध
लॉजिक प्रोग्रामिंग में वांछनीय गुण है जिससे लॉजिक प्रोग्राम के शब्दार्थ की सभी तीन प्रमुख परिभाषाएँ सहमत हैं। इसके विपरीत, तर्क कार्यक्रमों के शब्दार्थ के लिए निषेध के साथ कई परस्पर विरोधी प्रस्ताव हैं। असहमति का स्रोत यह है कि तर्क कार्यक्रमों में एक अद्वितीय न्यूनतम हेरब्रांड मॉडल होता है, लेकिन सामान्य तौर पर, तर्क प्रोग्रामिंग (या यहां तक कि डेटालॉग) कार्यक्रमों में निषेध नहीं होता है।
सिंटेक्स
नेगेटिव नहीं है, और किसी नियम के बॉडी में किसी भी एटम के सामने प्रकट हो सकता है।
<atom-list> ::= <atom> | "not" <atom> | <atom> "," <atom-list> | ""
शब्दार्थ
स्तरीकृत निषेध
निषेध के साथ एक तर्क कार्यक्रम को तब स्तरीकृत किया जाता है जब प्रत्येक संबंध को कुछ स्तर पर निर्दिष्ट करना संभव होता है, जैसे कि यदि कोई संबंध R संबंध S के शरीर में नकारा हुआ प्रतीत होता है, तो R, S की तुलना में निचले स्तर में है।[9] डेटालॉग के मॉडल-सैद्धांतिक और निश्चित-बिंदु शब्दार्थ को स्तरीकृत निषेध को संभालने के लिए बढ़ाया जा सकता है, और ऐसे विस्तारों को समकक्ष साबित किया जा सकता है।
डेटालॉग के कई कार्यान्वयन निश्चित बिंदु शब्दार्थ से प्रेरित बॉटम-अप मूल्यांकन मॉडल का उपयोग करते हैं। चूँकि यह शब्दार्थ स्तरीकृत निषेध को संभाल सकता है, डेटालॉग के कई कार्यान्वयन स्तरीकृत निषेध को लागू करते हैं।
जबकि स्तरीकृत निषेध डेटालॉग का एक सामान्य विस्तार है, ऐसे उचित कार्यक्रम हैं जिन्हें स्तरीकृत नहीं किया जा सकता है। निम्नलिखित कार्यक्रम दो-खिलाड़ियों के खेल का वर्णन करता है जहां एक खिलाड़ी जीतता है यदि उनके प्रतिद्वंद्वी के पास कोई चाल नहीं है:[10]
move(a, b).
win(X) :- move(X, Y), not win(Y).
यह कार्यक्रम स्तरीकृत नहीं है, लेकिन यह सोचना उचित लगता है a
कि गेम जीतना चाहिए।
समापन शब्दार्थ
This section is empty. You can help by adding to it. (March 2023) |
उत्तम मॉडल शब्दार्थ
This section is empty. You can help by adding to it. (March 2023) |
स्थिर मॉडल शब्दार्थ
स्थिर मॉडल शब्दार्थ किसी प्रोग्राम के कुछ हर्ब्रांड मॉडल को स्थिर कहने के लिए एक शर्त को परिभाषित करता है। सहज रूप से, स्थिर मॉडल "विश्वासों के संभावित सेट हैं जो एक तर्कसंगत एजेंट धारण कर सकते हैं, जिसे परिसर के रूप में दिया गया है।[11]
नकार वाले एक प्रोग्राम में कई स्थिर मॉडल या कोई स्थिर मॉडल नहीं हो सकते हैं। उदाहरण के लिए, प्रोग्राम
p :- not q.
q :- not p.
इसके दो स्थिर मॉडल हैं , . एक-नियम कार्यक्रम
p :- not p.
कोई स्थिर मॉडल नहीं है।
प्रत्येक स्थिर मॉडल एक न्यूनतम हेरब्रांड मॉडल है। बिना किसी निषेध के डेटालॉग प्रोग्राम में एक स्थिर मॉडल होता है, जो बिल्कुल इसका न्यूनतम हेरब्रांड मॉडल है। स्थिर मॉडल शब्दार्थ एक तर्क कार्यक्रम के अर्थ को उसके स्थिर मॉडल होने से नकारते हुए परिभाषित करता है, यदि वास्तव में कोई एक है। हालाँकि, किसी प्रोग्राम के सभी (या कम से कम, कई) स्थिर मॉडलों की जांच करना उपयोगी हो सकता है; यह आंसर सेट प्रोग्रामिंग का लक्ष्य है।
अच्छी तरह से स्थापित शब्दार्थ
This section is empty. You can help by adding to it. (March 2023) |
आगे विस्तार
डेटालॉग के कई अन्य विस्तार प्रस्तावित और अध्ययन किए गए हैं, जिनमें पूर्णांक स्थिरांक और फलनों के (डेटालॉग सहित)ℤ),[12][13] नियमों के निकायों में असमानता बाधाएं और समग्र कार्यों के समर्थन वाले वेरिएंट शामिल हैं।
कॉन्सट्रेंट लॉजिक प्रोग्रामिंग वास्तविक या पूर्णांक जैसे डोमेन पर बाधाओं को नियमों के मुख्य भाग में प्रदर्शित करने की अनुमति देती है।
यह भी देखें
- हरब्रांड संरचना
- लॉजिक प्रोग्रामिंग
- असफलता के रूप में नकार
- प्रोलॉग सिंटैक्स और शब्दार्थ
संदर्भ
टिप्पणियाँ
- ↑ Ceri, Gottlob & Tanca 1989, p. 146.
- ↑ Eisner, Jason; Filardo, Nathaniel W. (2011). de Moor, Oege; Gottlob, Georg; Furche, Tim; Sellers, Andrew (eds.). "Dyna: Extending Datalog for Modern AI". Datalog Reloaded. Lecture Notes in Computer Science (in English). Berlin, Heidelberg: Springer. 6702: 181–220. doi:10.1007/978-3-642-24206-9_11. ISBN 978-3-642-24206-9.
- ↑ van Emden, M. H.; Kowalski, R. A. (1976-10-01). "एक प्रोग्रामिंग भाषा के रूप में विधेय तर्क का शब्दार्थ". Journal of the ACM. 23 (4): 733–742. doi:10.1145/321978.321991. ISSN 0004-5411. S2CID 11048276.
- ↑ Ceri, Gottlob & Tanca 1989, p. 149.
- ↑ Ceri, Gottlob & Tanca 1989, p. 150.
- ↑ Abiteboul, Serge (1996). डेटाबेस की नींव. Addison-Wesley. ISBN 0-201-53771-0. OCLC 247979782.
- ↑ Khamis, Mahmoud Abo; Ngo, Hung Q.; Pichler, Reinhard; Suciu, Dan; Wang, Yisu Remy (2023-02-01). "डेटालॉग का अभिसरण (पूर्व) सेमीरिंग्स पर". arXiv:2105.14435 [cs.DB].
- ↑ 8.0 8.1 Abiteboul, p. 299.
- ↑ Halevy, Alon Y.; Mumick, Inderpal Singh; Sagiv, Yehoshua; Shmueli, Oded (2001-09-01). "डेटालॉग एक्सटेंशन में स्थैतिक विश्लेषण". Journal of the ACM. 48 (5): 971–1012. doi:10.1145/502102.502104. ISSN 0004-5411. S2CID 18868009.
- ↑ Leone, N; Rullo, P (1992-01-01). "डेटालॉग क्वेरीज़ के सुस्थापित शब्दार्थ की सुरक्षित गणना". Information Systems (in English). 17 (1): 17–31. doi:10.1016/0306-4379(92)90003-6. ISSN 0306-4379.
- ↑ Lifschitz, Michael Gelfond and Vladimir (1988). "तर्क प्रोग्रामिंग के लिए स्थिर मॉडल शब्दार्थ".
{{cite journal}}
: Cite journal requires|journal=
(help) - ↑ Kaminski, Mark; Grau, Bernardo Cuenca; Kostylev, Egor V.; Motik, Boris; Horrocks, Ian (2017-11-12). "लिमिट डेटालॉग प्रोग्राम का उपयोग करके घोषणात्मक डेटा विश्लेषण की नींव". arXiv:1705.06927 [cs.AI].
- ↑ Grau, Bernardo Cuenca; Horrocks, Ian; Kaminski, Mark; Kostylev, Egor V.; Motik, Boris (2020-02-25). "Limit Datalog: A Declarative Query Language for Data Analysis". ACM SIGMOD Record. 48 (4): 6–17. doi:10.1145/3385658.3385660. ISSN 0163-5808. S2CID 211520719.
स्रोत
- Ceri, S.; Gottlob, G.; Tanca, L. (March 1989). "डेटालॉग के बारे में आप हमेशा क्या जानना चाहते थे (और कभी पूछने की हिम्मत नहीं की)" (PDF). IEEE Transactions on Knowledge and Data Engineering. 1 (1): 146–166. CiteSeerX 10.1.1.210.1118. doi:10.1109/69.43410. ISSN 1041-4347.
श्रेणी:प्रोग्रामिंग भाषा सिंटैक्स श्रेणी:तर्क प्रोग्रामिंग