2011-06-07 15 views
6

के लिए एसएमटी सॉल्वर मैं सी कोड के प्रतीकात्मक निष्पादन में कुछ प्रयोगों की योजना बना रहा हूं, ऑफ-द-शेल्फ एसएमटी सॉल्वर का उपयोग करके, और सोच रहा हूं कि कौन सा सॉल्वर उपयोग करना है; उदा। एसएमटी प्रतियोगिता प्रवेशकर्ता, और केवल ओपन-सोर्स सिस्टम लेते हुए, इसे बीवर, बूलेक्टर, सीवीसी 3, ओपनएसएमटी, सैटेन, सोनोलर, एसटीपी, वेरिट तक सीमित कर दिया गया है; जो अभी भी एक लंबी सूची है।बिट वेक्टर अंकगणितीय

इसे थोड़ा संकीर्ण करने की कोशिश कर रहा है, मुझे लगता है कि कुछ सिस्टम बिट वेक्टर अंकगणितीय को संभालने की क्षमता का विज्ञापन करते हैं, जबकि अन्य केवल सामान्य पूर्णांक अंकगणितीय को संभालने की क्षमता का विज्ञापन करते हैं। सिद्धांत रूप में, पूर्व सी के लिए सही है, जहां वेरिएबल्स मशीन शब्द हैं, असंबद्ध पूर्णांक नहीं। अभ्यास में यह कितना अंतर करता है? यदि आप इस तरह की नौकरी के लिए एक सामान्य पूर्णांक प्रणाली का उपयोग करने का प्रयास करते हैं तो क्या होता है? क्या निम्न परिदृश्यों में से कोई एक लागू होता है?

  1. थोड़ा सा वेक्टर सिस्टम थोड़ा अधिक कुशल है, लेकिन आप या तो कोई समस्या नहीं कर सकते हैं।

  2. आप थोड़ी-थोड़ी tweaking के साथ एक सामान्य पूर्णांक प्रणाली का उपयोग कर सकते हैं।

  3. हस्ताक्षर int के लिए एक सामान्य पूर्णांक प्रणाली ठीक है (क्योंकि अतिप्रवाह का परिणाम अपरिभाषित है) लेकिन हस्ताक्षरित के लिए गलत जवाब देगा।

  4. एक सामान्य पूर्णांक प्रणाली मशीन शब्द अंकगणितीय के लिए बिल्कुल सही नहीं है, और मैं केवल उन प्रणालियों को अपनी छोटी सूची को कम कर सकता हूं जो बिट वेक्टर अंकगणित प्रदान करते हैं।

  5. कुछ और ...?

मैं संभव के रूप में विशिष्ट एक सवाल पूछने की कोशिश की है, लेकिन अगर किसी को भी इस सूची में नीचे संकुचन के लिए किसी अन्य मापदंड सुझाव दे सकते हैं, कि बहुत अच्छा होगा!

उत्तर

7

मुझे प्रतीकात्मक निष्पादन के लिए एसटीपी का उपयोग करके अच्छा अनुभव मिला है। एसटीपी इस कार्य के लिए ठीक से डिजाइन किया गया था। इसके अलावा, इस उद्देश्य के लिए सफलतापूर्वक एसटीपी का उपयोग करने वाले कई प्रतीकात्मक निष्पादन उपकरण रहे हैं, इसलिए यह मानने का कारण है कि एसटीपी चूसना नहीं है। मैं निश्चित रूप से इस तरह के प्रयोग के लिए डिफ़ॉल्ट विकल्प के रूप में दूसरों को एसटीपी की सिफारिश करता हूं।

हालांकि, मैंने अन्य सिस्टमों की कोशिश नहीं की है, इसलिए मुझे नहीं पता कि एसटीपी उनकी तुलना कैसे करता है।

व्यक्तिगत रूप से, मैं एसटीपी को बेसलाइन के रूप में देखता हूं और इस तरह के आवेदन के लिए डिफ़ॉल्ट विकल्प। इसलिए, यदि आपके पास केवल एक सॉल्वर का प्रयास करने का समय है, तो एसटीपी की कोशिश करना एक बहुत ही उचित विकल्प जैसा लगता है।

अगर मुझे लगता है, तो मेरा अनुमान होगा कि बिट-वेक्टर अंकगणित समर्थन के लिए महत्वपूर्ण है, क्योंकि किसी भी बड़े सिस्टम कोड में कोड की एक गैर-मामूली मात्रा होने वाली बिटवाई ऑपरेशंस होती है। साथ ही, मुझे संदेह होगा/चिंता होगी कि कुछ सिस्टम कोड मॉड्यूलो 2 n को लपेटने के लिए हस्ताक्षरित अंकगणित के व्यवहार पर भरोसा कर सकते हैं, और यदि आप इसे पूर्णांक के साथ मॉडल करने का प्रयास करते हैं, तो आपको सी दाएं के अर्थशास्त्र नहीं मिलेगा (क्योंकि, आप कहते हैं, पूर्णांक बस मशीन-शब्द अंकगणितीय के लिए सही नहीं हैं) और इसके परिणामस्वरूप, यदि आप एक पूर्णांक-केवल सॉल्वर का उपयोग करने का प्रयास करते हैं, तो आप कुछ कठिनाइयों का अनुभव कर सकते हैं। हालांकि, इन संदेहों में से किसी के लिए मेरे पास कोई सख्त सबूत नहीं है।

पीएस Z3 आपकी सूची में विचार करने के लिए एक दावेदार भी हो सकता है। (क्या आपको वास्तव में खुले स्रोत होने के लिए अपने सॉल्वर की आवश्यकता है, जब तक कि यह मुफ़्त हो? मुझे उम्मीद है कि एक प्रतीकात्मक निष्पादन उपकरण इसे बिना किसी संशोधन के ब्लैकबॉक्स के रूप में उपयोग करेगा।)

1

SMT-Wikipedia 2011-08 में के अनुसार, हमने:

इन उपायों के आधार पर, ऐसा लगता है कि सबसे जीवंत, सुव्यवस्थित परियोजनाओं OpenSMT, एसटीपी और CVC4 हैं।

मैं बस इस सामान की जांच कर रहा हूं - अब तक, तीनों को उचित, साथ ही पुराने सीवीसी -> सीवीसी 3 लगता है।

संबंधित मुद्दे