में आंतरिक आंतरिक सॉल्वर सूत्रों को मुद्रित करना प्रमेय सिद्ध करने वाला टूल z3 एक सूत्र को हल करने में काफी समय ले रहा है, जो मुझे विश्वास है कि यह आसानी से संभालने में सक्षम होना चाहिए। Z3 पर मेरे इनपुट को बेहतर और संभवतः अनुकूलित करने के लिए, मैं आंतरिक बाधाओं को देखना चाहता था जो z3 अपनी हल करने की प्रक्रिया के हिस्से के रूप में उत्पन्न करता है। कमांड लाइन से z3 का उपयोग करते समय, मैं अपने बैक-एंड सॉल्वर के लिए जेड 3 उत्पन्न करने वाले सूत्र को कैसे प्रिंट करूं?z3
z3
उत्तर
Z3 कमांड लाइन उपकरण में ऐसा विकल्प नहीं है। इसके अलावा, जेड 3 में कई सॉल्वर और प्री-प्रोसेसिंग चरण शामिल हैं। यह स्पष्ट नहीं है कि कौन सा कदम आपके लिए उपयोगी होगा। Z3 स्रोत कोड https://github.com/Z3Prover/z3 पर उपलब्ध है। जब डी 3 डीबग मोड में संकलित किया जाता है, तो यह अतिरिक्त कमांड लाइन विकल्प -tr:<tag>
प्रदान करता है। इस विकल्प का चयन चुनिंदा डंप जानकारी के लिए किया जा सकता है।
TRACE("nlsat", tout << "starting search...\n"; display(tout);
tout << "\nvar order:\n";
display_vars(tout););
आदेश पंक्ति विकल्प -tr:nlsat
ऊपर दिए गए निर्देश पर अमल करने जेड 3 निर्देश देगा: उदाहरण के लिए, स्रोत फ़ाइल nlsat_solver.cpp
निम्नलिखित अनुदेश शामिल हैं। tout
ट्रेस आउटपुट स्ट्रीम है। यह फ़ाइल .z3-trace
में संग्रहीत किया जाएगा। Z3 स्रोत इन TRACE
आदेशों से भरा है। चूंकि कोड उपलब्ध है, इसलिए हम कोड में अपने स्वयं के ट्रेस कमांड भी जोड़ सकते हैं।
यदि आप अपना उदाहरण पोस्ट करते हैं, तो मैं आपको बता सकता हूं कि कौन से Z3 घटक प्रीप्रोसेस और इसे हल करने के लिए उपयोग किए जाते हैं। फिर, हम चुन सकते हैं कि कौन से "टैग" हमें ट्रेसिंग के लिए सक्षम करना चाहिए।
संपादित (के बाद constraints पोस्ट किए गए थे): आपका उदाहरण मिश्रित पूर्णांक & असली nonlinear गणित में है। Z3 में नया nonlinear अंकगणित सॉल्वर (nlsat
) to_int
का समर्थन नहीं करता है। इस प्रकार, Z3 सामान्य उद्देश्य सॉल्वर का उपयोग आपकी समस्या को हल करने के लिए किया जाता है। हालांकि यह सॉल्वर लगभग हर चीज स्वीकार करता है, यह nonlinear असली अंकगणित के लिए भी पूरा नहीं है। इस सॉल्वर पर nonlinear समर्थन इस पर आधारित है: अंतराल विश्लेषण और ग्रोबनर आधार गणना। यह सॉल्वर फ़ोल्डर src/smt
(unstable branch में) में कार्यान्वित किया गया है। अंकगणितीय मॉड्यूल theory_arith*
फ़ाइलों में लागू किया गया है। एक अच्छा ट्रेसिंग कमांड लाइन विकल्प -tr:after_reduce
है। यह प्री-प्रोसेसिंग के बाद बाधाओं का सेट प्रदर्शित करेगा। बाधा अंकगणितीय मॉड्यूल (theory_arith*
) है।
अतिरिक्त टिप्पणी:
समस्या एक अनिर्णनीय टुकड़ा में है: मिश्रित पूर्णांक & असली nonlinear गणित। यही है, इस खंड के लिए ध्वनि और पूर्ण सॉल्वर लिखना असंभव है। बेशक, हम एक सॉल्वर लिख सकते हैं जो अभ्यास में हमें मिलने वाले उदाहरण हल करता है। मेरा मानना है कि
to_int
को संभालने के लिएnlsat
का विस्तार करना संभव है।यदि आप
to_int
से बचते हैं, तो आपnlsat
का उपयोग करने में सक्षम होंगे। समस्या nonlinear असली अंकगणित खंड में होगा। मैं समझता हूं कि यह कठिन हो सकता है, क्योंकिto_int
आपके एन्कोडिंग में एक महत्वपूर्ण बात प्रतीत होता है।z3.codeplex.com पर "अस्थिर" शाखा में कोड "मास्टर" शाखा में आधिकारिक संस्करण की तुलना में काफी बेहतर संगठित है। मैं इसे जल्द ही "मास्टर" शाखा के साथ विलय कर दूंगा।यदि आप स्रोत कोड के साथ खेलना चाहते हैं तो आप "अस्थिर" शाखा पुनर्प्राप्त कर सकते हैं।
"अस्थिर" शाखा एक नई बिल्ड सिस्टम का उपयोग करती है। आप ट्रेसिंग समर्थन के साथ रिलीज संस्करण बना सकते हैं। मेकफ़ाइल उत्पन्न करते समय आपको केवल
-t
विकल्प का उपयोग करना होगा।
अजगर स्क्रिप्ट/mk_make.py आयकर
- जब जेड 3 डिबग मोड में संकलित किया गया है, विकल्प
AUTO_CONFIG=false
डिफ़ॉल्ट रूप से। इस प्रकार, "रिलीज" मोड के व्यवहार को पुन: पेश करने के लिए, आपको कमांड लाइन विकल्पAUTO_CONFIG=true
प्रदान करना होगा।
- 1. Z3
- 2. Z3
- 3. Z3
- 4. एसएमटीआईएलबी सरणी सिद्धांत Z3
- 5. एक डेटाटाइप में Z3
- 6. Z3 और coq
- 7. z3 (तर्क QF_BV)
- 8. क्या Z3 समर्थन क्रेग इंटरपोलेशन
- 9. Z3 में TryFor दिए गए timelimit
- 10. वर्तमान संस्करण के बाद से z3
- 11. क्या Z3 incremental मोड में काम कर सकता है?
- 12. जेड 3 का उपयोग Z3 का उपयोग एसएटी सॉल्वर
- 13. Z3_ast संदर्भ Z3 के बाहर गिनती संदर्भों की गणना करता है?
- 14. क्या Z3 का उपयोग सबस्ट्रिंग के कारण करने के लिए किया जा सकता है?
- 15. Z3 में चेतावनी संदेश के पीछे क्या कारण है: "क्वांटिफ़ायर (क्वांटिफ़ायर आईडी: के! 18)"
- 16. क्या मैं z3 में बूलियन चर की प्राथमिकता निर्धारित कर सकता हूं?
- 17. क्या Z3 बाध्य डेटा संरचनाओं पर पुनरावर्ती कार्यों की संतुष्टि की जांच कर सकता है?
- 18. एसएमटी जेड 3 उपयोगकेस (डीबीसी की तरह) के व्यावहारिक उदाहरण और Z3 के लिए ओपन सोर्स विकल्प की तलाश में?
- 19. Matlab
- 20. अजगर पांडा: aggfunc साथ पिवट तालिका = गिनती अद्वितीय अलग
- 21. क्वांटिफायर और पैटर्न (क्यूबीएफ फॉर्मूला)
- 22. क्वांटिफायर एलिमिनेशन - अधिक प्रश्न
- 23. आईएनआई-विकल्प CASE_SPLIT अजीब मॉडल
- 24. सत्यापित करें अगर बिंदु 3 डी अंतरिक्ष में एक शंकु के अंदर है
- 25. z3python: स्ट्रिंग को अभिव्यक्ति में परिवर्तित करना
- 26. हास्केल: समीकरण विस्तारक 1+ (1+ (1+ (1+ (...))) = ∞
- 27. ओपनजीएल गहराई सॉर्टिंग
- 28. क्या मैं पाइथन में किसी फ़ंक्शन के स्थानीय दायरे को बदलने के लिए सजावट का उपयोग कर सकता हूं?
- 29. (Z3Py) समारोह
- 30. मॉडल
आपके त्वरित प्रतिक्रियाओं के लिए धन्यवाद। – user1779685
स्रोत कोड के लिंक के लिए भी धन्यवाद: मुझे नहीं पता था कि इसे जारी किया गया था। जैसा कि आप सुझाव देते हैं, मैं चुनिंदा जानकारी को डंप करने के लिए टैग और ट्रेस का उपयोग करने का प्रयास करूंगा। यदि आप संकेत दे सकते हैं कि कौन से मॉड्यूल शामिल हो सकते हैं, तो यह बहुत उपयोगी होगा - इससे मुझे बाधाओं को ट्यून करने में भी मदद मिलेगी - मेरा मानना है कि मैं इस समस्या के लिए सबसे अच्छे तरीके से ज़ेड 3 का उपयोग नहीं कर सकता। stackoverflow मुझे उस कोड को पेस्ट करने की अनुमति नहीं दे रहा है: शायद एक पोस्ट के लिए अपनी लाइन सीमा से अधिक है। मैं फिर से एक नई पोस्ट के रूप में पोस्ट करने की कोशिश करूंगा या बाधाओं के हिस्सों और पोस्ट भागों को आसवित कर सकता हूं जबकि समझ में आता हूं। – user1779685
(जोर (> = ab)) (जोर (और (< a 128.0) (> = एक 1,0))) (जोर (और (< b 128.0) (> = b 0,5))) (जोर (और (< c 128.0) (> = c 0,5))) (जोर दें (= दो-टू-पी (to_real (^ 2 23))) ; के कंप्यूटिंग एक्सपोनेंट (जोर दें (= दो-टू-एक्स-ए (ite (और (> = a 0.5) ( = एक 1.0) ( = a 2.0) ( = 4.0) (<एक 8.0)) 4.0 (ite (और (> = एक 8.0) ( = एक 16.0) (<32.0)) 16.0 (ite (और (> = एक 32.0) (<एक 64.0)) 32.0 (ite (और (> = एक 64.0) (<128.0)) 64.0 (ite (और (> = एक 128.0) (<256.0)) 128.0 256।0)))))))))))) – user1779685