Fixes for skolem definition management (#8301)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 14 Mar 2022 21:02:40 +0000 (16:02 -0500)
committerGitHub <noreply@github.com>
Mon, 14 Mar 2022 21:02:40 +0000 (16:02 -0500)
commitc274b572b3f634e4f098dff564942d6dc452a22f
treef8ad42154e07485bb9d385d59a1d6e6079c2128c
parent2f1483e2e3e61c50e8bf6d7b7d86ea49f69371c6
Fixes for skolem definition management (#8301)

Fixes two issues with how we manage skolem definitions (used for tracking which assertions are relevant for the decision engine).

First, the theory proxy must be notified of skolem definitions before we have assertions involving them, or else hasSkolems is wrong. This was previously done incorrectly for lemmas. This PR changes the order in PropEngine::assertLemmasInternal.

Second, skolem definitions are local to a solver instance and should not be managed by attributes, moreover they are user-context dependent. This changes it to a local user-context dependent map in Skolem.

Fixes #8296.
src/decision/justification_strategy.cpp
src/prop/prop_engine.cpp
src/prop/skolem_def_manager.cpp
src/prop/skolem_def_manager.h
test/regress/CMakeLists.txt
test/regress/regress0/decision/issue8296-sk-def-before-assert.smt2 [new file with mode: 0644]