Closed sankalpgambhir closed 3 months ago
That’s an interesting corner case. The right behavior for Eldarica should be to reject this input, since it is not a problem in Horn clause format, so outside of the fragment that Eldarica can handle. I need to look into why the SMT-LIB front-end does not correctly recognize that the input is ill-formed!
This input is now rejected with an error.
Thanks! I can confirm that this is rejected on the main branch.
Consider the following smtlib satisfiability query:
corresponding to asking whether $n > 1 \land n \not = 2$ is satisfiable. $n = 3$ is a possible model.
Edit: a simpler query
(assert (> n 1))
also works.Running it through different solvers, one sees the outputs:
Note that in the third command, the eldarica output differs from that of z3 and cvc5 on this query. Is this a bug or some expected difference in interpretation of the problem?
P.S.:
Changing the query to that of an equivalent transition system / predicate abstraction problem gets the right result:
Summary:
$$ \begin{align} \top & \implies zero(x) \ zero(x) \land x > 1 & \implies one(x) \ one(x) \land x \not = 2 & \implies \bot \end{align} $$
Solver outputs on predicate abstraction problem: