3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-26 15:53:41 +00:00

update version to 4.15.2

This commit is contained in:
Nikolaj Bjorner 2025-06-10 15:55:54 -07:00
parent b665c99d06
commit e1661759db
6 changed files with 27 additions and 11 deletions

View file

@ -2,7 +2,7 @@
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.16)
set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cxx_compiler_flags_overrides.cmake") set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cxx_compiler_flags_overrides.cmake")
project(Z3 VERSION 4.15.1.0 LANGUAGES CXX) project(Z3 VERSION 4.15.2.0 LANGUAGES CXX)
################################################################################ ################################################################################
# Project version # Project version

View file

@ -1,6 +1,6 @@
module( module(
name = "z3", name = "z3",
version = "4.14.0", version = "4.15.2",
bazel_compatibility = [">=7.0.0"], bazel_compatibility = [">=7.0.0"],
) )

View file

@ -8,7 +8,7 @@
from mk_util import * from mk_util import *
def init_version(): def init_version():
set_version(4, 15, 1, 0) # express a default build version or pick up ci build version set_version(4, 15, 2, 0) # express a default build version or pick up ci build version
# Z3 Project definition # Z3 Project definition
def init_project_def(): def init_project_def():

View file

@ -1,7 +1,7 @@
variables: variables:
Major: '4' Major: '4'
Minor: '15' Minor: '15'
Patch: '1' Patch: '2'
ReleaseVersion: $(Major).$(Minor).$(Patch) ReleaseVersion: $(Major).$(Minor).$(Patch)
AssemblyVersion: $(Major).$(Minor).$(Patch).$(Build.BuildId) AssemblyVersion: $(Major).$(Minor).$(Patch).$(Build.BuildId)
NightlyVersion: $(AssemblyVersion)-$(Build.buildId) NightlyVersion: $(AssemblyVersion)-$(Build.buildId)

View file

@ -6,7 +6,7 @@
trigger: none trigger: none
variables: variables:
ReleaseVersion: '4.15.1' ReleaseVersion: '4.15.2'
stages: stages:

View file

@ -15,6 +15,7 @@ Author:
--*/ --*/
#include "ast/rewriter/expr_safe_replace.h"
#include "tactic/tactic.h" #include "tactic/tactic.h"
#include "tactic/portfolio/euf_completion_tactic.h" #include "tactic/portfolio/euf_completion_tactic.h"
#include "solver/solver.h" #include "solver/solver.h"
@ -25,7 +26,7 @@ class euf_side_condition_solver : public euf::side_condition_solver {
params_ref m_params; params_ref m_params;
scoped_ptr<solver> m_solver; scoped_ptr<solver> m_solver;
expr_ref_vector m_deps; expr_ref_vector m_deps;
obj_map<expr, expr_dependency*> m_e2d; obj_map<expr, std::pair<proof*, expr_dependency*>> m_e2d;
expr_ref_vector m_fmls; expr_ref_vector m_fmls;
obj_hashtable<expr> m_seen; obj_hashtable<expr> m_seen;
trail_stack m_trail; trail_stack m_trail;
@ -55,7 +56,7 @@ public:
m_solver->pop(n); m_solver->pop(n);
} }
void add_constraint(expr* f, expr_dependency* d) override { void add_constraint(expr* f, proof* pr, expr_dependency* d) override {
if (m_seen.contains(f)) if (m_seen.contains(f))
return; return;
m_seen.insert(f); m_seen.insert(f);
@ -68,7 +69,7 @@ public:
if (d) { if (d) {
expr* e_dep = m.mk_fresh_const("dep", m.mk_bool_sort()); expr* e_dep = m.mk_fresh_const("dep", m.mk_bool_sort());
m_deps.push_back(e_dep); m_deps.push_back(e_dep);
m_e2d.insert(e_dep, d); m_e2d.insert(e_dep, { pr, d });
m_trail.push(insert_obj_map(m_e2d, e_dep)); m_trail.push(insert_obj_map(m_e2d, e_dep));
m_solver->assert_expr(f, e_dep); m_solver->assert_expr(f, e_dep);
} }
@ -76,7 +77,7 @@ public:
m_solver->assert_expr(f); m_solver->assert_expr(f);
} }
bool is_true(expr* f, expr_dependency*& d) override { bool is_true(expr* f, proof_ref& pr, expr_dependency*& d) override {
d = nullptr; d = nullptr;
solver::scoped_push _sp(*m_solver); solver::scoped_push _sp(*m_solver);
m_fmls.reset(); m_fmls.reset();
@ -86,9 +87,24 @@ public:
if (r == l_false) { if (r == l_false) {
expr_ref_vector core(m); expr_ref_vector core(m);
m_solver->get_unsat_core(core); m_solver->get_unsat_core(core);
for (auto c : core) for (auto c : core) {
d = m.mk_join(d, m_e2d[c]); auto [pr, dep] = m_e2d[c];
d = m.mk_join(d, dep);
} }
if (m.proofs_enabled()) {
pr = m_solver->get_proof();
SASSERT(pr);
expr_safe_replace rep(m);
for (auto c : core) {
auto [p, dep] = m_e2d[c];
rep.insert(m.mk_asserted(c), p);
}
expr_ref ppr(pr, m);
rep(ppr);
pr = to_app(ppr.get());
}
}
return r == l_false; return r == l_false;
} }