Reputation: 1637
z3py snippet:
x = Int('x')
s = Solver()
s.add(x <= x)
print s.check()
print s.model()
print s.model().sexpr()
Output:
sat
[]
Any value of x
would do but z3
returns empty model.
Does a missing free variable x
in the model indicates that any integer value is a valid model?
Upvotes: 5
Views: 1390
Reputation: 21475
Yes, in Z3, if a constant (such as x
) does not appear in the model, then it is a "don't care". That is, any value of x
will satisfy the formula. When evaluating the value of a constant, we can enable "model completion". That is, Z3 will use an arbitrary interpretation for "don't care" symbols. Here is an example http://rise4fun.com/Z3Py/bvVO
x = Int('x')
s = Solver()
s.add(x <= x)
print s.check()
m = s.model()
print m.evaluate(x)
print m.evaluate(x, model_completion=True)
print m
Upvotes: 8