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

Tableaux SAT solver ignores triggers from Dolmen #1242

Open
Halbaroth opened this issue Sep 30, 2024 · 1 comment
Open

Tableaux SAT solver ignores triggers from Dolmen #1242

Halbaroth opened this issue Sep 30, 2024 · 1 comment
Labels
bug instantiation this issue is related to the instantiation mechanism

Comments

@Halbaroth
Copy link
Collaborator

Halbaroth commented Sep 30, 2024

While removing the legacy frontend, I ran our non regression test suite with the SAT solver Tableaux. I caught a bug. This test failed:

(set-logic ALL)
(declare-fun P (Int) Bool)
(declare-fun f (Int) Int)

; This quantifier is explicitly annotated with a (f x) trigger.
; It should not cause this problem to be unsat.
(assert
 (forall ((x Int))
  (! (not (P x)) :pattern ((f x)))))

; Note that we don't use (f 0).
(assert (P 0))

(check-sat)

We got unsat even if we should not because the trigger prevents us from instantiating the axiom. It seems that the fix in #1051 have not been tested with Tableaux.

Notice that the bug affects Tableaux-CDCL too.

@Halbaroth Halbaroth added bug instantiation this issue is related to the instantiation mechanism labels Sep 30, 2024
@bclement-ocp
Copy link
Collaborator

bclement-ocp commented Sep 30, 2024

I don't think this is related to Dolmen -- this file is also proved by the legacy frontend. This seems to be due to the Backward instantiation pass which seems to always compute triggers (ignoring matching) and instantiate all lemmas that can prove things from (P e1 .. en) whenever (P e1 .. en) is in the context.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug instantiation this issue is related to the instantiation mechanism
Projects
None yet
Development

No branches or pull requests

2 participants