Skip to content

Commit 91c18f6

Browse files
authored
Merge pull request #6296 from tautschnig/canonical_predicate_string
Ensure result of to_predicates is deterministic
2 parents 904a07d + 8065a69 commit 91c18f6

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/analyses/variable-sensitivity/abstract_environment.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
#include <analyses/variable-sensitivity/abstract_environment.h>
1010
#include <analyses/variable-sensitivity/abstract_object_statistics.h>
1111
#include <analyses/variable-sensitivity/variable_sensitivity_object_factory.h>
12+
1213
#include <util/expr_util.h>
1314
#include <util/simplify_expr.h>
1415
#include <util/simplify_expr_class.h>
16+
#include <util/simplify_utils.h>
1517

1618
#include <algorithm>
1719
#include <map>
@@ -427,7 +429,7 @@ exprt abstract_environmentt::to_predicate() const
427429
if(is_top())
428430
return true_exprt();
429431

430-
auto predicates = std::vector<exprt>{};
432+
exprt::operandst predicates;
431433
for(const auto &entry : map.get_view())
432434
{
433435
auto sym = entry.first;
@@ -439,6 +441,8 @@ exprt abstract_environmentt::to_predicate() const
439441

440442
if(predicates.size() == 1)
441443
return predicates.front();
444+
445+
sort_operands(predicates);
442446
return and_exprt(predicates);
443447
}
444448

unit/analyses/variable-sensitivity/abstract_environment/to_predicate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ SCENARIO(
6767
env.assign(x_name, val2, ns);
6868
env.assign(y_name, val3, ns);
6969

70-
THEN_PREDICATE(env, "y == 3 && x == 2");
70+
THEN_PREDICATE(env, "x == 2 && y == 3");
7171
}
7272
}
7373
}

0 commit comments

Comments
 (0)