Skip to content

Commit 7ba33b0

Browse files
committed
fix multiple bugs in ResolveAliases transform.
fix #2435 fix #2486 fix #2552
1 parent 8abf896 commit 7ba33b0

File tree

19 files changed

+301
-151
lines changed

19 files changed

+301
-151
lines changed

src/MainDriver.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,8 @@ Own<ast::transform::PipelineTransformer> astTransformationPipeline(Global& glb)
461461
auto magicPipeline = mk<ast::transform::PipelineTransformer>(
462462
mk<ast::transform::ConditionalTransformer>(
463463
glb.config().has("magic-transform"), mk<ast::transform::ExpandEqrelsTransformer>()),
464-
mk<ast::transform::MagicSetTransformer>(), mk<ast::transform::ResolveAliasesTransformer>(),
464+
mk<ast::transform::MagicSetTransformer>(),
465+
mk<ast::transform::ResolveAliasesTransformer>(),
465466
mk<ast::transform::RemoveRelationCopiesTransformer>(),
466467
mk<ast::transform::RemoveEmptyRelationsTransformer>(),
467468
mk<ast::transform::RemoveRedundantRelationsTransformer>(), clone(equivalencePipeline));
@@ -492,6 +493,10 @@ Own<ast::transform::PipelineTransformer> astTransformationPipeline(Global& glb)
492493
mk<ast::transform::GroundWitnessesTransformer>(),
493494
mk<ast::transform::UniqueAggregationVariablesTransformer>(),
494495
mk<ast::transform::MaterializeSingletonAggregationTransformer>(),
496+
mk<ast::transform::PipelineTransformer>(
497+
// fix #2486
498+
mk<ast::transform::ResolveAliasesTransformer>(),
499+
mk<ast::transform::SimplifyAggregateTargetExpressionTransformer>()),
495500
mk<ast::transform::FixpointTransformer>(
496501
mk<ast::transform::MaterializeAggregationQueriesTransformer>()),
497502
mk<ast::transform::RemoveRedundantSumsTransformer>(),
@@ -500,7 +505,8 @@ Own<ast::transform::PipelineTransformer> astTransformationPipeline(Global& glb)
500505
mk<ast::transform::RemoveBooleanConstraintsTransformer>(),
501506
mk<ast::transform::ResolveAliasesTransformer>(), mk<ast::transform::MinimiseProgramTransformer>(),
502507
mk<ast::transform::InlineUnmarkExcludedTransform>(),
503-
mk<ast::transform::InlineRelationsTransformer>(), mk<ast::transform::GroundedTermsChecker>(),
508+
mk<ast::transform::InlineRelationsTransformer>(),
509+
mk<ast::transform::GroundedTermsChecker>(),
504510
mk<ast::transform::ResolveAliasesTransformer>(),
505511
mk<ast::transform::SimplifyConstantBinaryConstraintsTransformer>(),
506512
mk<ast::transform::RemoveBooleanConstraintsTransformer>(),

src/ast/tests/ast_transformers_test.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ TEST(Transformers, GroundTermPropagation2) {
103103
Own<Clause> res = ResolveAliasesTransformer::resolveAliases(*a);
104104
Own<Clause> cleaned = ResolveAliasesTransformer::removeTrivialEquality(*res);
105105

106-
EXPECT_EQ("p(b,b) :- \n p(b,b),\n b = b,\n b = b,\n b = b.", toString(*res));
107-
EXPECT_EQ("p(b,b) :- \n p(b,b).", toString(*cleaned));
106+
EXPECT_EQ("p(x,x) :- \n p(x,x),\n x = x,\n x = x,\n x = x.", toString(*res));
107+
EXPECT_EQ("p(x,x) :- \n p(x,x).", toString(*cleaned));
108108
}
109109

110110
TEST(Transformers, ResolveGroundedAliases) {
@@ -297,7 +297,7 @@ TEST(Transformers, CheckClausalEquivalence) {
297297
"C(r) :- \n A(r,y),\n A(r,x),\n x != 3,\n x < y,\n !B(y),\n y > 3,\n B(y),\n "
298298
"B(x).",
299299
toString(*cClauses[1]));
300-
EXPECT_EQ("C(x) :- \n A(x,a),\n a != 3,\n !B(a),\n A(x,b),\n b > 3,\n B(b),\n a < b.",
300+
EXPECT_EQ("C(x) :- \n A(x,a),\n a != 3,\n !B(a),\n A(x,c),\n c > 3,\n B(c),\n a < c.",
301301
toString(*cClauses[2]));
302302

303303
// Check equivalence of these clauses

0 commit comments

Comments
 (0)