प्रोग्राम सिंथेसिस: Difference between revisions
No edit summary |
|||
Line 7: | Line 7: | ||
तब से, विभिन्न अनुसंधान समुदायों ने कार्यक्रम संश्लेषण की समस्या पर विचार किया। उल्लेखनीय कार्यों में बुच्ची और लैंडवेबर द्वारा 1969 ऑटोमेटा-सैद्धांतिक दृष्टिकोण,<ref>{{cite journal| author=Richard Büchi, Lawrence Landweber| title=परिमित-राज्य रणनीतियों द्वारा अनुक्रमिक स्थितियों को हल करना| journal=Transactions of the American Mathematical Society|date=Apr 1969| volume=138| pages=295–311| doi=10.2307/1994916| url=http://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1087&context=cstech| jstor=1994916}}</ref> और मन्ना और वाल्डिंगर (सी। 1980) द्वारा कार्य सम्मिलित हैं। आधुनिक उच्च-स्तरीय प्रोग्रामिंग भाषाओं के विकास को कार्यक्रम संश्लेषण के एक रूप के रूप में भी समझा जा सकता है। | तब से, विभिन्न अनुसंधान समुदायों ने कार्यक्रम संश्लेषण की समस्या पर विचार किया। उल्लेखनीय कार्यों में बुच्ची और लैंडवेबर द्वारा 1969 ऑटोमेटा-सैद्धांतिक दृष्टिकोण,<ref>{{cite journal| author=Richard Büchi, Lawrence Landweber| title=परिमित-राज्य रणनीतियों द्वारा अनुक्रमिक स्थितियों को हल करना| journal=Transactions of the American Mathematical Society|date=Apr 1969| volume=138| pages=295–311| doi=10.2307/1994916| url=http://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1087&context=cstech| jstor=1994916}}</ref> और मन्ना और वाल्डिंगर (सी। 1980) द्वारा कार्य सम्मिलित हैं। आधुनिक उच्च-स्तरीय प्रोग्रामिंग भाषाओं के विकास को कार्यक्रम संश्लेषण के एक रूप के रूप में भी समझा जा सकता है। | ||
== 21वीं सदी के | == 21वीं सदी के घटनाक्रम == | ||
21 वीं सदी | 21 वीं सदी के प्रारंभ में [[औपचारिक सत्यापन]] समुदाय और संबंधित क्षेत्रों में कार्यक्रम संश्लेषण के विचार में व्यावहारिक रुचि में वृद्धि देखी गई है। अरमांडो सोलर-लेज़ामा ने दिखाया कि [[ बूलियन तर्क |बूलियन तर्क]] में कार्यक्रम संश्लेषण समस्याओं को एनकोड करना संभव है और [[बूलियन संतुष्टि समस्या]] के लिए एल्गोरिदम का उपयोग स्वचालित रूप से कार्यक्रम खोजने के लिए किया जाता है।<ref>{{cite thesis |last=Solar-Lezama |first=Armando |date=2008 |title=स्केचिंग द्वारा प्रोग्राम संश्लेषण|type=Ph.D. |publisher=University of California, Berkeley |url=https://people.csail.mit.edu/asolar/papers/thesis.pdf}}</ref> 2013 में, [[UPenn|यूपीएन]], यूसी बर्कले और [[MIT|एमआईटी]] के शोधकर्ताओं द्वारा कार्यक्रम संश्लेषण समस्याओं के लिए एक एकीकृत रूपरेखा प्रस्तावित की गई थी।<ref>{{cite conference |title =सिंटेक्स-निर्देशित संश्लेषण|last1 = Alur |first1 = Rajeev| last2 = al.| first2 = et| date = 2013| publisher = IEEE| book-title = Proceedings of Formal Methods in Computer-Aided Design| pages = 8}}</ref> 2014 के बाद से एक प्रतिस्पर्धी कार्यक्रम, सिंटैक्स-गाइडेड संश्लेषण प्रतियोगिता या एसयगस-कॉमपी में कार्यक्रम संश्लेषण के लिए विभिन्न एल्गोरिदम की तुलना करने वाली एक वार्षिक कार्यक्रम संश्लेषण प्रतियोगिता हुई है।<ref>[https://sygus.org/ SyGuS-Comp (Syntax-Guided Synthesis Competition)]</ref> फिर भी, उपलब्ध एल्गोरिदम केवल छोटे प्रोग्रामों को संश्लेषित करने में सक्षम हैं। | ||
== मन्ना और वाल्डिंगर की रूपरेखा == | == मन्ना और वाल्डिंगर की रूपरेखा == | ||
{| class="wikitable" style="float:right;" | {| class="wikitable" style="float:right;" | ||
|+ | |+ गैर-क्लॉज़ल रिज़ॉल्यूशन नियम (एकीकृत प्रतिस्थापन नहीं दिखाए गए) | ||
|- | |- | ||
! | ! एनआर !! अभिकथन !! लक्ष्य !! कार्यक्रम !! मूल | ||
|- | |- | ||
| 51 || <math>E[p]</math> || || || | | 51 || <math>E[p]</math> || || || | ||
Line 24: | Line 24: | ||
| 54 || || <math>H[p]</math> || t || | | 54 || || <math>H[p]</math> || t || | ||
|- | |- | ||
| 55 || <math>E[\text{true}] \lor F[\text{false}]</math>|| || || | | 55 || <math>E[\text{true}] \lor F[\text{false}]</math>|| || || संकल्प(51,52) | ||
|- | |- | ||
| 56 || || <math>\lnot F[\text{true}] \land G[\text{false}]</math> || s || | | 56 || || <math>\lnot F[\text{true}] \land G[\text{false}]</math> || s || संकल्प(52,53) | ||
|- | |- | ||
| 57 || || <math>\lnot F[\text{false}] \land G[\text{true}]</math> || s || | | 57 || || <math>\lnot F[\text{false}] \land G[\text{true}]</math> || s || संकल्प(53,52) | ||
|- | |- | ||
| 58 || || <math>G[\text{true}] \land H[\text{false}]</math> || p [[?:|?]] s [[?:|:]] t || | | 58 || || <math>G[\text{true}] \land H[\text{false}]</math> || p [[?:|?]] s [[?:|:]] t || संकल्प(53,54) | ||
|} | |} | ||
1980 में प्रकाशित | 1980 में प्रकाशित मन्ना और वाल्डिंगर का ढांचा,<ref>{{cite journal| author=Zohar Manna, Richard Waldinger| title=कार्यक्रम संश्लेषण के लिए एक निगमनात्मक दृष्टिकोण| journal=ACM Transactions on Programming Languages and Systems|date=Jan 1980| volume=2| pages=90–121| doi=10.1145/357084.357090| s2cid=14770735}}</ref><ref>{{cite report | url=https://apps.dtic.mil/dtic/tr/fulltext/u2/a065558.pdf| archive-url=https://web.archive.org/web/20210127052044/https://apps.dtic.mil/dtic/tr/fulltext/u2/a065558.pdf| url-status=live| archive-date=January 27, 2021<!---http://www.sri.com/sites/default/files/uploads/publications/pdf/725.pdf---> | author=Zohar Manna and Richard Waldinger | title=कार्यक्रम संश्लेषण के लिए एक निगमनात्मक दृष्टिकोण| institution=SRI International | type=Technical Note | number=177 | date=Dec 1978 }}</ref> उपयोगकर्ता द्वारा दिए गए पहले-क्रम विनिर्देश सूत्र से प्रारंभ होता है। उस सूत्र के लिए, एक प्रमाण का निर्माण किया जाता है, जिससे एक कार्यात्मक कार्यक्रम को एकीकृत प्रतिस्थापन से भी संश्लेषित किया जाता है। | ||
ढांचे को तालिका लेआउट में प्रस्तुत किया गया है, जिसमें कॉलम | ढांचे को तालिका लेआउट में प्रस्तुत किया गया है, जिसमें कॉलम सम्मिलित हैं: | ||
* संदर्भ उद्देश्यों के लिए एक पंक्ति संख्या ( | * संदर्भ उद्देश्यों के लिए एक पंक्ति संख्या ("एनआर")। | ||
* | * सूत्र जो पहले से ही स्थापित किए जा चुके हैं, जिनमें स्वयंसिद्ध और पूर्व शर्त सम्मिलित हैं, ("अभिकथन") | ||
* फॉर्मूले अभी भी | * फॉर्मूले अभी भी सिद्ध होने बाकी हैं, पोस्टकंडिशन (लक्ष्य),<ref group="note">The distinction "Assertions" / "Goals" is for convenience only; following the paradigm of [[proof by contradiction]], a Goal <math>F</math> is equivalent to an assertion <math> \lnot F</math>.</ref> सम्मिलित हैं | ||
* | * वैध आउटपुट वैल्यू ("प्रोग्राम") को दर्शाने वाली शर्तें<ref group="note">When <math>F</math> and <math>s</math> is the Goal formula and the Program term in a line, respectively, then in all cases where <math>F</math> holds, <math>s</math> is a valid output of the program to be synthesized. This [[invariant (computer science)|invariant]] is maintained by all proof rules. An Assertion formula usually is not associated with a Program term.</ref> | ||
* वर्तमान | * वर्तमान पंक्ति के लिए एक औचित्य ("उत्पत्ति") | ||
प्रारंभ में, पृष्ठभूमि ज्ञान, पूर्व-शर्तें और पश्च-शर्तें तालिका में दर्ज की जाती हैं। उसके बाद, उपयुक्त | प्रारंभ में, पृष्ठभूमि ज्ञान, पूर्व-शर्तें और पश्च-शर्तें तालिका में दर्ज की जाती हैं। उसके बाद, उपयुक्त प्रमाण नियम मैन्युअल रूप से लागू किए जाते हैं। ढांचे को मध्यवर्ती सूत्रों की मानव पठनीयता को बढ़ाने के लिए डिज़ाइन किया गया है: शास्त्रीय[[संकल्प (तर्क)|संकल्प]] के विपरीत, इसे [[क्लॉसल सामान्य रूप]] की आवश्यकता नहीं होती है, लेकिन मनमाना संरचना के सूत्रों के साथ तर्क करने की अनुमति देता है और किसी भी जंक्शनर्स ("[[गैर-खंड संकल्प]]") को सम्मिलित करता है। प्रमाण कब पूरा होता है <math>\it true</math> लक्ष्य स्तंभ में व्युत्पन्न किया गया है, या, समकक्ष रूप से, <math>\it false</math> अभिकथन कॉलम में। इस दृष्टिकोण से प्राप्त कार्यक्रम से प्रारंभ होने वाले विनिर्देश सूत्र को पूरा करने की गारंटी है; इस अर्थ में वे निर्माण द्वारा सही हैं।<ref>See Manna, Waldinger (1980), p.100 for correctness of the resolution rules.</ref> केवल एक न्यूनतावादी, अभी तक [[ट्यूरिंग-पूर्ण]],<ref>{{cite techreport |last1=Boyer |first1=Robert S. |last2=Moore |first2=J. Strother |title=शुद्ध लिस्प की ट्यूरिंग पूर्णता का एक यांत्रिक प्रमाण|number=37 |institution=Institute for Computing Science, University of Texas at Austin |date=May 1983 |url=http://www.cs.utexas.edu/users/boyer/ftp/ics-reports/cmp37.pdf |format=PDF |url-status=live |archive-date=22 September 2017 |archive-url=https://web.archive.org/web/20170922044624/http://www.cs.utexas.edu/users/boyer/ftp/ics-reports/cmp37.pdf |df=dmy-all }}</ref> [[विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग भाषा]], जिसमें सशर्त, पुनरावर्तन और अंकगणित और अन्य ऑपरेटर सम्मिलित हैं<ref group="note">Only the conditional operator ([[?:]]) is supported from the beginning. However, arbitrary new operators and relations can be added by providing their properties as axioms. In the toy example below, only the properties of <math>=</math> and <math>\leq</math> that are actually needed in the proof have been axiomatized, in line 1 to 3.</ref> समर्थित है। | ||
इस ढांचे के भीतर किए गए मामले के अध्ययन ने गणना करने के लिए एल्गोरिदम को संश्लेषित किया | इस ढांचे के भीतर किए गए मामले के अध्ययन ने गणना करने के लिए एल्गोरिदम को संश्लेषित किया उदाहरण के लिए [[विभाजन एल्गोरिथ्म|विभाजन]], [[शेष]],<ref>Manna, Waldinger (1980), p.108-111</ref> [[वर्गमूल]],<ref>{{cite journal | author=Zohar Manna and Richard Waldinger | title=एक द्विआधारी-खोज प्रतिमान की उत्पत्ति| journal=Science of Computer Programming | volume=9 | number=1 | pages=37–83 | date=Aug 1987 | doi=10.1016/0167-6423(87)90025-6 | doi-access=free }}</ref> [[एकीकरण (कंप्यूटर विज्ञान)|एकीकरण]],<ref>{{cite journal | author=Daniele Nardi | title=निगमनात्मक-झांकी विधि द्वारा एक एकीकरण एल्गोरिथम का औपचारिक संश्लेषण| journal=[[Journal of Logic Programming]] | volume=7 | pages=1–43 | year=1989 | doi=10.1016/0743-1066(89)90008-3 | doi-access=free }}</ref> संबंधपरक डेटाबेस प्रश्नों के उत्तर<ref>{{cite book | author=Daniele Nardi and Riccardo Rosati | contribution=Deductive Synthesis of Programs for Query Answering | editor=Kung-Kiu Lau and Tim Clement | title=तर्क कार्यक्रम संश्लेषण और परिवर्तन पर अंतर्राष्ट्रीय कार्यशाला (LOPSTR)| publisher=Springer | series=Workshops in Computing | pages=15–29 | year=1992 | doi=10.1007/978-1-4471-3560-9_2 }}</ref> और कई छँटाई एल्गोरिदम।<ref>{{cite book | author=Jonathan Traugott | contribution=Deductive Synthesis of Sorting Programs | title=स्वचालित कटौती पर अंतर्राष्ट्रीय सम्मेलन की कार्यवाही| publisher=Springer | series=[[LNCS]] | volume=230 | pages=641–660 | year=1986 }}</ref><ref>{{cite journal | author=Jonathan Traugott | title=छँटाई कार्यक्रमों का निगमनात्मक संश्लेषण| journal=[[Journal of Symbolic Computation]] | volume=7 | number=6 | pages=533–572 | date=Jun 1989 | doi=10.1016/S0747-7171(89)80040-9 | doi-access=free }}</ref> | ||
Revision as of 21:17, 15 March 2023
कंप्यूटर विज्ञान में, कार्यक्रम संश्लेषण एक ऐसा कार्यक्रम बनाने का कार्य है किसी दिए गए उच्च-स्तरीय औपचारिक विनिर्देश को प्रमाणित करता है। कार्यक्रम सत्यापन के विपरीत, कार्यक्रम दिए जाने के बजाय निर्मित किया जाना है; तथापि, दोनों क्षेत्र औपचारिक प्रमाण तकनीकों का उपयोग करते हैं, और दोनों में स्वचालितकरण की विभिन्न डिग्री के दृष्टिकोण सम्मिलित हैं। स्वचालित प्रोग्रामिंग तकनीकों के विपरीत, कार्यक्रम संश्लेषण में विनिर्देश सामान्यतः एक उपयुक्त तार्किक कलन में गैर-एल्गोरिदमिक कथन होते हैं।[1]
उत्पत्ति
1957 में कॉर्नेल विश्वविद्यालय में समर इंस्टीट्यूट ऑफ सिंबॉलिक लॉजिक के दौरान, अलोंजो चर्च ने गणितीय आवश्यकताओं से एक सर्किट को संश्लेषित करने की समस्या को परिभाषित किया।[2] भले ही काम केवल सर्किट को संदर्भित करता है और कार्यक्रम को नहीं, काम को कार्यक्रम संश्लेषण के प्रारंभिक विवरणों में से एक माना जाता है और कुछ शोधकर्ता कार्यक्रम संश्लेषण को "चर्च की समस्या" के रूप में संदर्भित करते हैं। 1960 के दशक में, आर्टिफिशियल इंटेलिजेंस में शोधकर्ताओं द्वारा "स्वचालित प्रोग्रामर" के लिए एक समान विचार की खोज की गई थी।[citation needed]
तब से, विभिन्न अनुसंधान समुदायों ने कार्यक्रम संश्लेषण की समस्या पर विचार किया। उल्लेखनीय कार्यों में बुच्ची और लैंडवेबर द्वारा 1969 ऑटोमेटा-सैद्धांतिक दृष्टिकोण,[3] और मन्ना और वाल्डिंगर (सी। 1980) द्वारा कार्य सम्मिलित हैं। आधुनिक उच्च-स्तरीय प्रोग्रामिंग भाषाओं के विकास को कार्यक्रम संश्लेषण के एक रूप के रूप में भी समझा जा सकता है।
21वीं सदी के घटनाक्रम
21 वीं सदी के प्रारंभ में औपचारिक सत्यापन समुदाय और संबंधित क्षेत्रों में कार्यक्रम संश्लेषण के विचार में व्यावहारिक रुचि में वृद्धि देखी गई है। अरमांडो सोलर-लेज़ामा ने दिखाया कि बूलियन तर्क में कार्यक्रम संश्लेषण समस्याओं को एनकोड करना संभव है और बूलियन संतुष्टि समस्या के लिए एल्गोरिदम का उपयोग स्वचालित रूप से कार्यक्रम खोजने के लिए किया जाता है।[4] 2013 में, यूपीएन, यूसी बर्कले और एमआईटी के शोधकर्ताओं द्वारा कार्यक्रम संश्लेषण समस्याओं के लिए एक एकीकृत रूपरेखा प्रस्तावित की गई थी।[5] 2014 के बाद से एक प्रतिस्पर्धी कार्यक्रम, सिंटैक्स-गाइडेड संश्लेषण प्रतियोगिता या एसयगस-कॉमपी में कार्यक्रम संश्लेषण के लिए विभिन्न एल्गोरिदम की तुलना करने वाली एक वार्षिक कार्यक्रम संश्लेषण प्रतियोगिता हुई है।[6] फिर भी, उपलब्ध एल्गोरिदम केवल छोटे प्रोग्रामों को संश्लेषित करने में सक्षम हैं।
मन्ना और वाल्डिंगर की रूपरेखा
एनआर | अभिकथन | लक्ष्य | कार्यक्रम | मूल |
---|---|---|---|---|
51 | ||||
52 | ||||
53 | s | |||
54 | t | |||
55 | संकल्प(51,52) | |||
56 | s | संकल्प(52,53) | ||
57 | s | संकल्प(53,52) | ||
58 | p ? s : t | संकल्प(53,54) |
1980 में प्रकाशित मन्ना और वाल्डिंगर का ढांचा,[7][8] उपयोगकर्ता द्वारा दिए गए पहले-क्रम विनिर्देश सूत्र से प्रारंभ होता है। उस सूत्र के लिए, एक प्रमाण का निर्माण किया जाता है, जिससे एक कार्यात्मक कार्यक्रम को एकीकृत प्रतिस्थापन से भी संश्लेषित किया जाता है।
ढांचे को तालिका लेआउट में प्रस्तुत किया गया है, जिसमें कॉलम सम्मिलित हैं:
- संदर्भ उद्देश्यों के लिए एक पंक्ति संख्या ("एनआर")।
- सूत्र जो पहले से ही स्थापित किए जा चुके हैं, जिनमें स्वयंसिद्ध और पूर्व शर्त सम्मिलित हैं, ("अभिकथन")
- फॉर्मूले अभी भी सिद्ध होने बाकी हैं, पोस्टकंडिशन (लक्ष्य),[note 1] सम्मिलित हैं
- वैध आउटपुट वैल्यू ("प्रोग्राम") को दर्शाने वाली शर्तें[note 2]
- वर्तमान पंक्ति के लिए एक औचित्य ("उत्पत्ति")
प्रारंभ में, पृष्ठभूमि ज्ञान, पूर्व-शर्तें और पश्च-शर्तें तालिका में दर्ज की जाती हैं। उसके बाद, उपयुक्त प्रमाण नियम मैन्युअल रूप से लागू किए जाते हैं। ढांचे को मध्यवर्ती सूत्रों की मानव पठनीयता को बढ़ाने के लिए डिज़ाइन किया गया है: शास्त्रीयसंकल्प के विपरीत, इसे क्लॉसल सामान्य रूप की आवश्यकता नहीं होती है, लेकिन मनमाना संरचना के सूत्रों के साथ तर्क करने की अनुमति देता है और किसी भी जंक्शनर्स ("गैर-खंड संकल्प") को सम्मिलित करता है। प्रमाण कब पूरा होता है लक्ष्य स्तंभ में व्युत्पन्न किया गया है, या, समकक्ष रूप से, अभिकथन कॉलम में। इस दृष्टिकोण से प्राप्त कार्यक्रम से प्रारंभ होने वाले विनिर्देश सूत्र को पूरा करने की गारंटी है; इस अर्थ में वे निर्माण द्वारा सही हैं।[9] केवल एक न्यूनतावादी, अभी तक ट्यूरिंग-पूर्ण,[10] विशुद्ध रूप से कार्यात्मक प्रोग्रामिंग भाषा, जिसमें सशर्त, पुनरावर्तन और अंकगणित और अन्य ऑपरेटर सम्मिलित हैं[note 3] समर्थित है। इस ढांचे के भीतर किए गए मामले के अध्ययन ने गणना करने के लिए एल्गोरिदम को संश्लेषित किया उदाहरण के लिए विभाजन, शेष,[11] वर्गमूल,[12] एकीकरण,[13] संबंधपरक डेटाबेस प्रश्नों के उत्तर[14] और कई छँटाई एल्गोरिदम।[15][16]
सबूत नियम
प्रमाण नियमों में शामिल हैं:
- नॉन-क्लॉज़ल रेज़ोल्यूशन (तर्क) (तालिका देखें)।
- उदाहरण के लिए, अभिकथन सूत्रों को हल करके पंक्ति 55 प्राप्त की जाती है 51 से और 52 से जो दोनों कुछ सामान्य उपसूत्र साझा करते हैं . विलायक के विघटन के रूप में बनता है , साथ द्वारा प्रतिस्थापित , और , साथ द्वारा प्रतिस्थापित . यह विलायक तार्किक रूप से के संयोजन से अनुसरण करता है और . आम तौर पर अधिक, और केवल दो अविवेकी उपसूत्रों की आवश्यकता है और , क्रमश; उनके विलायक तब से बनते हैं और पहले की तरह, कहाँ का सबसे सामान्य एकीकरणकर्ता है और . यह नियम पहले क्रम के तर्क में संकल्प (तर्क) #संकल्प का सामान्यीकरण करता है।[17]
- पैरेंट फ़ार्मुलों की कार्यक्रमशर्तों को संयोजित किया जाता है, जैसा कि पंक्ति 58 में दिखाया गया है ताकि रिज़ॉल्वेंट का आउटपुट तैयार किया जा सके। सामान्य मामले में, बाद पर भी लागू होता है। सबफॉर्मूला के बाद से आउटपुट में दिखाई देता है, गणना योग्य गुणों के अनुरूप केवल उप सूत्रों पर हल करने के लिए देखभाल की जानी चाहिए।
- तार्किक परिवर्तन।
- उदाहरण के लिए, में परिवर्तित किया जा सकता है ) अभिकथन के साथ-साथ लक्ष्यों में भी, क्योंकि दोनों समतुल्य हैं।
- संयोजक अभिकथनों और वियोजनात्मक लक्ष्यों का विभाजन।
- नीचे दिए गए खिलौने के उदाहरण की 11 से 13 पंक्तियों में एक उदाहरण दिखाया गया है।
- यह नियम पुनरावर्ती कार्य (प्रोग्रामिंग) के संश्लेषण की अनुमति देता है। दी गई पूर्व और पश्चात शर्त के लिए ऐसा है कि , पाना ऐसा है कि , और एक उपयुक्त उपयोगकर्ता द्वारा दिया गया सुव्यवस्थित आदेश के डोमेन का , एक अभिकथन जोड़ना हमेशा सही होता है.[18] इस अभिकथन के साथ समाधान करने के लिए एक पुनरावर्ती कॉल का परिचय दिया जा सकता है कार्यक्रम अवधि में।
- मन्ना, वाल्डिंगर (1980), पृष्ठ 108-111 में एक उदाहरण दिया गया है, जहां दो दिए गए पूर्णांकों के भागफल और शेष की गणना करने के लिए एक एल्गोरिथ्म को अच्छी तरह से क्रम का उपयोग करके संश्लेषित किया जाता है। द्वारा परिभाषित (पृष्ठ 110)।
मुर्रे ने इन नियमों को प्रथम-क्रम तर्क के लिए पूर्णता (तर्क) के रूप में दिखाया है।[19] 1986 में, मन्ना और वाल्डिंगर ने समानता को संभालने के लिए सामान्यीकृत ई-रिज़ॉल्यूशन और पैरामॉड्यूलेशन नियम जोड़े;[20] बाद में, ये नियम अधूरे निकले (लेकिन फिर भी सुदृढ़ता)।[21]
उदाहरण
Nr | Assertions | Goals | Program | Origin |
---|---|---|---|---|
1 | Axiom | |||
2 | Axiom | |||
3 | Axiom | |||
10 | M | Specification | ||
11 | M | Distr(10) | ||
12 | M | Split(11) | ||
13 | M | Split(11) | ||
14 | x | Resolve(12,1) | ||
15 | x | Resolve(14,2) | ||
16 | x | Resolve(15,3) | ||
17 | y | Resolve(13,1) | ||
18 | y | Resolve(17,2) | ||
19 | x<y ? y : x | Resolve(18,16) |
एक खिलौना उदाहरण के रूप में, अधिकतम गणना करने के लिए एक कार्यात्मक कार्यक्रम दो नंबर का और निम्नानुसार व्युत्पन्न किया जा सकता है।[citation needed]
आवश्यकता विवरण से शुरू करते हुए अधिकतम किसी भी संख्या से बड़ा या उसके बराबर है, और दी गई संख्याओं में से एक है, प्रथम-क्रम सूत्र इसके औपचारिक अनुवाद के रूप में प्राप्त किया जाता है। इस सूत्र को सिद्ध करना है। रिवर्स विद्वता द्वारा,[note 4] पंक्ति 10 में विनिर्देश प्राप्त किया गया है, क्रमशः एक चर और एक स्कोलेम स्थिरांक को दर्शाने वाला एक अपर- और लोअर-केस अक्षर।
पंक्ति 11 में वितरण नियम के लिए रूपांतरण नियम लागू करने के बाद, प्रमाण लक्ष्य एक संयोजन है, और इसलिए इसे दो मामलों में विभाजित किया जा सकता है, अर्थात। लाइन 12 और 13।
पहले मामले की ओर मुड़ते हुए, पंक्ति 12 को पंक्ति 1 में स्वयंसिद्ध के साथ हल करने से प्रतिस्थापन (तर्क) होता है # कार्यक्रम चर का पहला-क्रम तर्क पंक्ति 14 में। सहज रूप से, पंक्ति 12 का अंतिम संयोजन मूल्य निर्धारित करता है इस मामले में लेना चाहिए। औपचारिक रूप से, उपरोक्त पंक्ति 57 में दिखाया गया गैर-खंड संकल्प नियम 12 और 1 पंक्तियों पर लागू होता है
- p सामान्य उदाहरण होने के नाते x=x का A=A और x=M, वाक्य-विन्यास एकीकरण (कंप्यूटर विज्ञान) द्वारा प्राप्त # पहले-क्रम की शर्तों के बाद के सूत्रों का वाक्य-विन्यास एकीकरण,
- F[p] प्राणी true ∧ x=x, प्रतिस्थापन (तर्क) से प्राप्त # प्रथम-क्रम तर्क पंक्ति 1 (संदर्भ बनाने के लिए उचित रूप से गद्देदार F[⋅] आस-पास p दृश्यमान), और
- G[p] प्राणी x ≤ x ∧ y ≤ x ∧ x = x, तात्कालिक रेखा 12 से प्राप्त,
उपज true ∧ false) ∧ (x ≤ x ∧ y ≤ x ∧ true, जो सरल करता है .
इसी तरह, लाइन 14 से लाइन 15 और फिर लाइन 16 रेजोल्यूशन से मिलती है। साथ ही, दूसरा मामला, लाइन 13 में, इसी तरह से संभाला जाता है, अंत में लाइन 18 की उपज होती है।
अंतिम चरण में, दोनों स्थितियाँ (यानी पंक्तियाँ 16 और 18) जुड़ जाती हैं, पंक्ति 58 से संकल्प नियम का उपयोग करते हुए; उस नियम को लागू करने के लिए प्रारंभिक चरण 15→16 की आवश्यकता थी। सहज रूप से, लाइन 18 को मामले की तरह पढ़ा जा सकता है , उत्पादन मान्य है (मूल विनिर्देशन के संबंध में), जबकि पंक्ति 15 कहती है case , उत्पादन यह सही है; चरण 15→16 ने स्थापित किया कि दोनों मामले 16 और 18 पूरक हैं।[note 5] चूँकि 16 और 18 दोनों पंक्तियाँ एक कार्यक्रमटर्म के साथ आती हैं, a ?: कार्यक्रमकॉलम में परिणाम देता है। लक्ष्य सूत्र के बाद से व्युत्पन्न किया गया है, प्रमाण किया गया है, और का कार्यक्रम स्तंभलाइन में कार्यक्रम शामिल है।
यह भी देखें
- आगमनात्मक प्रोग्रामिंग
- मेटाप्रोग्रामिंग
- कार्यक्रम व्युत्पत्ति
- प्राकृतिक भाषा प्रोग्रामिंग
- प्रतिक्रियाशील संश्लेषण
टिप्पणियाँ
- ↑ The distinction "Assertions" / "Goals" is for convenience only; following the paradigm of proof by contradiction, a Goal is equivalent to an assertion .
- ↑ When and is the Goal formula and the Program term in a line, respectively, then in all cases where holds, is a valid output of the program to be synthesized. This invariant is maintained by all proof rules. An Assertion formula usually is not associated with a Program term.
- ↑ Only the conditional operator (?:) is supported from the beginning. However, arbitrary new operators and relations can be added by providing their properties as axioms. In the toy example below, only the properties of and that are actually needed in the proof have been axiomatized, in line 1 to 3.
- ↑ While ordinary Skolemization preserves satisfiability, reverse Skolemization, i.e. replacing universally quantified variables by functions, preserves validity.
- ↑ Axiom 3 was needed for that; in fact, if wasn't a total order, no maximum could be computed for uncomparable inputs .
संदर्भ
- ↑ Basin, D.; Deville, Y.; Flener, P.; Hamfelt, A.; Fischer Nilsson, J. (2004). "Synthesis of programs in computational logic". In M. Bruynooghe and K.-K. Lau (ed.). कम्प्यूटेशनल लॉजिक में प्रोग्राम डेवलपमेंट. LNCS. Vol. 3049. Springer. pp. 30–65. CiteSeerX 10.1.1.62.4976.
- ↑ Alonzo Church (1957). "परिपथ संश्लेषण की समस्या के लिए पुनरावर्ती अंकगणित के अनुप्रयोग". Summaries of the Summer Institute of Symbolic Logic. 1: 3–50.
- ↑ Richard Büchi, Lawrence Landweber (Apr 1969). "परिमित-राज्य रणनीतियों द्वारा अनुक्रमिक स्थितियों को हल करना". Transactions of the American Mathematical Society. 138: 295–311. doi:10.2307/1994916. JSTOR 1994916.
- ↑ Solar-Lezama, Armando (2008). स्केचिंग द्वारा प्रोग्राम संश्लेषण (PDF) (Ph.D.). University of California, Berkeley.
- ↑ Alur, Rajeev; al., et (2013). "सिंटेक्स-निर्देशित संश्लेषण". Proceedings of Formal Methods in Computer-Aided Design. IEEE. p. 8.
- ↑ SyGuS-Comp (Syntax-Guided Synthesis Competition)
- ↑ Zohar Manna, Richard Waldinger (Jan 1980). "कार्यक्रम संश्लेषण के लिए एक निगमनात्मक दृष्टिकोण". ACM Transactions on Programming Languages and Systems. 2: 90–121. doi:10.1145/357084.357090. S2CID 14770735.
- ↑ Zohar Manna and Richard Waldinger (Dec 1978). कार्यक्रम संश्लेषण के लिए एक निगमनात्मक दृष्टिकोण (PDF) (Technical Note). SRI International. Archived (PDF) from the original on January 27, 2021.
- ↑ See Manna, Waldinger (1980), p.100 for correctness of the resolution rules.
- ↑ Boyer, Robert S.; Moore, J. Strother (May 1983). शुद्ध लिस्प की ट्यूरिंग पूर्णता का एक यांत्रिक प्रमाण (PDF) (Technical report). Institute for Computing Science, University of Texas at Austin. 37. Archived (PDF) from the original on 22 September 2017.
- ↑ Manna, Waldinger (1980), p.108-111
- ↑ Zohar Manna and Richard Waldinger (Aug 1987). "एक द्विआधारी-खोज प्रतिमान की उत्पत्ति". Science of Computer Programming. 9 (1): 37–83. doi:10.1016/0167-6423(87)90025-6.
- ↑ Daniele Nardi (1989). "निगमनात्मक-झांकी विधि द्वारा एक एकीकरण एल्गोरिथम का औपचारिक संश्लेषण". Journal of Logic Programming. 7: 1–43. doi:10.1016/0743-1066(89)90008-3.
- ↑ Daniele Nardi and Riccardo Rosati (1992). "Deductive Synthesis of Programs for Query Answering". In Kung-Kiu Lau and Tim Clement (ed.). तर्क कार्यक्रम संश्लेषण और परिवर्तन पर अंतर्राष्ट्रीय कार्यशाला (LOPSTR). Workshops in Computing. Springer. pp. 15–29. doi:10.1007/978-1-4471-3560-9_2.
- ↑ Jonathan Traugott (1986). "Deductive Synthesis of Sorting Programs". स्वचालित कटौती पर अंतर्राष्ट्रीय सम्मेलन की कार्यवाही. LNCS. Vol. 230. Springer. pp. 641–660.
- ↑ Jonathan Traugott (Jun 1989). "छँटाई कार्यक्रमों का निगमनात्मक संश्लेषण". Journal of Symbolic Computation. 7 (6): 533–572. doi:10.1016/S0747-7171(89)80040-9.
- ↑ Manna, Waldinger (1980), p.99
- ↑ Manna, Waldinger (1980), p.104
- ↑ Manna, Waldinger (1980), p.103, referring to: Neil V. Murray (Feb 1979). A Proof Procedure for Quantifier-Free Non-Clausal First Order Logic (Technical report). Syracuse Univ. 2-79.
- ↑ Zohar Manna, Richard Waldinger (Jan 1986). "स्वचालित कटौती में विशेष संबंध". Journal of the ACM. 33: 1–59. doi:10.1145/4904.4905. S2CID 15140138.
- ↑ Zohar Manna, Richard Waldinger (1992). "The Special-Relations Rules are Incomplete". प्रक्रिया। सीएडीई 11. LNCS. Vol. 607. Springer. pp. 492–506.
- Zohar Manna, Richard Waldinger (1975). "Knowledge and Reasoning in Program Synthesis". Artificial Intelligence. 6 (2): 175–208. doi:10.1016/0004-3702(75)90008-9.