Fix special casing for PI in model value (#8189)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 28 Feb 2022 22:37:08 +0000 (16:37 -0600)
committerGitHub <noreply@github.com>
Mon, 28 Feb 2022 22:37:08 +0000 (22:37 +0000)
commitfa9d296d9b11814df62675bf8fa93c5f7e5da90e
treea4ad76ec29e1b81e4722a7ffaa1a13d9ce1460e1
parent2a7e0f4c8fe3d30da9be170a946f89f92606d5c1
Fix special casing for PI in model value (#8189)

PI should be considered a model value but not a "base" model value. This avoid spurious debug assertion failures, which are now treated as warnings. This makes a difference when another theory e.g. UF says that PI is currently equal to a constant value c. Since our lemma schemas are model-based, we may require building a spurious model where PI is c, and refine afterwards.

This also fixes a bug in our extended function rewriting which would mistakenly think that PI was reduced, and hence skip a full effort check if PI was the only extended function in the current context. This was previously causing a final model to be one where PI = 0.0.

Fixes #8183.
src/theory/arith/nl/ext_theory_callback.cpp
src/theory/theory_model.cpp
test/regress/CMakeLists.txt
test/regress/regress0/nl/nta/issue8183-tc-pi.smt2 [new file with mode: 0644]