From 2a7b6d016ea6d5446545d03bef88bffd44c00c13 Mon Sep 17 00:00:00 2001 From: Langston Barrett Date: Wed, 30 Mar 2022 15:00:03 -0400 Subject: [PATCH] Don't apply RemoveRelationCopies transformer to EQRELs --- src/ast/transform/RemoveRelationCopies.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ast/transform/RemoveRelationCopies.cpp b/src/ast/transform/RemoveRelationCopies.cpp index 6b44bfa105d..715a9874b2e 100644 --- a/src/ast/transform/RemoveRelationCopies.cpp +++ b/src/ast/transform/RemoveRelationCopies.cpp @@ -51,6 +51,11 @@ bool RemoveRelationCopiesTransformer::removeRelationCopies(TranslationUnit& tran if (!rel->getFunctionalDependencies().empty()) { continue; } + // skip equivalence relations (which automatically create reflexive, + // symmetric, and transitive tuples) + if (rel->getRepresentation() == RelationRepresentation::EQREL) { + continue; + } const auto& clauses = program.getClauses(*rel); if (!ioType.isIO(rel) && clauses.size() == 1u) { // .. of shape r(x,y,..) :- s(x,y,..)