3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-02-23 16:57:51 +00:00

Merge pull request #8712 from Z3Prover/copilot/fix-soundness-issue-conversion

Fix FPA soundness issue in incremental (push/pop) solving
This commit is contained in:
Nikolaj Bjorner 2026-02-21 16:26:23 -08:00 committed by GitHub
commit 0d553f2ce9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -414,6 +414,12 @@ namespace smt {
void theory_fpa::pop_scope_eh(unsigned num_scopes) { void theory_fpa::pop_scope_eh(unsigned num_scopes) {
m_trail_stack.pop_scope(num_scopes); m_trail_stack.pop_scope(num_scopes);
TRACE(t_fpa, tout << "pop " << num_scopes << "; now " << m_trail_stack.get_num_scopes() << "\n";); TRACE(t_fpa, tout << "pop " << num_scopes << "; now " << m_trail_stack.get_num_scopes() << "\n";);
// Reset the fpa2bv rewriter cache so that expressions re-converted after
// a pop regenerate their side conditions (extra_assertions). Without this,
// the rewriter returns cached results without invoking mk_uf/mk_const and
// the axioms connecting FP UFs to their BV counterparts are never re-emitted,
// causing a soundness issue in incremental mode.
m_rw.reset();
theory::pop_scope_eh(num_scopes); theory::pop_scope_eh(num_scopes);
} }