चूंकि सवाल वर्णन करने में थोड़ा मुश्किल है, इसलिए मैं अपने प्रश्न का वर्णन करने के लिए एक छोटा सा उदाहरण उपयोग करूंगा। मान लीजिए कि एक प्रस्तावक सूत्र सेट है जिसका तत्व बूलियन चर ए, बी और सी हैं। इस सूत्र सेट के सच्चे असाइनमेंट के लिए z3 का उपयोग करते समय, चर की प्राथमिकता निर्धारित करने के लिए कोई तरीका मौजूद है? मेरा मतलब है कि अगर प्राथमिकता एक> बी> सी है, तो खोज प्रक्रिया के दौरान z3 सबसे पहले मान लेता है कि यह सत्य है और यदि कोई सच होना असंभव है तो यह मानता है कि बी सत्य है और इसी तरह। दूसरे शब्दों में, यदि z3 एक सत्य असाइनमेंट देता है: ए, बी, सी उपर्युक्त प्राथमिकता के तहत नहीं है, इसका मतलब है कि यह सच होना असंभव है क्योंकि बी की तुलना में उच्च प्राथमिकता है। उम्मीद है कि मैं स्पष्ट रूप से प्रश्न का वर्णन करता हूं।क्या मैं z3 में बूलियन चर की प्राथमिकता निर्धारित कर सकता हूं?
उत्तर
वर्तमान रिलीज में इसे करने का कोई आसान तरीका नहीं है (v4.3.1)। एकमात्र तरीका मैं देख सकता हूं कि Z3 स्रोत कोड (http://z3.codeplex.com) हैक/संशोधित करना है। हम मानते हैं कि प्राथमिकताओं को सेट करना कुछ अनुप्रयोगों के लिए उपयोगी सुविधा है, हालांकि कुछ समस्याएं हैं।
सबसे पहले, Z3 किसी समस्या को हल करने से पहले कई परिवर्तन (उर्फ प्रीप्रोकैसिंग चरण) लागू करता है। चर बनाया और समाप्त कर रहे हैं। इस प्रकार, मूल समस्या के लिए एक केस-स्प्लिट प्राथमिकता वास्तविक समस्या (जेड 3 द्वारा हल किए गए सभी परिवर्तनों को लागू करने के बाद उत्पन्न) के लिए व्यर्थ हो सकती है।
एक नाटकीय उदाहरण एक सूत्र है जिसमें केवल बिट-वैक्टर शामिल हैं। डिफ़ॉल्ट रूप से, Z3 इस फॉर्मूला को प्रस्तावित तर्क में कम करेगा और एक प्रस्ताववादी एसएटी सॉल्वर का आह्वान करेगा। इस कमी में, सभी बिट-वेक्टर चर समाप्त हो गए हैं।
जेड 3 सॉल्वर और प्रीप्रोसेसरों का संग्रह है। डिफ़ॉल्ट रूप से, Z3 उपयोगकर्ता के लिए स्वचालित रूप से एक सॉल्वर का चयन करेगा। इनमें से कुछ हलकर्ता पूरी तरह से अलग एल्गोरिदम का उपयोग करते हैं। इसलिए, प्रदत्त प्राथमिकता का उपयोग करने वाले सॉल्वर के लिए बेकार हो सकता है।
GManNickG के रूप में इंगित किया गया है, एक विशेष सॉल्वर के लिए चरण चयन रणनीति सेट करना संभव है। अतिरिक्त विवरण के लिए अपनी टिप्पणी में प्रदान की गई पोस्ट देखें।
- 1. क्या मैं सामान्य प्राथमिकता प्रक्रिया के लिए 15 से ऊपर एकल धागा की प्राथमिकता निर्धारित कर सकता हूं?
- 2. क्या Z3 incremental मोड में काम कर सकता है?
- 3. क्या मैं क्लोजर में एक निर्धारित शफल कर सकता हूं?
- 4. बूलियन ऑपरेटर प्राथमिकता
- 5. मैं सदस्यInfo उदाहरण की पहुंच कैसे निर्धारित कर सकता हूं?
- 6. क्या मैं जावा में चर अधिभारित कर सकता हूं?
- 7. जावा एक्जिक्यूटर्स: मैं कार्य प्राथमिकता कैसे सेट कर सकता हूं?
- 8. Z3
- 9. क्या मैं अपने पर्यावरण चर पर भरोसा कर सकता हूं?
- 10. क्या मैं प्राथमिकता फ़ाइल नाम बदल सकता हूं?
- 11. Z3
- 12. मैं चर में जटिल स्ट्रिंग कैसे कर सकता हूं?
- 13. क्या मैं जीपीयू में मानक की गणना कर सकता हूं?
- 14. क्या मैं जेएसओएन में आरएसएस की सेवा कर सकता हूं?
- 15. MATLAB में क्या मैं एक जावा बूलियन को MATLAB लॉजिकल में परिवर्तित कर सकता हूं?
- 16. यदि प्राथमिकता वापस आती है तो मैं प्राथमिकता बाइंडिंग कैसे विफल कर सकता हूं?
- 17. मैं एलएलवीएम में वैश्विक चर कैसे घोषित कर सकता हूं?
- 18. मैं MATLAB में वैश्विक चर कैसे सूचीबद्ध कर सकता हूं?
- 19. क्या मैं एरलांग में किसी प्रक्रिया की प्राथमिकता बदल सकता हूं?
- 20. वर्डप्रेस में मैं एक्शन प्राथमिकता कैसे बदल सकता हूं?
- 21. मैं LINQ में चर को कैसे परिभाषित कर सकता हूं?
- 22. डब्ल्यूपीएफ: क्या मैं प्रतिशत से प्रतिशत की चौड़ाई निर्धारित कर सकता हूं?
- 23. मैं हेरोोकू पर 'साप्ताहिक' नौकरी कैसे निर्धारित कर सकता हूं?
- 24. मैं रैखिक पीडीएफ फ़ाइल में पेज 1 की सीमा (बाइट्स में) कैसे निर्धारित कर सकता हूं?
- 25. क्या Z3 बाध्य डेटा संरचनाओं पर पुनरावर्ती कार्यों की संतुष्टि की जांच कर सकता है?
- 26. क्या मैं प्रोग्रामेटिक रूप से कॉम्बोबॉक्स ड्रॉपडाउन सूची की स्थिति निर्धारित कर सकता हूं?
- 27. Z3
- 28. मैं कैसे निर्धारित कर सकता हूं अंक भी संख्या है?
- 29. क्या मैं पर्ल में सॉर्ट की तुलना उपरोक्त की तुलना में तर्क पारित कर सकता हूं?
- 30. मैं यूटीसी ऑफसेट द्वारा टाइमज़ोन कैसे निर्धारित कर सकता हूं?
शायद संबंधित: http://stackoverflow.com/q/13921545/87234 – GManNickG