diff --git a/src/ast/transform/MinimiseProgram.cpp b/src/ast/transform/MinimiseProgram.cpp index 62dd623648e..c56c88de22a 100644 --- a/src/ast/transform/MinimiseProgram.cpp +++ b/src/ast/transform/MinimiseProgram.cpp @@ -377,6 +377,10 @@ bool MinimiseProgramTransformer::reduceClauseBodies(TranslationUnit& translation bool changed = false; for (auto* clause : program.getClauses()) { + if (isA(clause)) { + break; + } + auto bodyLiterals = clause->getBodyLiterals(); // TODO: This is n^2. Add AST hashing and use a hash-set. std::set redundantPositions; diff --git a/src/ram/utility/Utils.h b/src/ram/utility/Utils.h index cf6c2dfcf27..703171a9800 100644 --- a/src/ram/utility/Utils.h +++ b/src/ram/utility/Utils.h @@ -84,6 +84,9 @@ inline Own toCondition(const VecOwn& conds) { result = mk(std::move(result), clone(cur)); } } + if (result == nullptr) { + result = mk(); + } return result; } diff --git a/tests/semantic/subsumption_multiple_rules/mx.csv b/tests/semantic/subsumption_multiple_rules/mx.csv new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/semantic/subsumption_multiple_rules/nx.csv b/tests/semantic/subsumption_multiple_rules/nx.csv new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/semantic/subsumption_multiple_rules/subsumption_multiple_rules.dl b/tests/semantic/subsumption_multiple_rules/subsumption_multiple_rules.dl index 41b1b0bb874..9bcad025595 100644 --- a/tests/semantic/subsumption_multiple_rules/subsumption_multiple_rules.dl +++ b/tests/semantic/subsumption_multiple_rules/subsumption_multiple_rules.dl @@ -103,3 +103,13 @@ ES(_, x1) <= ES(_, x2) :- x1 <= x2. AF(b) :- G(g, b), !R(b, d), ES(d, a), ES(d, e). .output AF +.decl my(x:number) +.decl mx(x:number) +mx(n) <= mx(n) :- my(n). +.output mx + +.decl nx(x:number) +nx(n) <= nx(n) :- nx(n). +.output nx + + diff --git a/tests/semantic/subsumption_multiple_rules/subsumption_multiple_rules.err b/tests/semantic/subsumption_multiple_rules/subsumption_multiple_rules.err index 3667c0d222c..843d806dbdb 100644 --- a/tests/semantic/subsumption_multiple_rules/subsumption_multiple_rules.err +++ b/tests/semantic/subsumption_multiple_rules/subsumption_multiple_rules.err @@ -7,3 +7,6 @@ AF(b) :- G(g, b), !R(b, d), ES(d, a), ES(d, e). Warning: Variable e only occurs once in file subsumption_multiple_rules.dl at line 103 AF(b) :- G(g, b), !R(b, d), ES(d, a), ES(d, e). --------------------------------------------^--- +Warning: No rules/facts defined for relation my in file subsumption_multiple_rules.dl at line 106 +.decl my(x:number) +------^------------