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

Soundness issue with push and pop #998

Closed
Stevendeo opened this issue Dec 4, 2023 · 1 comment · Fixed by #999
Closed

Soundness issue with push and pop #998

Stevendeo opened this issue Dec 4, 2023 · 1 comment · Fixed by #999
Labels

Comments

@Stevendeo
Copy link
Collaborator

Push and pop have a serious soundness issue.

File prelude.ae:

(* This is conceptually [<=] but we don't let Alt-Ergo know *)
logic my_leq : real, real -> bool

theory My_theory extends FPA =
  axiom triggers :
    forall x : real [ int_floor(x) ]. my_leq(real_of_int(int_floor(x)), x)
end

File test.smt2

(set-logic ALL)

(declare-const x Real)

(check-sat)

(push 1)
  (assert (not (my_leq (to_real (to_int x)) x)))
  (push 1)  (pop 1)
(pop 1)

(check-sat)

Alt-ergo returns unknown for the first check-sat and unsat for the second. The second is definitely not unsat, it should actually be the same than the first check-sat.

If we remove the line (push 1) (pop 1) , then alt-ergo answers soundly.

@Stevendeo Stevendeo added the bug label Dec 4, 2023
@bclement-ocp
Copy link
Collaborator

Seems to have been introduced here: the frontend is pushing twice since #936 .

@Stevendeo Stevendeo linked a pull request Dec 4, 2023 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants