Skip to content

Commit e1b188d

Browse files
Use multiplication in sum_over_map for factor > 1
When the factor is not -1, 0 or 1 using multiplication makes the resulting expression simpler.
1 parent fae7c71 commit e1b188d

File tree

1 file changed

+7
-18
lines changed

1 file changed

+7
-18
lines changed

src/solvers/strings/string_constraint_instantiation.cpp

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -126,24 +126,13 @@ exprt sum_over_map(std::map<exprt, int> &m, const typet &type, bool negated)
126126
break;
127127

128128
default:
129-
if(factor > 1)
130-
{
131-
if(sum.is_nil())
132-
sum = t;
133-
else
134-
sum = plus_exprt(sum, t);
135-
for(int i = 1; i < factor; i++)
136-
sum = plus_exprt(sum, t);
137-
}
138-
else if(factor < -1)
139-
{
140-
if(sum.is_nil())
141-
sum = unary_minus_exprt(t);
142-
else
143-
sum = minus_exprt(sum, t);
144-
for(int i = -1; i > factor; i--)
145-
sum = minus_exprt(sum, t);
146-
}
129+
{
130+
const mult_exprt to_add{t, from_integer(factor, t.type())};
131+
if(sum.is_nil())
132+
sum = to_add;
133+
else
134+
sum = plus_exprt(sum, to_add);
135+
}
147136
}
148137
}
149138
}

0 commit comments

Comments
 (0)