हायलॉग
HiLog उच्च-क्रम सिंटैक्स वाला एक प्रोग्रामिंग तर्क है, जो मनमाने शब्दों को विधेय और कार्य स्थितियों में प्रकट होने की अनुमति देता है।[1] हालाँकि, HiLog का मॉडल सिद्धांत प्रथम-क्रम है। हालांकि सिंटैक्टिक रूप से HiLog सख्ती से पहले ऑर्डर लॉजिक का विस्तार करता है, HiLog को इस लॉजिक में एम्बेड किया जा सकता है।
HiLog को पहली बार 1989 में वर्णित किया गया था।[2] इसे बाद में कई तरह के तर्क की दिशा में बढ़ाया गया।[3] XSB सिस्टम HiLog सिंटैक्स को पार्स करता है, लेकिन XSB में HiLog का एकीकरण केवल आंशिक है। विशेष रूप से, HiLog XSB मॉड्यूल सिस्टम के साथ एकीकृत नहीं है। फ्लोरा-2 प्रणाली में हाईलॉग का पूर्ण कार्यान्वयन उपलब्ध है।
यह दिखाया गया है कि HiLog को काफी सरल परिवर्तन के माध्यम से प्रथम-क्रम तर्क में एम्बेड किया जा सकता है।[1]उदाहरण के लिए, p(X)(Y,Z(V)(W))
निम्न प्रथम-क्रम पद के रूप में एम्बेड हो जाता है: apply(p(X),Y,apply(apply(Z,V),W))
.[1]
नियम विनिमय प्रारूप#FLD| रूल इंटरचेंज फॉर्मेट (RIF) के लॉजिक-बेस्ड डायलेक्ट्स (RIF-FLD) के लिए फ्रेमवर्क काफी हद तक HiLog और एफ तर्क के विचारों पर आधारित है।[4]
उदाहरण
नीचे दिए गए सभी उदाहरणों में, पूंजीकृत प्रतीक चर को दर्शाते हैं और अल्पविराम तार्किक संयोजन को दर्शाता है, जैसा कि अधिकांश तर्क प्रोग्रामिंग भाषाओं में होता है। पहले और दूसरे उदाहरण दिखाते हैं कि चर विधेय स्थिति में प्रकट हो सकते हैं। विधेय जटिल शब्द भी हो सकते हैं, जैसे closure(P)
या maplist(F)
नीचे। तीसरा उदाहरण दिखाता है कि चर भी परमाणु सूत्रों के स्थान पर प्रकट हो सकते हैं, जबकि चौथा उदाहरण फ़ंक्शन प्रतीकों के स्थान पर चर के उपयोग को दिखाता है। पहला उदाहरण एक सामान्य सकर्मक क्लोजर ऑपरेटर को परिभाषित करता है, जिसे एक मनमाने ढंग से द्विआधारी विधेय पर लागू किया जा सकता है। दूसरा उदाहरण भी ऐसा ही है। यह एक एलआईएसपी-जैसे मैपिंग ऑपरेटर को परिभाषित करता है, जो एक मनमाने ढंग से द्विआधारी विधेय पर लागू होता है। तीसरा उदाहरण दिखाता है कि प्रोलॉग मेटा-प्रेडिकेट call/1
HiLog में एक प्राकृतिक तरीके से और अतिरिक्त-तार्किक सुविधाओं के उपयोग के बिना व्यक्त किया जा सकता है। अंतिम उदाहरण एक विधेय को परिभाषित करता है जो टर्म (तर्क) के रूप में प्रतिनिधित्व किए गए मनमाना बाइनरी ट्री को पार करता है। प्रथम-क्रम की शर्तें।
closure(P)(X,Y) <- P(X,Y).
closure(P)(X,Y) <- P(X,Z), closure(P)(Z,Y).
maplist(F)([],[]).
maplist(F)([X|R],[Y|Z]) <- F(X,Y), maplist(F)(R,Z).
call(X) <- X.
traverse(X(L,R)) <- traverse(L), traverse(R).
संदर्भ
- ↑ 1.0 1.1 1.2 Chen, Weidong; Kifer, Michael; Warren, David S. (February 1993). "HiLog: A foundation for higher-order logic programming". Journal of Logic Programming. 15 (3): 187–230. doi:10.1016/0743-1066(93)90039-J.
- ↑ Chen, Weidong; Kifer, Michael; Warren, David S. (1989). "HiLog: a first order semantics for higher-order logic programming constructs". Logic programming: Proceedings of the North American conference, 1989. MIT Press. ISBN 0262620642. OCLC 1153667751.
- ↑ Chen, Weidong; Kifer, Michael (1995). "Sorted HiLog: sorts in higher-order logic data languages". In Gottlob, Georg; Vardi, Moshe Y. (eds.). Database theory—ICDT '95: 5th International Conference, Prague, Czech Republic, January 11–13, 1995: proceedings. Lecture notes in computer science. Vol. 893. Springer. pp. 252–265. doi:10.1007/3-540-58907-4_20. ISBN 9780387589077. OCLC 31740400.
- ↑ Kifer, Michael (2008). "Rule interchange format: the framework". In Calvanese, Diego; Lausen, Georg (eds.). Web reasoning and rule systems: second international conference, RR 2008, Karlsruhe, Germany, October 31–November 1, 2008: proceedings. Lecture notes in computer science. Vol. 5341. Springer. pp. 1–11. doi:10.1007/978-3-540-88737-9_1. ISBN 9783540887362. OCLC 262884460.
अग्रिम पठन
- Ross, Kenneth A. (January 1994). "On negation in HiLog". Journal of Logic Programming. 18 (1): 27–53. doi:10.1016/0743-1066(94)90040-X.
- Bruijn, Jos; Heymans, Stijn (January 2008). "On the relationship between description logic-based and F-logic-based ontologies". Fundamenta Informaticae. 82 (3): 213–236.