Skip to content

Conversation

elteammate
Copy link
Collaborator

I discovered a very sneaky (not really...) bug where incrementally added clauses can have the first two literals eliminated in such a way, that when the solver state is restored through reconstruction stack, they are assigned to false at level 0, making watch invariants invalid. Apparently, none of the incremental tests caught it.

The easiest solution I came up with is to always restore the solver first, and add clauses after. Perhaps not the cleanest solution, but we had something similar with having to memorize newly added clauses anyway. Why not go all in on the idea of adding clauses when needed?

I am sure there is another approach which adds clauses eagerly, but laziness is the simplest solution I came up with.

@elteammate elteammate requested a review from Lipen September 4, 2023 20:43
@elteammate
Copy link
Collaborator Author

Slept on the problem. No.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant