Skip to content

Commit eb148eb

Browse files
authored
Merge pull request #5787 from tautschnig/forall-literals
Remove {f,F}orall_literals
2 parents 26b655b + 692553f commit eb148eb

21 files changed

+98
-87
lines changed

.clang-format

-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ ForEachMacros: [
3434
'Forall_goto_functions',
3535
'forall_goto_program_instructions',
3636
'Forall_goto_program_instructions',
37-
'forall_literals',
38-
'Forall_literals',
3937
'forall_operands',
4038
'Forall_operands',
4139
'forall_expr',

src/solvers/flattening/boolbv.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,13 @@ boolbvt::convert_bv(const exprt &expr, optionalt<std::size_t> expected_width)
142142
cache_result.first->second = bv;
143143

144144
// check
145-
forall_literals(it, cache_result.first->second)
145+
for(const auto &literal : cache_result.first->second)
146146
{
147-
if(freeze_all && !it->is_constant())
148-
prop.set_frozen(*it);
147+
if(freeze_all && !literal.is_constant())
148+
prop.set_frozen(literal);
149149

150150
INVARIANT_WITH_DIAGNOSTICS(
151-
it->var_no() != literalt::unused_var_no(),
151+
literal.var_no() != literalt::unused_var_no(),
152152
"variable number must be different from the unused variable number",
153153
expr.find_source_location(),
154154
irep_pretty_diagnosticst(expr));

src/solvers/flattening/boolbv_array.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,7 @@ bvt boolbvt::convert_array(const exprt &expr)
3636
{
3737
const bvt &tmp = convert_bv(*it, op_width);
3838

39-
forall_literals(it2, tmp)
40-
bv.push_back(*it2);
39+
bv.insert(bv.end(), tmp.begin(), tmp.end());
4140
}
4241

4342
return bv;

src/solvers/flattening/boolbv_case.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ bvt boolbvt::convert_case(const exprt &expr)
2525
bv.resize(width);
2626

2727
// make it free variables
28-
Forall_literals(it, bv)
29-
*it=prop.new_variable();
28+
for(auto &literal : bv)
29+
literal = prop.new_variable();
3030

3131
DATA_INVARIANT(
3232
operands.size() >= 3, "case should have at least three operands");

src/solvers/flattening/boolbv_complex.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ bvt boolbvt::convert_complex(const complex_exprt &expr)
3131
{
3232
const bvt &tmp = convert_bv(*it, op_width);
3333

34-
forall_literals(it2, tmp)
35-
bv.push_back(*it2);
34+
bv.insert(bv.end(), tmp.begin(), tmp.end());
3635
}
3736

3837
return bv;

src/solvers/flattening/boolbv_cond.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ bvt boolbvt::convert_cond(const cond_exprt &expr)
3434
literalt cond_literal=const_literal(false);
3535

3636
// make it free variables
37-
Forall_literals(it, bv)
38-
*it=prop.new_variable();
37+
for(auto &literal : bv)
38+
literal = prop.new_variable();
3939

4040
forall_operands(it, expr)
4141
{

src/solvers/flattening/boolbv_map.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ void boolbv_mapt::get_literals(
9393
map_entry.literal_map.size() == width,
9494
"number of literals in the literal map shall equal the bitvector width");
9595

96-
Forall_literals(it, literals)
96+
for(auto it = literals.begin(); it != literals.end(); ++it)
9797
{
9898
literalt &l=*it;
9999
const std::size_t bit=it-literals.begin();
@@ -127,7 +127,7 @@ void boolbv_mapt::set_literals(
127127
{
128128
map_entryt &map_entry=get_map_entry(identifier, type);
129129

130-
forall_literals(it, literals)
130+
for(auto it = literals.begin(); it != literals.end(); ++it)
131131
{
132132
const literalt &literal=*it;
133133

src/solvers/flattening/boolbv_typecast.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ bool boolbvt::type_conversion(
6464
{
6565
if(src_type==dest_type.subtype())
6666
{
67-
forall_literals(it, src)
68-
dest.push_back(*it);
67+
dest.insert(dest.end(), src.begin(), src.end());
6968

7069
// pad with zeros
7170
for(std::size_t i=src.size(); i<dest_width; i++)
@@ -208,8 +207,8 @@ bool boolbvt::type_conversion(
208207
INVARIANT(
209208
src_width == 1, "bitvector of type boolean shall have width one");
210209

211-
Forall_literals(it, dest)
212-
*it=prop.land(*it, src[0]);
210+
for(auto &literal : dest)
211+
literal = prop.land(literal, src[0]);
213212

214213
return false;
215214
}

src/solvers/flattening/boolbv_vector.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ bvt boolbvt::convert_vector(const vector_exprt &expr)
2929
{
3030
const bvt &tmp = convert_bv(*it, op_width);
3131

32-
forall_literals(it2, tmp)
33-
bv.push_back(*it2);
32+
bv.insert(bv.end(), tmp.begin(), tmp.end());
3433
}
3534
}
3635

src/solvers/flattening/bv_pointers.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,8 @@ bvt bv_pointerst::convert_pointer_type(const exprt &expr)
243243
bvt bv;
244244
bv.resize(bits);
245245

246-
Forall_literals(it, bv)
247-
*it=prop.new_variable();
246+
for(auto &literal : bv)
247+
literal = prop.new_variable();
248248

249249
return bv;
250250
}

src/solvers/flattening/bv_utils.cpp

+11-8
Original file line numberDiff line numberDiff line change
@@ -560,10 +560,10 @@ void bv_utilst::incrementer(
560560
{
561561
carry_out=carry_in;
562562

563-
Forall_literals(it, bv)
563+
for(auto &literal : bv)
564564
{
565-
literalt new_carry=prop.land(carry_out, *it);
566-
*it=prop.lxor(*it, carry_out);
565+
literalt new_carry = prop.land(carry_out, literal);
566+
literal = prop.lxor(literal, carry_out);
567567
carry_out=new_carry;
568568
}
569569
}
@@ -579,8 +579,8 @@ bvt bv_utilst::incrementer(const bvt &bv, literalt carry_in)
579579
bvt bv_utilst::inverted(const bvt &bv)
580580
{
581581
bvt result=bv;
582-
Forall_literals(it, result)
583-
*it=!*it;
582+
for(auto &literal : result)
583+
literal = !literal;
584584
return result;
585585
}
586586

@@ -1167,7 +1167,8 @@ literalt bv_utilst::lt_or_le(
11671167
size_t i;
11681168

11691169
compareBelow.resize(bv0.size());
1170-
Forall_literals(it, compareBelow) { (*it) = prop.new_variable(); }
1170+
for(auto &literal : compareBelow)
1171+
literal = prop.new_variable();
11711172
result = prop.new_variable();
11721173

11731174
if(rep==SIGNED)
@@ -1309,9 +1310,11 @@ literalt bv_utilst::rel(
13091310

13101311
bool bv_utilst::is_constant(const bvt &bv)
13111312
{
1312-
forall_literals(it, bv)
1313-
if(!it->is_constant())
1313+
for(const auto &literal : bv)
1314+
{
1315+
if(!literal.is_constant())
13141316
return false;
1317+
}
13151318

13161319
return true;
13171320
}

src/solvers/prop/literal.h

-8
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,4 @@ inline bool is_true (const literalt &l) { return (l.is_true()); }
200200
// bit-vectors
201201
typedef std::vector<literalt> bvt;
202202

203-
#define forall_literals(it, bv) \
204-
for(bvt::const_iterator it=(bv).begin(), it_end=(bv).end(); \
205-
it!=it_end; ++it)
206-
207-
#define Forall_literals(it, bv) \
208-
for(bvt::iterator it=(bv).begin(); \
209-
it!=(bv).end(); ++it)
210-
211203
#endif // CPROVER_SOLVERS_PROP_LITERAL_H

src/solvers/prop/prop_minimize.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ literalt prop_minimizet::constraint()
8585
{
8686
exprt::operandst disjuncts;
8787
disjuncts.reserve(or_clause.size());
88-
forall_literals(it, or_clause)
89-
disjuncts.push_back(literal_exprt(*it));
88+
for(const auto &literal : or_clause)
89+
disjuncts.push_back(literal_exprt(literal));
9090

9191
return prop_conv.convert(disjunction(disjuncts));
9292
}

src/solvers/refinement/refine_arrays.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,9 @@ void bv_refinementt::freeze_lazy_constraints()
114114
for(const auto &symbol : find_symbols(constraint.lazy))
115115
{
116116
const bvt bv=convert_bv(symbol);
117-
forall_literals(b_it, bv)
118-
if(!b_it->is_constant())
119-
prop.set_frozen(*b_it);
117+
for(const auto &literal : bv)
118+
if(!literal.is_constant())
119+
prop.set_frozen(literal);
120120
}
121121
}
122122
}

src/solvers/sat/cnf.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,11 @@ class cnft:public propt
5959

6060
static bool is_all(const bvt &bv, literalt l)
6161
{
62-
forall_literals(it, bv)
63-
if(*it!=l)
62+
for(const auto &literal : bv)
63+
{
64+
if(literal != l)
6465
return false;
66+
}
6567
return true;
6668
}
6769
};

src/solvers/sat/external_sat.cpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,11 @@ void external_satt::write_cnf_file(std::string cnf_file)
5252
dimacs_cnft::write_dimacs_clause(c, out, false);
5353

5454
// output the assumption clauses
55-
forall_literals(it, assumptions)
56-
if(!it->is_constant())
57-
out << it->dimacs() << " 0\n";
55+
for(const auto &literal : assumptions)
56+
{
57+
if(!literal.is_constant())
58+
out << literal.dimacs() << " 0\n";
59+
}
5860

5961
out.close();
6062
}

src/solvers/sat/satcheck_glucose.cpp

+21-11
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,11 @@ void convert(const bvt &bv, Glucose::vec<Glucose::Lit> &dest)
2828
{
2929
dest.capacity(bv.size());
3030

31-
forall_literals(it, bv)
32-
if(!it->is_false())
33-
dest.push(Glucose::mkLit(it->var_no(), it->sign()));
31+
for(const auto &literal : bv)
32+
{
33+
if(!literal.is_false())
34+
dest.push(Glucose::mkLit(literal.var_no(), literal.sign()));
35+
}
3436
}
3537

3638
template<typename T>
@@ -103,13 +105,16 @@ void satcheck_glucose_baset<T>::lcnf(const bvt &bv)
103105
{
104106
add_variables();
105107

106-
forall_literals(it, bv)
108+
for(const auto &literal : bv)
107109
{
108-
if(it->is_true())
110+
if(literal.is_true())
109111
return;
110-
else if(!it->is_false())
112+
else if(!literal.is_false())
113+
{
111114
INVARIANT(
112-
it->var_no() < (unsigned)solver->nVars(), "variable not added yet");
115+
literal.var_no() < (unsigned)solver->nVars(),
116+
"variable not added yet");
117+
}
113118
}
114119

115120
Glucose::vec<Glucose::Lit> c;
@@ -171,9 +176,11 @@ propt::resultt satcheck_glucose_baset<T>::do_prop_solve()
171176
// if assumptions contains false, we need this to be UNSAT
172177
bool has_false = false;
173178

174-
forall_literals(it, assumptions)
175-
if(it->is_false())
179+
for(const auto &literal : assumptions)
180+
{
181+
if(literal.is_false())
176182
has_false = true;
183+
}
177184

178185
if(has_false)
179186
{
@@ -271,8 +278,11 @@ void satcheck_glucose_baset<T>::set_assumptions(const bvt &bv)
271278
{
272279
assumptions=bv;
273280

274-
forall_literals(it, assumptions)
275-
INVARIANT(!it->is_constant(), "assumption literals must not be constant");
281+
for(const auto &literal : assumptions)
282+
{
283+
INVARIANT(
284+
!literal.is_constant(), "assumption literals must not be constant");
285+
}
276286
}
277287

278288
satcheck_glucose_no_simplifiert::satcheck_glucose_no_simplifiert(

src/solvers/sat/satcheck_ipasir.cpp

+16-11
Original file line numberDiff line numberDiff line change
@@ -71,21 +71,24 @@ const std::string satcheck_ipasirt::solver_text()
7171

7272
void satcheck_ipasirt::lcnf(const bvt &bv)
7373
{
74-
forall_literals(it, bv)
74+
for(const auto &literal : bv)
7575
{
76-
if(it->is_true())
76+
if(literal.is_true())
7777
return;
78-
else if(!it->is_false())
79-
INVARIANT(it->var_no()<(unsigned)no_variables(),
80-
"reject out of bound variables");
78+
else if(!literal.is_false())
79+
{
80+
INVARIANT(
81+
literal.var_no() < (unsigned)no_variables(),
82+
"reject out of bound variables");
83+
}
8184
}
8285

83-
forall_literals(it, bv)
86+
for(const auto &literal : bv)
8487
{
85-
if(!it->is_false())
88+
if(!literal.is_false())
8689
{
8790
// add literal with correct sign
88-
ipasir_add(solver, it->dimacs());
91+
ipasir_add(solver, literal.dimacs());
8992
}
9093
}
9194
ipasir_add(solver, 0); // terminate clause
@@ -129,9 +132,11 @@ propt::resultt satcheck_ipasirt::do_prop_solve()
129132
}
130133
else
131134
{
132-
forall_literals(it, assumptions)
133-
if(!it->is_false())
134-
ipasir_assume(solver, it->dimacs());
135+
for(const auto &literal : assumptions)
136+
{
137+
if(!literal.is_false())
138+
ipasir_assume(solver, literal.dimacs());
139+
}
135140

136141
// solve the formula, and handle the return code (10=SAT, 20=UNSAT)
137142
int solver_state = ipasir_solve(solver);

src/solvers/sat/satcheck_lingeling.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ void satcheck_lingelingt::lcnf(const bvt &bv)
5555
if(process_clause(bv, new_bv))
5656
return;
5757

58-
forall_literals(it, new_bv)
59-
lgladd(solver, it->dimacs());
58+
for(const auto &literal : new_bv)
59+
lgladd(solver, literal.dimacs());
6060

6161
lgladd(solver, 0);
6262

@@ -77,8 +77,8 @@ propt::resultt satcheck_lingelingt::do_prop_solve()
7777

7878
std::string msg;
7979

80-
forall_literals(it, assumptions)
81-
lglassume(solver, it->dimacs());
80+
for(const auto &literal : assumptions)
81+
lglassume(solver, literal.dimacs());
8282

8383
const int res=lglsat(solver);
8484
CHECK_RETURN(res == 10 || res == 20);

0 commit comments

Comments
 (0)