private List <Action> RemoveConditions(List <Action> lActions) { List <Action> lNoConditions = new List <Action>(); foreach (Action a in lActions) { HashSet <Predicate> lMandatory = a.GetMandatoryEffects(); List <CompoundFormula> lConditions = a.GetConditions(); if (lConditions.Count == 0) { lNoConditions.Add(a); } else { int iCondition = 0; foreach (CompoundFormula cfCondition in lConditions) { Action aNew = new Action(a.Name + "." + iCondition); CompoundFormula cfPreconditions = new CompoundFormula("and"); cfPreconditions.AddOperand(a.Preconditions); cfPreconditions.AddOperand(cfCondition.Operands[0]); if (!cfPreconditions.IsFalse(null)) { aNew.Preconditions = cfPreconditions; CompoundFormula cfEffects = new CompoundFormula("and"); cfEffects.AddOperand(cfCondition.Operands[1]); foreach (Predicate p in lMandatory) { cfEffects.AddOperand(p); } aNew.Effects = cfEffects; lNoConditions.Add(aNew); iCondition++; } } } } return(lNoConditions); }