Fix support for global declarations (#7480)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 25 Oct 2021 18:23:39 +0000 (13:23 -0500)
committerGitHub <noreply@github.com>
Mon, 25 Oct 2021 18:23:39 +0000 (18:23 +0000)
commit50da62ab1ebd71d619e4ada901c35009396f772e
tree6a1df78ab66d53c40621110fe25607b2e19a9b5a
parent8badd4ee60ed4b221ce6db55ed641544f845149c
Fix support for global declarations (#7480)

Previously, we asserted global declarations as substitutions/formulas just before check-sat. This is not ideal since the current set of assertions can be preprocessed without having knowledge of definitions of defined functions. Moreover, this could lead to model unsoundness if it were the case that a defined symbol was solved during preprocessing.

Fixes #7479. In that example, y was solved for true and then we failed to overwrite y with its definition (> x 0), hence dropping the definition. Now, y is defined as (> x 0) before we preprocess.
src/smt/assertions.cpp
src/smt/assertions.h
src/smt/process_assertions.cpp
test/regress/CMakeLists.txt
test/regress/regress0/push-pop/issue7479-global-decls.smt2 [new file with mode: 0644]