diff --git a/src/main/java/org/rairlab/planner/Action.java b/src/main/java/org/rairlab/planner/Action.java index 7d4d0f0..057de89 100644 --- a/src/main/java/org/rairlab/planner/Action.java +++ b/src/main/java/org/rairlab/planner/Action.java @@ -49,7 +49,14 @@ public class Action { this.freeVariables = freeVariables; - this.precondition = new And(preconditions.stream().collect(Collectors.toList())); + if (preconditions.size() > 1) { + this.precondition = new And(preconditions.stream().collect(Collectors.toList())); + } else if (preconditions.size() == 1) { + this.precondition = preconditions.iterator().next(); + } else { + this.precondition = State.TRUE; + } + this.weight = preconditions.stream().mapToInt(Formula::getWeight).sum() + additions.stream().mapToInt(Formula::getWeight).sum() + diff --git a/src/main/java/org/rairlab/planner/State.java b/src/main/java/org/rairlab/planner/State.java index 38de048..cbc9697 100644 --- a/src/main/java/org/rairlab/planner/State.java +++ b/src/main/java/org/rairlab/planner/State.java @@ -12,14 +12,17 @@ import java.util.Set; public class State { final Set formulae; + static Formula TRUE; static Formula FALSE; static{ try { + TRUE = Reader.readFormulaFromString("(or P (not P))"); FALSE = Reader.readFormulaFromString("(and P (not P))"); } catch (Reader.ParsingException e) { e.printStackTrace(); + TRUE = null; FALSE = null; }