2012-02-08 9 views
5

के लिए पैटर्न खोजने में विफल रहा मुझे निम्न सरल SMT-LIB प्रोग्राम में दिखाए गए एक समस्या मिलती है।Z3 में चेतावनी संदेश के पीछे क्या कारण है: "क्वांटिफ़ायर (क्वांटिफ़ायर आईडी: के! 18)"

श्रीमती मसलन कोड:

WARNING: failed to find a pattern for quantifier (quantifier id: k!18) 
sat 
........ 
........ 

मैं चेतावनी संदेश के बारे में सोच रहा हूँ:

(declare-fun isDigit (Int) Bool) 
(assert (forall ((x Int)) 
    (=>  (isDigit x) 
     (and (>= x 0) (< x 10)) 
    ) 
) 
) 

(assert (forall ((x Int)) 
    (=>  (and (>= x 12) (< x 15)) 
     (exists ((y Int)) 
      (and (>= y 1) (< y 6) 
       (isHost (- x y)) 
      ) 
     ) 
    ) 
) 
) 

(check-sat) 
(get-model) 

यह निम्न चेतावनी देता है। मुझे पता है कि मुझे कुछ याद आ रही है, लेकिन मैं समझ नहीं पा रहा हूं। क्या कोई इस मुद्दे में मेरी मदद कर सकता है?

उत्तर

2

जेड 3 क्वांटिफ़ायर को संभालने के लिए विभिन्न इंजनों का उपयोग करता है (Z3 guide देखें)। इनमें से एक इंजन पैटर्न मिलान (ई-मिलान) पर आधारित है। Z3 प्रत्येक मात्राबद्ध सूत्र के लिए पैटर्न अनुमान लगाने की कोशिश करता है। यदि यह एक नहीं मिल रहा है, तो यह चेतावनी संदेश जारी करता है। उपयोगकर्ता प्रत्येक क्वांटिफायर के लिए पैटर्न भी प्रदान कर सकता है। मार्गदर्शिका दिखाती है कि इसे कैसे करें। आईडी k!18 जेड 3 द्वारा बनाई गई डिफ़ॉल्ट आईडी है। यह लाइन नंबर (आपके मामले में लाइन 18) पर आधारित है। आप क्वांटिफायर के लिए अपनी खुद की आईडी भी प्रदान कर सकते हैं। चेतावनी सिर्फ उपयोगकर्ताओं को बता रही है कि ई-मेलिंग इंजन निर्दिष्ट क्वांटिफायर को संभालने में सक्षम नहीं होगा।

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