Skip to content

Commit e166175

Browse files
update version to 4.15.2
1 parent b665c99 commit e166175

File tree

6 files changed

+27
-11
lines changed

6 files changed

+27
-11
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
cmake_minimum_required(VERSION 3.16)
33

44
set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cxx_compiler_flags_overrides.cmake")
5-
project(Z3 VERSION 4.15.1.0 LANGUAGES CXX)
5+
project(Z3 VERSION 4.15.2.0 LANGUAGES CXX)
66

77
################################################################################
88
# Project version

MODULE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module(
22
name = "z3",
3-
version = "4.14.0",
3+
version = "4.15.2",
44
bazel_compatibility = [">=7.0.0"],
55
)
66

scripts/mk_project.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from mk_util import *
99

1010
def init_version():
11-
set_version(4, 15, 1, 0) # express a default build version or pick up ci build version
11+
set_version(4, 15, 2, 0) # express a default build version or pick up ci build version
1212

1313
# Z3 Project definition
1414
def init_project_def():

scripts/nightly.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
variables:
22
Major: '4'
33
Minor: '15'
4-
Patch: '1'
4+
Patch: '2'
55
ReleaseVersion: $(Major).$(Minor).$(Patch)
66
AssemblyVersion: $(Major).$(Minor).$(Patch).$(Build.BuildId)
77
NightlyVersion: $(AssemblyVersion)-$(Build.buildId)

scripts/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
trigger: none
77

88
variables:
9-
ReleaseVersion: '4.15.1'
9+
ReleaseVersion: '4.15.2'
1010

1111
stages:
1212

src/tactic/portfolio/euf_completion_tactic.cpp

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Module Name:
1515
1616
--*/
1717

18+
#include "ast/rewriter/expr_safe_replace.h"
1819
#include "tactic/tactic.h"
1920
#include "tactic/portfolio/euf_completion_tactic.h"
2021
#include "solver/solver.h"
@@ -25,7 +26,7 @@ class euf_side_condition_solver : public euf::side_condition_solver {
2526
params_ref m_params;
2627
scoped_ptr<solver> m_solver;
2728
expr_ref_vector m_deps;
28-
obj_map<expr, expr_dependency*> m_e2d;
29+
obj_map<expr, std::pair<proof*, expr_dependency*>> m_e2d;
2930
expr_ref_vector m_fmls;
3031
obj_hashtable<expr> m_seen;
3132
trail_stack m_trail;
@@ -55,7 +56,7 @@ class euf_side_condition_solver : public euf::side_condition_solver {
5556
m_solver->pop(n);
5657
}
5758

58-
void add_constraint(expr* f, expr_dependency* d) override {
59+
void add_constraint(expr* f, proof* pr, expr_dependency* d) override {
5960
if (m_seen.contains(f))
6061
return;
6162
m_seen.insert(f);
@@ -68,15 +69,15 @@ class euf_side_condition_solver : public euf::side_condition_solver {
6869
if (d) {
6970
expr* e_dep = m.mk_fresh_const("dep", m.mk_bool_sort());
7071
m_deps.push_back(e_dep);
71-
m_e2d.insert(e_dep, d);
72+
m_e2d.insert(e_dep, { pr, d });
7273
m_trail.push(insert_obj_map(m_e2d, e_dep));
7374
m_solver->assert_expr(f, e_dep);
7475
}
7576
else
7677
m_solver->assert_expr(f);
7778
}
7879

79-
bool is_true(expr* f, expr_dependency*& d) override {
80+
bool is_true(expr* f, proof_ref& pr, expr_dependency*& d) override {
8081
d = nullptr;
8182
solver::scoped_push _sp(*m_solver);
8283
m_fmls.reset();
@@ -86,9 +87,24 @@ class euf_side_condition_solver : public euf::side_condition_solver {
8687
if (r == l_false) {
8788
expr_ref_vector core(m);
8889
m_solver->get_unsat_core(core);
89-
for (auto c : core)
90-
d = m.mk_join(d, m_e2d[c]);
90+
for (auto c : core) {
91+
auto [pr, dep] = m_e2d[c];
92+
d = m.mk_join(d, dep);
93+
}
94+
if (m.proofs_enabled()) {
95+
pr = m_solver->get_proof();
96+
SASSERT(pr);
97+
expr_safe_replace rep(m);
98+
for (auto c : core) {
99+
auto [p, dep] = m_e2d[c];
100+
rep.insert(m.mk_asserted(c), p);
101+
}
102+
expr_ref ppr(pr, m);
103+
rep(ppr);
104+
pr = to_app(ppr.get());
105+
}
91106
}
107+
92108
return r == l_false;
93109
}
94110

0 commit comments

Comments
 (0)