Regression: theory mismatch no longer recognized when parsing SMTLIB, 0/1 are booleans. #7419
Closed
Description
There is a regression from Z3 v4.13.0 to v4.13.2.
We found it using the Java API. However, executing the binary also shows the issue:
Input 1
(declare-fun x () Bool)
(assert (= 0 x))
(check-sat)
(get-model)
Output with v4.13.0:
(error "line 2 column 14: Sorts Int and Bool are incompatible")
sat
((define-fun x () Bool false))
Output with v4.13.2:
sat
((define-fun x () Bool false))
i.e., no more error.
Input 2
(declare-fun x () Bool)
(assert (= 5 x))
(check-sat)
(get-model)
Output with v4.13.0:
(error "line 2 column 14: Sorts Int and Bool are incompatible")
sat
((define-fun x () Bool false))
Output with v4.13.2:
unsat
(error "line 4 column 10: model is not available")
i.e., no more error on theory mismatch, but unsat. Why? Because Boolean can be true|false
which is is 1|0
and can not be equal to 5
?
Would it be possible to keep the old behaviour?
We would like to get an error as soon as the user enters formulas with incompatible types.
Metadata
Assignees
Labels
No labels