diff --git a/src/plasp/pddl/expressions/Not.cpp b/src/plasp/pddl/expressions/Not.cpp index fec4f57..72efe5b 100644 --- a/src/plasp/pddl/expressions/Not.cpp +++ b/src/plasp/pddl/expressions/Not.cpp @@ -47,6 +47,14 @@ ExpressionPointer Not::normalize() { BOOST_ASSERT(m_argumentStorage); + // Remove double negations + if (m_argumentStorage->expressionType() == Expression::Type::Not) + { + auto &argument = dynamic_cast(*m_argumentStorage); + + return std::move(argument.m_argumentStorage); + } + auto normalizedArgument = m_argumentStorage->normalize(); // Replace argument if changed by normalization