Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incompleteness in linear (integer) arithmetic #1228

Open
bclement-ocp opened this issue Aug 30, 2024 · 0 comments
Open

Incompleteness in linear (integer) arithmetic #1228

bclement-ocp opened this issue Aug 30, 2024 · 0 comments
Labels
arithmetic reasoning This issue is about improving reasoning capabilities. triage Requires a decision from the dev team

Comments

@bclement-ocp
Copy link
Collaborator

Consider the following SMT-LIB problem:

(set-info :status unsat)
(set-logic ALL)

(declare-const x Int)
(declare-const y Int)

(assert (<= 0 x 4294967295))
(assert (<= 0 y 4294967295))

(declare-const k0 Int)
(declare-const k1 Int)

(assert (= (- x y) (* (- k0 k1) 4294967296)))

(assert (distinct x y))

(check-sat)

It is unsat, but Alt-Ergo cannot prove it and returns unknown. This can be "fixed" in different ways, for instance moving the range assertions for x and y after the distinct assertion!

This looks like it is usual intervalCalculus madness. I still have plans to migrate it to use the Domains interface instead, which might help here.

@bclement-ocp bclement-ocp added reasoning This issue is about improving reasoning capabilities. triage Requires a decision from the dev team arithmetic labels Aug 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arithmetic reasoning This issue is about improving reasoning capabilities. triage Requires a decision from the dev team
Projects
None yet
Development

No branches or pull requests

1 participant