में बाध्य चर के अनुक्रमण को समझना मैं समझने की कोशिश कर रहा हूं कि z3
में बाध्य चर कैसे अनुक्रमित हैं। यहां z3py
और इसी आउटपुट में एक स्निपेट में। (http://rise4fun.com/Z3Py/plVw1)Z3
x, y = Ints('x y')
f1 = ForAll(x, And(x == 0, Exists(y, x == y)))
f2 = ForAll(x, Exists(y, And(x == 0, x == y)))
print f1.body()
print f2.body()
आउटपुट:।
ν0 = 0 ∧ (∃y : ν1 = y)
y : ν1 = 0 ∧ ν1 = y
f1
में, क्यों एक ही बाध्य चर x
अलग सूचकांक है (0
और 1
)। अगर मैं f1
संशोधित करता हूं और Exists
निकालता हूं, तो x
में एक ही अनुक्रमणिका (0
) है।
मैं एक FOL सूत्र स्केला में एक डीएसएल कि मैं z3
को भेजना चाहते हैं में प्रतिनिधित्व किया है:
कारण मैं अनुक्रमण तंत्र को समझने के लिए चाहते हैं। अब ScalaZ3
में mkBound
एपीआई है जो index
और sort
तर्कों के रूप में बाध्य चर बनाने के लिए है। मुझे यकीन नहीं है कि मुझे index
तर्क में किस मूल्य को पास करना चाहिए। तो, मुझे पता है कि निम्नलिखित चाहते हैं: यदि मैं दो सूत्र phi1
और अधिकतम बाध्य चर अनुक्रमित n1
और n2
साथ phi2
, क्या ForAll(x, And(phi1, phi2))
इसके अलावा में x
के सूचकांक हो जाएगा
, वहाँ एक रास्ता है अनुक्रमित रूप में सभी चर दिखाने के लिए? f1.body()
मुझे अनुक्रमित रूप में x
दिखाता है और y
नहीं। (मुझे लगता है कि कारण यह है कि y
अभी भी f1.body()
में बाध्य है)