Skip to content

Commit bcd6111

Browse files
author
Lukasz A.J. Wrona
committed
Static is_axiom_sat
1 parent 01b8301 commit bcd6111

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

src/solvers/refinement/string_refinement.cpp

+18-7
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@ static bool is_valid_string_constraint(
4646
messaget::mstreamt& stream,
4747
const namespacet& ns,
4848
const string_constraintt &expr);
49+
static bool is_axiom_sat(
50+
const namespacet& ns,
51+
ui_message_handlert::uit ui,
52+
const exprt &axiom,
53+
const symbol_exprt& var,
54+
exprt &witness);
4955

5056
exprt simplify_sum(const exprt &f);
5157

@@ -1224,7 +1230,8 @@ bool string_refinementt::check_axioms()
12241230
<< " " << from_expr(ns, "", with_concretized_arrays) << eom;
12251231
exprt witness;
12261232

1227-
bool is_sat=is_axiom_sat(with_concretized_arrays, univ_var, witness);
1233+
bool is_sat=is_axiom_sat(
1234+
ns, supert::config_.ui, with_concretized_arrays, univ_var, witness);
12281235

12291236
if(is_sat)
12301237
{
@@ -1271,7 +1278,7 @@ bool string_refinementt::check_axioms()
12711278
substitute_array_access(negaxiom);
12721279
exprt witness;
12731280

1274-
bool is_sat=is_axiom_sat(negaxiom, univ_var, witness);
1281+
bool is_sat=is_axiom_sat(ns, supert::config_.ui, negaxiom, univ_var, witness);
12751282

12761283
if(is_sat)
12771284
{
@@ -1810,18 +1817,22 @@ exprt string_refinementt::get(const exprt &expr) const
18101817
/// \param [out] witness: the witness of the satisfying assignment if one
18111818
/// exists. If UNSAT, then behaviour is undefined.
18121819
/// \return: true if axiom is SAT, false if UNSAT
1813-
bool string_refinementt::is_axiom_sat(
1814-
const exprt &axiom, const symbol_exprt& var, exprt &witness)
1820+
static bool is_axiom_sat(
1821+
const namespacet& ns,
1822+
ui_message_handlert::uit ui,
1823+
const exprt &axiom,
1824+
const symbol_exprt& var,
1825+
exprt &witness)
18151826
{
18161827
satcheck_no_simplifiert sat_check;
1817-
supert::infot info;
1828+
bv_refinementt::infot info;
18181829
info.ns=&ns;
18191830
info.prop=&sat_check;
18201831
info.refine_arithmetic=true;
18211832
info.refine_arrays=true;
18221833
info.max_node_refinement=5;
1823-
info.ui=supert::config_.ui;
1824-
supert solver(info);
1834+
info.ui=ui;
1835+
bv_refinementt solver(info);
18251836
solver << axiom;
18261837

18271838
switch(solver())

src/solvers/refinement/string_refinement.h

-7
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,6 @@ class string_refinementt final: public bv_refinementt
109109

110110
void debug_model();
111111
bool check_axioms();
112-
bool is_axiom_sat(
113-
const exprt &axiom, const symbol_exprt& var, exprt &witness);
114112

115113
void set_char_array_equality(const exprt &lhs, const exprt &rhs);
116114
void update_index_set(const exprt &formula);
@@ -122,11 +120,6 @@ class string_refinementt final: public bv_refinementt
122120
std::vector<exprt> instantiate_not_contains(
123121
const string_not_contains_constraintt &axiom);
124122

125-
exprt compute_inverse_function(
126-
const exprt &qvar, const exprt &val, const exprt &f);
127-
128-
std::map<exprt, int> map_representation_of_sum(const exprt &f) const;
129-
130123
void concretize_string(const exprt &expr);
131124
void concretize_results();
132125
void concretize_lengths();

0 commit comments

Comments
 (0)