मैं z3 के लिए smt-lib 2 वाक्यविन्यास में एक क्यूबीएफ एन्कोड करने की कोशिश कर रहा हूं। एक चेतावनीक्वांटिफायर और पैटर्न (क्यूबीएफ फॉर्मूला)
चेतावनी में z3 परिणाम चल रहा है: परिमाणक के लिए एक पैटर्न खोजने में असफल (! परिमाणक आईडी: k 14)
और satisfiability परिणाम "अज्ञात" है।
(declare-fun R (Bool Bool Bool Bool) Bool)
(assert
(forall ((x2 Bool) (x3 Bool))
(exists ((y Bool))
(forall ((x1 Bool))
(R x1 x2 x3 y)
)
)
)
)
(check-sat)
मैं बैठ गया-क्वेरी के लिए
(set-option :auto-config false)
(set-option :mbqi false)
(declare-fun R (Bool Bool Bool Bool) Bool)
(declare-fun x1() Bool)
(declare-fun x2() Bool)
(declare-fun x3() Bool)
(declare-fun y() Bool)
(assert
(forall ((x2 Bool) (x3 Bool))
(!
(exists ((y Bool))
(!
(forall ((x1 Bool))
(!
(R x1 x2 x3 y)
:pattern((R x1 x2 x3 y)))
)
:pattern((R x1 x2 x3 y)))
)
:pattern((R x1 x2 x3 y)))
)
)
(check-sat)
परिणाम के लिए कोड लिख कर चेतावनी से छुटकारा मिला है, तथापि, बनी हुई है "अज्ञात":
कोड इस प्रकार है।
मुझे लगता है कि मुझे पैटर्न सही करने की आवश्यकता है? मैं उन्हें नेस्टेड क्वांटिफायर के लिए कैसे निर्दिष्ट करूं? क्वांटिफायर के साथ सरल उदाहरण पैटर्न एनोटेशन के बिना काम करने लगते हैं, हालांकि।
What is the reason behind the warning message in Z3: "failed to find a pattern for quantifier (quantifier id: k!18) " का जवाब और z3 मार्गदर्शिका ने दुर्भाग्य से मुझे बहुत मदद नहीं की।