Z3 में डीएनएफ में सूत्रों को परिवर्तित करने के लिए एपीआई या रणनीति नहीं है। हालांकि, इस रणनीति को split-clause
का उपयोग करके कई उपगोर्गों में एक लक्ष्य तोड़ने का समर्थन है। सीएनएफ में एक इनपुट फॉर्मूला को देखते हुए, यदि हम इस रणनीति को पूरी तरह से लागू करते हैं, तो प्रत्येक आउटपुट सबगोल को एक बड़े संयोजन के रूप में देखा जा सकता है। यहां एक उदाहरण दिया गया है कि इसे कैसे करें।
(apply (then simplify (repeat (or-else split-clause skip))))
repeat
Combinator रणनीति को लागू करने, जब तक यह किसी भी संशोधन के प्रदर्शन नहीं करता रहता है:
http://rise4fun.com/Z3/zMjO
यहाँ आदेश है। रणनीति split-clause
विफल रहता है अगर इनपुट में कोई क्लॉज नहीं है। यही कारण है कि हम (कुछ भी नहीं) रणनीति के साथ or-else
संयोजक का उपयोग करते हैं। हम प्रत्येक खंड को मामलों में विभाजित करने के बाद सरलीकरण लागू करने वाली रणनीतियों का उपयोग करके कमांड को बेहतर बना सकते हैं (उदा। simplify
, solve-eqs
)।
ध्यान दें कि उपर्युक्त स्क्रिप्ट इनपुट सूत्र को सीएनएफ में मानती है।
स्रोत
2012-07-23 15:09:13
(spoiler) प्रस्तावों को डीएनएफ/सीएनएफ में परिवर्तित करने के लिए मैं bgolan.py का उपयोग https://github.com/bastikr/boolean.py से करता हूं – Ayrat