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,..)